Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #82, ОКТЯБРЬ 2005 г.

Поставь вардрайверов на колени

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 (комбинация клавиш gt;):

# 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

Назад на стр. 082-106-2  Содержание  Вперед на стр. 082-106-4