шлюзование с секретом ANDREY MATVEEV Спецвыпуск: Хакер, номер #072, стр. 072-020-1 (ANDRUSHOCK@REAL.XAKEP.RU) ДИНАМИЧЕСКОЕ ИЗМЕНЕНИЕ ПРАВИЛ ФАЙРВОЛА ИСПОЛЬЗОВАНИЕ АУТЕНТИФИКАЦИОННОГО ШЛЮЗА НА БАЗЕ СВЯЗКИ PF + AUTHPF ПОЗВОЛИТ КОНТРОЛИРОВАТЬ ДОСТУП, ОСНОВЫВАЯСЬ НА ПРАВАХ ЗАРЕГИСТРИРОВАВШЕГОСЯ ПО SSH ПОЛЬЗОВАТЕЛЯ. ХИТРОСТЬ ЗАКЛЮЧАЕТСЯ В ТОМ, ЧТО В ЗАВИСИМОСТИ ОТ ВВЕДЕННЫХ ЛОГИНА И ПАРОЛЯ НА ШЛЮЗЕ БУДУТ ВСТУПАТЬ В СИЛУ ПЕРСОНАЛЬНЫЕ ПРАВИЛА ФАЙРВОЛА Такой механизм работы открывает поистине безграничный простор для полета фантазии: организация ограниченного/полного доступа в интернет и закрытые сегменты сети, «умный» форвардинг входящего/исходящего TCP/UDP трафика, а также проведение аудита с журналированием имен пользователей и времени их аутентификации. [увертюра к основному действию.] Защита пользовательского трафика - одна из основных проблем, с которой сталкиваются при организации домашней сети. Каждый абонент, владеющий вопросом подмены IP и MAC-адреса, так и норовит скачать пару-тройку гигабайт информации «за счет» своего соседа. Как правило, использование средств вроде статической arp-таблицы или простое отслеживание смены адреса специальными утилитами (arpwatch) не является эффективным, поэтому для защиты от кражи трафика администраторы стараются применять громоздкие и не всегда надежные конструкции на базе FreeRadius, MySQL/PostgreSQL, mpd/poptop и т.д. Совсем недавно для решения этих (и некоторых других) задач появилось довольно элегантное решение, которое состоит в использовании пакетного фильтра pf и авторизационного шелла authpf. Но связка pf + authpf - не панацея, а дополнительное средство для разграничения доступа в 802.3/802.11 сетях. [непотопляемый OpenSSH.] Прежде чем производить настройку authpf, необходимо переопределить некоторые дефолтные значения переменных демона sshd(8). Так мы усложним потенциальному злоумышленнику успешное проведение сетевой атаки с целью перехвата и подмены нашей ssh-сессии (смотри листинг 1). Для того чтобы внесенные изменения вступили в силу, необходимо дать указание демону перечитать свой конфиг: ЛИСТИНГ # kill -HUP `sed q /var/run/sshd.pid` Теперь, как только authpf получит сигнал SIGINT или SIGTERM, ssh-сессия аутентифицированного пользователя завершится должным образом, персонифицированные «рулесеты» будут корректно выгружены из общего набора правил, и не произойдет сохранение состояния соединений в таблице записей файрвола. [магия authpf.] Authpf представляет собой псевдооболочку, которая назначается пользователю системы в качестве login shell (запись /usr/sbin/authpf в файл /etc/shells добавлять не следует). При авторизации пользователя по ssh к текущим правилам фильтра пакетов с помощью так называемых якорей (anchors) будут присоединены правила, указанные в файле /etc/authpf/authpf.rules, либо в /etc/authpf/users/$USER. В добавляемых правилах допускается использование зарезервированных макросов $user_id и $user_ip, за счет которых будет происходить автоматическая подстановка имени и IP-адреса подключившегося пользователя (значения макросов считываются из переменных окружения ssh автоматически). |