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

Правило iptables, разрешающее весь исходящий локально исходящий трафик?

Мне было интересно, может ли кто-нибудь помочь мне со следующим правилом iptables:

Мы хотели бы разрешить ЛЮБОЙ и ВСЕ трафик, исходящий локально (например, на сервере, на котором запущен iptables).

DNS, HTTP и т.д ... все это. Любое соединение, инициированное сервером, на котором запущен iptables, должно быть разрешено.

В настоящее время мы используем в основном политику OUTPUT по умолчанию, ACCEPT. Это верно? Входы заблокированы, поэтому я предполагаю, что это означает, что соединения (кроме тех, которые мы разрешаем) не могут быть запущены, потому что они будут сброшены до того, как наша сторона сможет попасть в политику OUTPUT?

Извините, у меня слабые навыки работы с iptables;)

Большое спасибо.

Для этого вам понадобятся два правила:

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Некоторые примечания.

  • Существующие правила, которые у вас могут быть, могут уже делать это, но выглядят иначе.
  • Это использует -I заставить эти правила быть первыми. iptables правила оцениваются сверху вниз.
  • В -o и -i флаги означают «выход» и «вход» соответственно. Заменить eth0 с правильным именем интерфейса Ethernet.

В настоящее время мы используем в основном политику OUTPUT по умолчанию, ACCEPT.

Этого достаточно для OUTPUT, потому что Netfilter не требует специальных правил для запуска отслеживания соединений с отслеживанием состояния.

Но если вы хотите отфильтровать входящий трафик в соответствии с "по умолчанию отказать"политику можно сделать с переключением INPUT-цепь к DROP: iptables -P INPUT DROP

После этого все будет установлено с помощью всего 2 правила:

iptables -A INPUT -j ACCEPT -i lo
iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED

Обратите внимание на правило, разрешающее входной трафик на loopback интерфейсе - как я указал в своем блоге "Минимальный брандмауэр для конечного пользователя", если явно не разрешено, петлевой трафик не будет обрабатываться проверкой" установленного "состояния по сравнению с обратным трафиком, скажем, eth0.

Для обеспечения этот минимальный набор правил загружен "как есть"не нарушая правил, которые уже могут быть там, удобно использовать iptables-restore в SHELL-сессии:

lptables-restore <<__EOF__
-P INPUT DROP
-A INPUT -j ACCEPT -i lo
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
__EOF__

Перед этим убедитесь, что вы не разорвете собственное сетевое соединение1, хотя уже открытые сеансы SSH должны продолжать работать в обычном режиме, попытки открыть новые не будут работать.

__

  1. Конечно, вы можете добавить другие правила, разрешающие такие соединения. Это может быть так просто, как -A INPUT -j ACCEPT -p tcp --dport 22 - не нужно возиться с -m state Вот. Также не забудьте исправить lptables-restore вернуться к iptables-restore перед тем, как попробовать;)