В данном обзоре ключей я затронул только основы, но если вы посмотрите файл документации, то увидите еще много вариантов работы с ключом -j, т.е. существуют большие возможности по управлению пакетом, если он соответствует правилам.
Настройка цепочек iptablesне сильно отличается от ipchains. Начать формирование цепочки нужно с очистки всего содержимого. Двигаться необходимо от полного запрета и разрешать только то, что не нанесет вреда серверу. Сервисы, которые могут оказаться опасными, должны быть доступны только тем, кому это необходимо, или тем, кому вы доверяете. Хотя, в нашем деле полагаться ни на кого нельзя. Ваш друг может, не желая того, раскрыть секретную информацию злоумышленнику, или данные могут быть просто украдены, и тогда доверчивость сыграет с вами злую шутку.
Для сохранения изменений в iptables также надо выполнить специализированную команду:
service iptables save
Для разрешения переадресации с помощью iptables нужно выполнить следующую команду:
iptables -A FORWARD -o ppp0 -j MASQUERADE
В данной строке позволяется переадресация на интерфейс ppp0. С помощью параметра -jмы требуем прятать IP-адрес отправителя, т.е. включаем маскарадинг.
Если вы используете трансляцию сетевых адресов (NAT, Network Address Translation), то команда может выглядеть следующим образом:
iptables -t nat -A FORWARD -o ppp0 -j MASQUERADE
Ключ -t natуказывает на необходимость загрузить модуль iptable_nat. Если он не загружен, то это легко сделать вручную с помощью следующей команды:
modprobe iptable_nat
iptable_nat— это модуль ядра, который позволяет сетевому экрану работать с NAT.
4.12.3. Примеры конфигурирования iptables
Я не буду подробно останавливаться на описании различных запретов, потому что мы о них говорили при рассмотрении программы ipchains. Мы очень коротко рассмотрим создание различных правил.
Запрет любых обращений будет выглядеть следующим образом:
iptables -P INPUT DROP
Теперь все входящие пакеты будут удаляться. Как и в случае с программой ipchains, именно с этой команды нужно начинать конфигурирование iptables. Обратите внимание, что в правиле используется ключ -P, позволяющий задать значение по умолчанию для данной цепочки. Если фильтр добавить с помощью ключа -А, то вы можете запретить абсолютно любые подключения.
Некоторые специалисты по безопасности рекомендуют журналировать обращения, добавив в сетевой экран фильтр:
iptables -A INPUT -j LOG
Я бы не рекомендовал это делать. У публичных серверов за день происходит несколько сотен, а то и тысяч сканирований портов. Если обращать внимание на каждую такую попытку, вам придется устанавливать на сервер слишком большие жесткие диски для хранения журналов. А ведь если диск будет заполнен, то система выйдет из строя. Таким образом, хакер может просто направить бесконечные обращения на запрещенный порт и через некоторое время добиться удачно завершенной DoS-атаки.
Следующая команда создает фильтр, по которому запрещается принимать эхо-запросы от любых компьютеров:
iptables -A INPUT -s 0/0 -d localhost \
-p icmp --icmp-type echo-request -j DROP
Как видите, создание фильтра с помощью iptables не сильно отличается от аналогичной процедуры в 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 порту, но контролировать, чтобы пакеты содержали только допустимые параметры. К безопасности Web-сервера мы вернемся в гл. 7 и познакомимся с разными способами защиты. А сейчас рассмотрим простой, но универсальный.
Допустим, что мы хотим разрешить доступ к FTP-серверу, но при этом быть уверенными, что пользователь не сможет обратиться к файлам /etc/passwdи /etc/shadow. Для этого можно запретить пакеты, в которых есть этот текст. Если хакер попытается послать запрос, содержащий ссылки на эти файлы, то такой пакет будет отклонен. Следующие команды запрещают доступ к этим файлам по протоколам FTP и WWW:
Читать дальше
Конец ознакомительного отрывка
Купить книгу