Создание набора правил брандмауэра(Часть 2).
Метки: DMZ | DNS | ICMP | IPTables | SMTP
Понедельник, 6 апреля 2009 г.
Просмотров: 2622
Защита нейтральной зоны (DMZ).
Правила, заданные в сценарии nat.sh, ограничивали поток трафика в нейтральную зону, но не определяли ограничения на исходящий от DMZ-серверов трафик, который может передаваться или в локальную сеть, или в Интернет. В идеале нужно разрешить только ESTABLISED- и RELATED-трафик, так как DMZ-серверы будут только обрабатывать запросы клиентов и не будут устанавливать новых соединений.
Но есть определенная проблема, которая заключается в том, что сервисы, в частности DNS и SMTP, будут устанавливать новые соединения. Если запретить создание новых соединений для DNS-серверов, то прервется работа этих сервисов. В этом случаем нужно написать более точные правила.
Правила для DNS-сервера.
Для DNS-сервера можно реализовать несколько разных конфигураций, но нередко используемая конфигурация предполагает, что DNS-сервер будет использоваться для ответов на запросы удаленных клиентов (или удаленных серверов имен) о зоне и для ответов на запросы клиентов локальной сети. Посмотрим на DNS-трафик:
- DNS-запросы удаленных клиентов/серверов имен. Порт отправителя будет в диапазоне 1024-65535, а порт получателя — 53. Протокол - TCP/UDP.
- DNS-ответы на запросы: порт отправителя 53, порт получателя будет в диапазоне 1024-65535.
- Некоторые версии BIND используют для запросов порт отправителя 53, поэтому нужно разрешить трафик, где порт отправителя и порт получателя равен 53.
Напишем соответствующие правила IPTables:
$IPT -I FORWARD -o $IF_DMZ -d $DMZ_DNS -p udp --sport 53 --dport 53 -j ACCEPT
$IPT -I FORWARD -o $IF_DMZ -d $DMZ_DNS -p udp --sport 53 --dport 1024:65535 -j ACCEPT
$IPT -I FORWARD -o $IF_DMZ -d $DMZ_DNS -p tcp --sport 1024:65535 --dport 53 -j ACCEPT
$IPT -I FORWARD -o $IF_DMZ -d $DMZ_DNS -p tcp --sport 53 --dport 53 -j ACCEPT
$IPT -I FORWARD -o $IF_DMZ -d $DMZ_DNS -p tcp --sport 53 --dport 1024:65535 -j ACCEPT
Правила для SMTP-сервисов.
SMTP-сервер выполняет две функции: получение почты от удаленных узлов и отправку почты, созданной пользователями локальной сети, удаленным SMTP-серверам. Обе ситуации подразумевают использование ТСР-соединения между непривилегированным портом и портом 25. В этом случае получим следующие правила:
$IPT -I FORWARD -o $IF_DMZ -d $DMZ_MAIL -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
Другие сервисы.
Последние правила для DNS и SMTP будут вставлены в самое начало цепочки FORWARD, следовательно, в случае удачного совпадения обработка правил цепочки будет прекращена. Это позволяет модифицировать правило из сценария nat.sh:
следующим образом:
так как теперь оно не касается DNS- и SMTP-трафика.
ICMP-сообщения.
Большинство ICMP-сообщений посылается в ответ на ТСР- или UDP-пакет (в частности, SOURCE QUENCH, если отправитель отправляет данные быстрее, чем получатель может их принять, или PORT UNREACHABLE, если UDP-дейтаграмма посылается на закрытый порт) и отмечаются машиной состояний (так называемой, Stateful firewall) как RELATED, то есть связанные с определенным соединением.
Состояние RELATED дает им возможность проходить через брандмауэр. Единственный тип ICMP-сообщения, который не генерируется таким образом, - это ECHO REQUEST (пинг). Главная задача - это ограничить его частоту:
Другие ICMP-сообщения будут приняты, если они относятся к установленному соединению, но их частоту тоже нужно ограничить:
Следующее правило будет записывать в лог все ICMP-сообщения, если будет превышен предел в 50 ICMP-сообщений за минуту:
- Создание набора правил брандмауэра(Часть 1).
- Создание набора правил брандмауэра(Часть 2).