iptables, стандартный брандмауэр Linux, не сохраняет правила между перезагрузками. Вы должны сами позаботиться об этом. Есть много способов сделать это. Как это сделать канонически? Каковы лучшие практики?
Я отвечу своим собственным решением, но меня интересуют другие / лучшие решения.
Вот несколько примеров правил. Сохраните их в /etc/iptables.rules
# Generated by iptables-save v1.3.6 on Wed Oct 24 17:07:29 2007
*filter
:INPUT ACCEPT [89458:132056082]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [263904:15667452]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j DROP
COMMIT
# Completed on Wed Oct 24 17:07:29 2007
добавьте эту строку в конец / etc / network / interfaces
pre-up iptables-restore < /etc/iptables.rules
Мы используем много правила iptables, поэтому, чтобы упростить администрирование, мы делаем следующее:
Я не знаю, это ли Лучший способ сделать это, но он сработал для нас.
Хотя это правда, что это зависит от среды и платформы, я видел два хороших подхода в зависимости от платформы:
RHEL / CentOS: храните все правила в одном файле / etc / sysconfig / iptables, который считывается сценарием запуска iptables.
Debian / Ubuntu: храните все правила в отдельных файлах для конкретных служб в каталоге /etc/iptables.d/. Например, /etc/iptables.d/port_http, /etc/iptables.d/port_dns, где port_service соответствует имени службы в / etc / services.
В любом случае файл или файлы управляются инструментом конфигурации, таким как Chef или Puppet, и считываются «главным» сценарием запуска для iptables, который запускается во время загрузки.
В дополнении к iptables-save
(и iptables-restore
), сложные схемы брандмауэра лучше обрабатывать с помощью специальных программ. Например, мы использовали shorewall
("iptables made easy") для настройки iptables.
Также доступны более простые инструменты, например Поджигатель и kmyfirewall.
Это зависит от используемого вами дистрибутива. Некоторые дистрибутивы, особенно те, которые основаны на дистрибутиве Red Hat, сохраняют правила iptables автоматически, но в своем собственном специальном каталоге. Я больше всего знаком с RHEL, и правила iptables можно найти в / etc / sysconfig / iptables. Ознакомиться с синтаксисом правил iptables может быть непросто поначалу, но довольно легко, если вы освоите его.
На веб-сайте netfilter есть много документации по iptables, включая некоторые введения. Если вы хотите немного почитать, вы можете найти здесь много полезной информации: http://www.netfilter.org/documentation/
Этот вопрос очень близок к тому, чтобы быть обманом 4934 и это связано с 397.
я использую Firehol в сочетании с веб-интерфейсом, который я разработал для управления файлом конфигурации.
Мне очень нравится firehol, он обеспечивает более простой синтаксис, чем непосредственное использование iptables.
Конечно, мы используем собственный скрипт инициализации. Я могу использовать циклы for для перебора списка портов, анализа других файлов конфигурации, таких как пользователи vpn и т. Д. Отлично!
И iptables-restore, безусловно, самый «канонический» способ его сохранить.
Что хочу добавить:
Обратите внимание, что текущая версия iptables при каждом вызове будет запрашивать у ядра полный список цепочек. Затем он внесет одно изменение, о котором вы его просите. Затем он снова загрузит список.
Это медленно (O (n ^ 2)), для нас требуется 5 секунд, что слишком долго ;-)
Если вы используете iptables-restore, все это выполняется за одну быструю операцию.