Поставь вардрайверов на колени Andrey Matveev Хакер, номер #082, стр. 082-106-3 /* Подключаем персональные правила пользователей */ anchor "authpf/*" [authpf: исполнение желаний] Не секрет, что протокол шифрования WEP выполнял аутентификацию устройства, а не пользователя. Этот недостаток был принят во внимание при разработке authpf(8) - особой псевдооболочки, которая в динамическом режиме изменяет правила файервола для аутентифицированного пользователя. Другими словами, после ввода пароля входа в систему не происходит, вместо этого в силу вступают персональные рулесеты. Настройка authpf представляет собой нетривиальную задачу, поэтому остановлюсь на ней подробнее. Сначала расширяем список доступных командных интерпретаторов: # echo "/usr/sbin/authpf" >gt;>gt; /etc/shells В конец файла login.conf(5) заносим сведения о новом классе wifi, пользователи которого в качестве стандартного шелла будут получать authpf. # vi /etc/login.conf wifi:\ :shell=/usr/sbin/authpf:\ :tc=default: Обновляем хэшированную базу данных /etc/login.conf.db: # cap_mkdb /etc/login.conf Нет необходимости изменять дефолтные значения анчора (anchor="authpf") и таблицы радикса (table="authpf_users"), поэтому /etc/authpf/authpf.conf оставляем пустым: # touch /etc/authpf/authpf.conf Подготавливаем приветственное сообщение, аналог /etc/motd: # echo "Please play nice." >gt; /etc/authpf/authpf.message Создаем файл с правилами файервола, которые будут загружаться при успешной аутентификации беспроводного клиента и выгружаться при получении сигнала SIGINT (комбинация клавиш # vi /etc/authpf/authpf.rules /* Используемые макросы */ ext_if = "fxp1" int_if = "ral0" /* Выпускаем аутентифицированных пользователей в Сеть */ nat on $ext_if inet from $user_ip to any tag $user_ip ->gt; ($ext_if) /* Обеспечиваем корректную работу по протоколу FTP */ rdr on $int_if inet proto tcp from $user_ip to any port 21 \ ->gt; 127.0.0.1 port 8021 /* Логическое завершение первого правила - разрешаем прохождение пакетов */ pass in quick on $int_if inet from $user_ip to any pass out log quick on $ext_if inet tagged $user_ip keep state Примечание: при использовании зарезервированных макросов $user_id и $user_ip будет происходить автоматическая подстановка имени и IP-адреса подключившегося пользователя. В каталоге /etc/authpf/users/$USER можно подготовить особый набор персональных правил для (не)привилегированных пользователей. Это дает нам бескрайний простор для полета фантазии: организация ограниченного/полного доступа в Интернет, демилитаризованную зону и/или закрытые сегменты сети, форвардинг входящего/исходящего TCP/UDP трафика и т.д.). Например, в качестве бонуса предоставим пользователю shocker возможность получать High ID на любом eD2k-сервере. Для этого необходимо сделать файл /etc/authpf/users/shocker/authpf.rules идентичным /etc/authpf/authpf.rules, а затем добавить в него несколько магических правил перенаправления. # mkdir -p /etc/authpf/users/shocker # cp /etc/authpf/authpf.rules /etc/authpf/users/shocker/authpf.rules # vi /etc/authpf/users/shocker/authpf.rules |