Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #72, НОЯБРЬ 2006 г.

шлюзование с секретом

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 \

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