Поставь вардрайверов на колени Andrey Matveev Хакер, номер #082, стр. 082-106-2 [openssh: первый блокпост] Несмотря на то, что бесплатно распространяемый пакет OpenSSH на протяжении последних лет успешно справляется с задачей предоставления защищенного доступа к удаленным компьютерам, в настройках по умолчанию он не способен обеспечить необходимый уровень безопасности. Чтобы усложнить хайджекеру проведение сетевой атаки с целью перехвата и подмены ssh-сессии, требуется переопределить некоторые дефолтные значения переменных sshd(8). За счет использования этих настроек мы будем уверены, что как только оболочка получит соответствующий сигнал, ssh-сессия аутентифицированного пользователя завершится должным образом, и не произойдет сохранение состояния соединений в таблице записей файервола. # vi /etc/ssh/sshd_config /* Работа по протоколу SSH2 обязательна */ Protocol 2 /* Мы не будем использовать IPv6 */ AddressFamily inet /* Ожидаем подключения по беспроводному сетевому интерфейсу */ ListenAddress 192.168.2.1 /* Запрещаем регистрацию суперпользователя */ PermitRootLogin no /* За счет использования SSH2 и этих двух опций усложняем проведение атак типа ARP- и IP-spoofing */ ClientAliveInterval 15 ClientAliveCountMax 3 /* Включение UseDNS создает больше проблем, чем решает */ UseDNS no /* Определяем списки контроля доступом */ AllowGroups wheel wsrc users authpf После внесения изменений даем указание демону перечитать конфиг: # kill -HUP `sed q /var/run/sshd.pid` [pf: швартовка в океане сыщиков хотспотов] Мы давно уже привыкли к тому, что файервол работает со статическим набором правил. И действительно, для большинства задач этого вполне достаточно. Но когда в сети появляются кочующие пользователи и/или беспроводные клиенты, такая схема работы рушится, как карточный домик. Одна из замечательных возможностей pf(4) заключается в том, что можно подключать рулесеты к основному конфигу pf.conf(5) "на лету". Отвечают за эту фичу так называемые анчоры (якоря), работу которых проиллюстрируем в боевых условиях: # vi /etc/pf.conf /* Объявляем макросы */ enc_if = "enc0" int_if = "ral0" /* Подключаем правила для трансляции сетевых адресов */ nat-anchor "authpf/*" /* Подключаем правила для корректной работы ftp- и p2p-клиентов */ rdr-anchor "authpf/*" /* Разрешаем и регистрируем доступ к sshd (22/tcp), isakmpd (500/udp) */ pass in log quick on $int_if inet proto tcp from $int_if:network \ to $int_if port ssh keep state pass in log quick on $int_if inet proto udp from $int_if:network \ to $int_if port isakmp keep state /* Разрешаем прохождение зашифрованного трафика */ pass in quick on $int_if inet proto esp from $int_if:network to $int_if pass in quick on $enc_if inet proto ipencap from $int_if:network to $int_if pass in quick on $enc_if inet from $int_if:network to $int_if keep state /* Разрешаем прохождение исходящего трафика */ pass out quick on $int_if inet from any to $int_if:network keep state |