Усложняем проведение сетевых атак типа ARP- и IP-spoofing: # vi /etc/ssh/sshd_config Protocol 2 ClientAliveInterval 15 ClientAliveCountMax 3 После внесения изменений даем указание демону перечитать свой конфиг: # kill -HUP `head -1 /var/run/sshd.pid` В конец файла login.conf(5) заносим сведения о новом классе authpf: # vi /etc/login.conf authpf:\ :shell=/usr/sbin/authpf:\ :tc=default: Обновляем хэшированную базу данных /etc/login.conf.db: # cap_mkdb /etc/login.conf Так как будем использовать дефолтные значения директив anchor и table, оставляем /etc/authpf/authpf.conf пустым: # echo -n > /etc/authpf/authpf.conf Подготавливаем приветственное сообщение, аналог /etc/motd: # echo 'Please play nice.' > /etc/authpf/authpf.message Создаем нового пользователя, который принадлежит классу authpf, входит в группу authpf и в качестве оболочки получает /usr/sbin/authpf: # useradd -m -c 'authpf nat user' -g authpf -L authpf -s /usr/sbin/authpf andrey # passwd andrey Создаем набор правил файервола для пользователя andrey: # mkdir -p /etc/authpf/users/andrey # vi /etc/authpf/users/andrey/authpf.rules ext_if = "fxp0" nat on $ext_if inet from $user_ip to any -> ($ext_if) Рассмотрим еще один пример. Допустим, нам "извне"нужно получить доступ к серверу терминалов, расположенному за шлюзом. Создаем нового пользователя rdp и определяем для него специальный набор правил файервола: # useradd -m -c 'authpf rdp user' -g authpf -L authpf -s /usr/sbin/authpf rdp # passwd rdp # mkdir -p /etc/authpf/users/rdp # vi /etc/authpf/users/rdp/authpf.rules ext_if = "fxp0" rdp_server = "192.168.1.3" rdr pass on $ext_if inet proto tcp from $user_ip to port 3389 \ -> $rdp_server port 3389 Вносим необходимые изменения в /etc/pf.conf: # vi /etc/pf.conf nat-anchor "authpf/*" rdr-anchor "authpf/*" #binat-anchor "authpf/*" anchor "authpf/*" Перезагружаем набор рулесетов файервола: # pfctl -f /etc/pf.conf Чтобы получить доступ в интернет с любого клиентского компьютера из подсети 192.168.1.0/24, пользователь andrey сначала должен аутентифицироваться на шлюзе: c:\putty> plink.exe -pw secret andrey@192.168.1.1 Hello andrey. You are authenticated from host "192.168.1.2" Please play nice. Для получения доступа "извне" к серверу терминалов вводим следующую команду: c:\putty> plink.exe -pw secret rdp@85.140.23.36 Hello rdp. You are authenticated from host "81.211.12.32" Please play nice. Теперь порт 3389/tcp для IP-адреса 81.211.12.32 открыт, можно запускать TS Client: c:\putty> mstsc.exe /v:85.140.23.36:3389 |