шлюзование с секретом ANDREY MATVEEV Спецвыпуск: Хакер, номер #072, стр. 072-020-3 ЛИСТИНГ c:\putty> mstsc.exe /v:81.211.11.11:3389 [контроль над аутентифицированными пользователями.] Так как штатные утилиты w и who не способны предоставлять уникальные идентификаторы процессов, список подключенных в данный момент пользователей можно посмотреть с помощью ps: ЛИСТИНГ % ps ax | grep authpf 3884 p1 Is+ 0:00.01 -authpf: andrushock@192.168.1.2 (authpf) Либо с помощью pfctl: ЛИСТИНГ # pfctl -a authpf -sA authpf/andrushock(3884) Здесь authpf - название якоря, andrushock - имя подключившегося пользователя, 3884 - уникальный идентификатор процесса оболочки authpf. Посмотреть персонифицированный набор правил файевола для пользователя andrushock можно так: ЛИСТИНГ # pfctl -a "authpf/andrushock(3884)" -s nat # pfctl -a "authpf/andrushock(3884)" -s rules При желании можно «кикнуть» пользователя из системы: ЛИСТИНГ # kill -TERM 3884 [эндшпиль.] В заключении нельзя не упомянуть о том, что pf поддерживает технологию пассивного определения версии операционной системы. Соответственно, в наших силах производить фильтрацию пакетов на основе отпечатков хостов, инициировавших соединение (к примеру, pass in quick on $int_if from any os «Windows XP» keep state). Это может стать серьезным подспорьем для построения аутентификационного шлюза, способного обеспечить не только индивидуальный доступ к ресурсам Сети, но и дополнительный уровень защиты при использовании сервисов. # vi /etc/ssh/sshd_config # Работаем с использованием протоколов IPv4 и ssh2 AddressFamily inet Protocol 2 # Ожидаем подключения по всем доступным сетевым интерфейсам ListenAddress 0.0.0.0 # Запрещаем регистрацию root'а и применение пустых паролей PermitRootLogin no PermitEmptyPasswords no # За счет использования протокола ssh2 и этих двух опций усложняем проведение атак типа ARP- и IP-spoofing ClientAliveInterval 15 ClientAliveCountMax 3 # Отключаем DNS-резолвинг UseDNS no # Определяем списки контроля доступом AllowGroups wheel users authpf # vi /etc/pf.conf # Подключаем механизм якорей nat-anchor "authpf/*" rdr-anchor "authpf/*" binat-anchor "authpf/*" ... # Разрешаем и регистрируем доступ к sshd (22/tcp), не отслеживая состояние (взведен/сброшен) TCP-флагов (ключевое слово "flags S/SA" отсутствует) pass in log on $ext_if inet proto tcp to $ext_if port ssh keep state ... # Заключительное правило anchor "authpf/*" # vi /etc/authpf/users/andrushock/authpf.rules # Задаем макросы ext_if = "fxp0" int_if = "fxp1" # Производим трансляцию сетевых адресов nat pass on $ext_if inet from $user_ip to any -> ($ext_if) # Обеспечиваем нашему клиенту получение HighID на любом eDonkey-сервере rdr pass on $ext_if inet proto tcp from any to any port 4661 -> $user_ip rdr pass on $ext_if inet proto tcp from any to any port 4662 -> $user_ip rdr pass on $ext_if inet proto udp from any to any port 4665 -> $user_ip rdr pass on $ext_if inet proto udp from any to any port 4672 -> $user_ip # Предоставляем доступ к ftp-proxy rdr pass on $int_if inet proto tcp from $user_ip to any \ |