Ручное конфигурирование iptables является нетривиальной задачей и под силу только специалистам в области системного администрирования. Поэтому для настройки правил, по которым будет действовать брандмауэр, лучше воспользоваться специальным конфигуратором. В Debian GNU/Linux это - программа arno-iptables-firewall. Будучи запущенной, она задает ряд вопросов, на основании которых генерирует правила для функционирования брандмауэра iptables.
Нужно набрать в консоли с правами суперпользователя:
aptitude install arno-iptables-firewall
В начале инсталляции программа спросит, действительно ли пользователь желает с ее помощью настроить Firewall iptables:
Рис. 5. Настройка Firewall
Надо указать внешний интерфейс - "смотрящий" в интернет, т.е. подключенный к модему. Настройки интерфейсов определяются в конфигурационном файле /etc/network/interfaces.
Это интерфейс eth0, который подключен к интернету. Его особенностью является то, что IP-адрес ему назначается провайдером динамически, поэтому выставлена опция dhcp.
auto eth0
iface eth0 inet dhcp
Это интерфейс, который обращен в локальную сеть. В целях безопасности в локальной сети шлюз имеет статический IP-адрес - 192.168.2.1, поэтому выставлена опция static. Маска сети - 255.255.255.0. Широковещательный адрес сети в таком случае будет 192.168.2.255.
auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
broadcast 192.168.2.255
Далее нужно указать конфигуратору Firewall, что внешним является интерфейс eth0:
На вопрос, выдается ли от провайдера IP-адрес динамически (с помощью протокола DHCP), нужно ответить утвердительно:
Рис. 7. Провайдера IP-адреса
Cледует вопрос, какие службы будут предоставлены с этого компьютера внешним пользователям интернета. Здесь не обязательно что-либо указывать.
Рис. 8. Службы предоставляемые с компьютера внешним пользователям интернета
Затем идет вопрос, будет ли пользователь предоставлять какие-либо службы по протоколу UDP. Тоже нет - и тоже нужно оставить строку пустой.
Рис. 9. Службы по протоколу UDP
Нужно ли, чтобы пользователя проверяли, имеется ли связь с компьютером, на котором установлен Firewall. Это вполне допустимо:
На этом настройка для отдельного компьютера, не являющегося шлюзом локальной сети, будет закончена. Если же предполагается использовать компьютер как шлюз, нужно ответить еще на несколько вопросов. Следует указать интерфейс, которым шлюз обращен в локальную сеть - в данном случае это eth1.
Рис. 11. Интерфейс обращенный в локальную сеть
Далее, на основании данных из /etc/network/interfaces, нужно указать спецификацию локальной сети, к которой подключен компьютер: в данном примере это 192.168.2.0/24.
Рис. 12. Спецификация локальной сети
На вопрос позволить ли NAT-трансляцию, т.е. переадресацию трафика из интернета через шлюз в локальную сеть и обратно, следует ответить "да" - это является одной из основных задач в данном случае:
Тогда встает вопрос: а какой сегмент локальной сети может быть допущен через переадресацию к внешним сетям? Следует указать значение 192.168.2.0/24
Рис. 14. Сегмент локальной сети
Наконец, подтверждение запуска iptables без дополнительной проверки с автоматически сформированных конфигуратором правил для Firewall:
Рис. 15. Подтверждение запуска iptables
После этого, если все прошло успешно, выдается сообщение. Оно будет появляться при каждой загрузке компьютера – шлюза и информировать об успешном запуске Firewall.
6.2. Ручное конфигурирование iptables
Запрет любых обращений будет выглядеть следующим образом:
iptables -P INPUT DROP
Теперь все входящие пакеты будут удаляться. Как и в случае с программой ipchains, именно с этой команды нужно начинать конфигурирование iptables. В правиле используется ключ -р, позволяющий задать значение по умолчанию для данной цепочки. Если фильтр добавить с помощью ключа -А, то можно запретить абсолютно любые подключения.
Некоторые специалисты по безопасности рекомендуют журналировать обращения, добавив в сетевой экран фильтр:
iptables -A INPUT -j LOG
Но это делать не рекомендуется. У публичных серверов за день происходит несколько сотен, а то и тысяч сканирований портов. Если обращать внимание на каждую такую попытку, то придется устанавливать на сервер слишком большие жесткие диски для хранения журналов. А ведь если диск будет заполнен, то система выйдет из строя. Таким образом, злоумышленник может просто направить бесконечные обращения на запрещенный порт и через некоторое время добиться удачно завершенной DoS-атаки.
Следующая команда создает фильтр, по которому запрещается принимать эхо-запросы от любых компьютеров:
iptables -A INPUT -s 0/0 -d localhost -p icmp --icmp-type echo-request -j DROP
Создание фильтра с помощью iptables нe сильно отличается от аналогичной процедуры в ipchains.
Следующая команда запрещает доступ к FTP-порту:
iptables -A INPUT -s 0/0 -d localhost -p tcp --dport 21 -j DROP
Чтобы запретить доступ с определенного интерфейса, нужно добавить ключ -i и указать интерфейс eth0:
iptables -A INPUT -i eth0 -s 0/0 -d localhost -p tcp --dport 21 -j DROP
Теперь нужно запретить исходящие пакеты с 21 порта. Для этого используется команда:
iptables -A OUTPUT -i eth0 -s localhost -d 0/0 -p tcp --dport 21 -j DROP
Очень мощной особенностью iptables является возможность проверки содержимого пакетов. Это очень удобно, например, для фильтрации Web-запросов.
Можно разрешить доступ к 80 порту, но контролировать, чтобы пакеты содержали только допустимые параметры.
Если нужно разрешить доступ к FTP-серверу, но при этом быть уверенными, что тот кто хочет взломать вашу защиту не сможет обратиться к файлам /etc/passwd и /etc/shadow. Для этого нужно запретить пакеты, в которых есть этот текст. Если злоумышленник попытается послать запрос, содержащий ссылки на эти файлы, то такой пакет будет отклонен. Следующие команды запрещают доступ к этим файлам по протоколам FTP и WWW:
iptables -A INPUT -m string --string "/etc/passwd" -s 0/0 -d localhost -p tcp --dport 21 -j DROP
iptables -A INPUT -m string --string "/etc/shadow" -s 0/0 -d localhost -p tcp --dport 21 -j DROP
iptables -A INPUT -m string --string "/etc/passwd" -s 0/0 -d localhost -p tcp --dport 80 -j DROP
iptables -A INPUT -m string --string "/etc/shadow" -s 0/0 -d localhost -p tcp --dport 80 -j DROP
Надо еще учесть аспект защиты информации. Если есть сервер, который принимает закодированный трафик с помощью stunnel, расшифровывает и передает его на другую машину. В этом случае во входящих пакетах сетевой экран не может найти такие строки. А вот исходящие пакеты идут уже декодированными и содержат открытый текст команд. В такой конфигурации необходимо контролировать оба потока.
Даже если stunnel передает расшифрованный трафик на другой порт внутри одного компьютера, можно включить контроль любых пакетов на всех интерфейсах, чтобы они проверялись после расшифровки.
Сетевой экран помогает защищать данные, но основным блюстителем порядка является администратор, который должен постоянно следить за безопасностью и выявлять атаки. Вновь разработанная атака сможет преодолеть сетевой экран, и компьютер ничего не заподозрит, потому что определяет только заложенные в программу алгоритмы. Чтобы обработать нестандартную ситуацию, за системой должен наблюдать администратор, который будет реагировать на любые нештатные изменения основных параметров.
В современных сетевых экранах простая замена IP-адреса не позволить извне проникнуть в систему. Сейчас используются намного более сложные методы идентификации. С помощью подмены можно получить большие привилегии только в рамках сети, а не извне, да и то лишь при плохих настройках.
Может сложиться впечатление, что Firewall – это пустое развлечение и трата денег. Это не так. Если он хорошо настроен, постоянно контролируется, а в системе используются защищенные пароли, то сетевой экран может предотвратить большинство проблем.
Хороший экран имеет множество уровней проверки прав доступа, и нельзя использовать только один из них. Если ограничить доступ к Интернету исключительно по IP-адресу, то нужно будет оплачивать большой трафик. Но если при проверке прав доступа используется IP-адрес в сочетании с МАС-адресом и паролем, то такую систему взломать уже намного сложнее. Да, и MAC и IP-адрес легко подделать, но можно для полной надежности подключить к системе защиты и порты на коммутаторе. В этом случае, даже если злоумышленник будет знать пароль, то для его использования нужно сидеть именно за тем компьютером, за которым он закреплен. А это уже не просто.