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

Выжми все из фаервола!

Докучаев Дмитрий aka Forb

Спецвыпуск: Хакер, номер #047, стр. 047-074-2


Следующий шаг направлен на настройку соединения с сервисами. Допустим, на сервере установлен proftpd, postfix и popa3d. На самом деле, сервисов может быть и больше, суть в том, чтобы не забыть о каждом из них. Итак, предположим, что postfix должен принимать данные от узла 192.168.1.1. К proftpd имеют право подключаться только клиенты сегмента 192.168.0.0/24, а снимать почту могут все. Давай оформим такую политику в виде трех несложных правил. Для удобства рекомендую создать дополнительную цепь services и подключить ее к основной INPUT.

Листинг

iptables –N services

iptables –A INPUT –j services

iptables –A services –p tcp –-dport 25 –s 192.168.1.1 –j ACCEPT

iptables –A services –p tcp –-dport 21 –s 192.168.0.0/24 –j ACCEPT

iptables –A services –p tcp –-dport 110 –j ACCEPT

Флаг –s отвечает за IP-адрес отправителя. Он может принимать значение как отдельной станции, так и целого сегмента. Теперь, когда цепь INPUT полностью настроена, можно менять ее политику и тестировать созданные правила. Последний штрих достигается следующей командой:

iptables –P INPUT DROP

Можно сказать, что теперь твой сервер защищен от посторонних глаз. Однако существует много способов обхода фаерволов, один из которых заключается в написании connback-сценария. Последний сам соединяется с хакерской машиной. Чтобы пресечь подобные действия, необходимо фильтровать исходящий трафик. Менять политику цепи не стоит, нужно просто добавить несколько ограничивающих правил с участием модуля owner.

Фаервол покажет, кто хозяин!

Библиотека owner.so является весьма полезной. Она создана для того, чтобы запретить локальному пользователю обращаться к ресурсам сети. Часто хакеры совершают свои злодеяния с веба, и стандартная настройка брандмауэра не спасает. В случае если ты подвяжешь модуль owner, можно сделать так, чтобы процесс httpd не мог открывать порты, а тем более коннектиться на чужие машины. Это достигается всего двумя командами:

iptables –A OUTPUT -m owner --uid-owner 99 -p tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -m owner --uid-owner 99 –j DROP

Модуль позволяет анализировать UID локального пользователя. Если он равен 99 (что соответствует логину nobody), правило запретит обращение к неизвестным портам. Второе правило запрещает любые действия под nobody. Оно должно располагаться ниже первого, потому что iptables анализирует рулесы по принципу от частного к общему.

Существует еще одна проблема, с которой ты можешь столкнуться. В случае если на твоем сервере прописаны другие пользователи и ты не хочешь, чтобы они прокачивали через машину фильмы и музыку, придется добавить несколько правил, которые аналогичны предыдущему. Пришло время урезать сетевые права пользователя по самые уши :). Необходимо помнить, что юзеру надо разрешить пропуск RELATED- и ESTABLISHED-пакетов, в противном случае он не сможет заливать файлы на локальный FTP.

Назад на стр. 047-074-1  Содержание  Вперед на стр. 047-074-3