Назад | Перейти на главную страницу

Методы реализации правил iptables

Обычно на сервере настраивается ограниченное количество сервисов, а большинство ненужных отключается. Мне было интересно, какой подход к межсетевому экрану с iptables лучше всего подходит.

Лучше ли фильтровать, отклоняя определенную службу из определенного интерфейса или сети и оставляя неиспользуемые порты открытыми, или лучше установить политику цепочки, чтобы она была отброшена, а затем начать открывать то, что необходимо?

Когда дело доходит до брандмауэра на системном уровне, существует множество школ.

Один из часто встречающихся консервативных подходов заключается в использовании отслеживания соединений для сопоставления и явного приема входящего СВЯЗАННОГО или УСТАНОВЛЕННОГО трафика. Весь остальной входящий трафик по умолчанию отбрасывается. Явные правила добавляются по мере необходимости, чтобы различные службы могли принимать несогласованный входящий трафик.

Исходящий трафик не фильтруется в большинстве сценариев.

Пример:

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -m conntrack --ctstate INVALID -j DROP
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT

Приведенный выше фрагмент iptables-save показывает настройку, которая по умолчанию отбрасывает входящие и пересылаемые пакеты и принимает исходящие пакеты по умолчанию. Входящий трафик с localhost явно принимается, как и пакеты RELATED и ESTABLISHED (например, ответы на HTTP-запрос), а также весь трафик на порт 22 (SSH).