Если собрать все описанные средства, мы получим брандмауэр, способный защитить сеть. Предположим, что у нас есть Linux-маршрутизатор, подключенный к сетевому периметру с адресом 172.16.12.254 через интерфейс eth0 и к внешней сети с адресом 192.168.6.5 через интерфейс ethl.
Кроме того, предположим, что в сетевом периметре лишь два сервера - сервер sendmail и сервер Apache. Вот пример команд iptables, которые мы могли бы выполнить на этой Linux-системе с целью защиты сетевого периметра:
iptable -F INPUT iptables -F FORWAR D iptables -A INPUT -i ethl -j DRO P iptables -A FORWAR D -i ethl -s 172.16.0.0/16 -j DRO P iptables -A FORWAR D -o ethl -d 172.16.0.0/16 -j DRO P iptables -A FORWAR D -d 172.16.12.1 25 -j ACCEP T iptables -A FORWAR D -d 172.16.12.6 80 -j ACCEP T iptables -A FORWAR D -j DRO P
Первые две команды при помощи ключа -F очищают наборы правил, с которыми мы намереваемся работать. Третья команда предписывает удалять все пакеты из внешней сети, адресованные процессам Linux-маршрутизатора. Мы не хотим, чтобы к процессам маршрутизатора обращался кто-либо из внешнего мира.
Следующие две команды предписывают удалять пакеты, передаваемые во внешний мир с внутреннего адреса. Если пакеты приходят через внешний интерфейс и имеют внутренний адрес, они удаляются. Точно так же, если пакеты, передаваемые через внешний интерфейс, имеют конечный адрес в локальной сети, они удаляются. Эти правила говорят, что если пакеты из внешней сети (проходящие через интерфейс ethl ) некорректно используют адреса внутренней сети (172.16), кто-то пытается организовать атаку, основанную на подделке пакетов, и такие пакеты следует удалять.
Следующие два правила практически идентичны. Они предписывают принимать пакеты, если пункт назначения и номер порта соответствуют конкретному серверу. Например, порт 25 - это порт SMTP, а 172.16.12.1- адрес почтового сервера, тогда как порт 80 - это порт HTTP, а 172.16. 12.6 - адрес веб-сервера. Мы принимаем такие входящие соединения, поскольку они адресованы нужным системам. Последнее правило запрещает пропускать любой другой трафик.
Эти примеры иллюстрируют мощь встроенных механизмов фильтрации Linux и содержат достаточный объем информации, чтобы вы могли начать самостоятельную работу. Разумеется, при создании боевого брандмауэра можно и нужно сделать гораздо больше. Если вы хотите узнать больше о команде iptables, обратитесь к книгам «Создание защиты в Интернете» (Building Internet Firewalls) и «Безопасность Linux» (Linux Security) в поисках более подробных примеров.