Как перейти с FirewallD на Iptables на CentOS 7

Вступление

Как и большинство других дистрибутивов Linux, CentOS 7 использует инфраструктуру + netfilter + внутри ядра Linux для доступа к пакетам, которые проходят через сетевой стек. Это обеспечивает необходимый интерфейс для проверки пакетов и управления ими для реализации системы брандмауэра.

В большинстве дистрибутивов используется брандмауэр + iptables +, который использует хуки + netfilter + для обеспечения соблюдения правил брандмауэра. CentOS 7 поставляется с альтернативной службой под названием + firewalld +, которая выполняет ту же самую задачу.

Хотя + firewalld + - это очень мощное решение брандмауэра с великолепными функциями, для некоторых пользователей может быть проще придерживаться + iptables +, если они довольны его синтаксисом и довольны его поведением и производительностью. + Iptables + command фактически используется самим + firewalld +, но + iptables + service не устанавливается в CentOS 7 по умолчанию. В этом руководстве мы покажем, как установить службу + iptables + в CentOS 7 и перенести брандмауэр из + firewalld + в + iptables + (см. Https://www.digitalocean.com/community/tutorials / how-to-set-up-a-firewall-using-firewalld-on-centos-7 [это руководство], если вы хотите узнать, как использовать FirewallD вместо этого).

Сохраните текущие правила брандмауэра (необязательно)

Прежде чем перейти к + iptables + в качестве решения брандмауэра вашего сервера, рекомендуется сохранить текущие правила, которые выполняет + firewalld +. Мы упоминали выше, что демон + firewalld + фактически использует команду + iptables + для обращения к хукам ядра + netfilter +. Из-за этого мы можем вывести текущие правила, используя команду + iptables +.

Дамп текущего набора правил в стандартный вывод и в файл в вашем домашнем каталоге с именем + firewalld_iptables_rules +, набрав:

sudo iptables -S | tee ~/firewalld_iptables_rules

Сделайте то же самое с + ip6tables +:

sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

В зависимости от зон + firewalld +, которые были активны, сервисов, которые были включены, и правил, которые были переданы из + firewall-cmd + напрямую в + iptables +, набор правил выгрузки может быть довольно обширным.

Сервис + firewalld + реализует свои политики брандмауэра, используя обычные правила + iptables +. Это достигается путем построения инфраструктуры управления с использованием цепочек + iptables +. Большинство правил, которые вы, вероятно, увидите, будут использоваться для создания этих цепочек управления и направления потока трафика в эти структуры и из них.

Правила брандмауэра, которые вы в конечном итоге перенесете на службу + iptables +, не должны будут воссоздавать структуру управления, на которую опирается + firewalld +. Из-за этого набор правил, который вы в конечном итоге реализуете, вероятно, будет намного проще. Здесь мы сохраняем весь набор, чтобы сохранить как можно больше необработанных данных.

Вы можете увидеть некоторые из наиболее важных строк, чтобы получить представление о политике, которую вам придется воссоздать, набрав что-то вроде этого:

grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

Это будет в основном отображать правила, которые приводят к окончательному решению. Правила, которые переходят только на созданные пользователем цепочки, отображаться не будут.

Загрузите и установите сервис Iptables

Чтобы начать переход вашего сервера, вам нужно скачать и установить пакет + iptables-service + из репозиториев CentOS.

Загрузите и установите служебные файлы, набрав:

sudo yum install iptables-services

Это загрузит и установит скрипты + systemd +, используемые для управления сервисом + iptables +. Он также запишет некоторые файлы конфигурации + iptables + и + ip6tables + по умолчанию в каталог + / etc / sysconfig +.

Создайте свои правила брандмауэра Iptables

Затем вам нужно создать правила брандмауэра + iptables +, изменив файлы + / etc / sysconfig / iptables + и + / etc / sysconfig / ip6tables +. Эти файлы содержат правила, которые будут прочитаны и применены при запуске сервиса + iptables +.

То, как вы создаете правила брандмауэра, зависит от того, установлен ли процесс + system-config-firewall + и используется ли он для управления этими файлами. Проверьте верхнюю часть файла + / etc / sysconfig / iptables +, чтобы увидеть, рекомендует ли он не редактировать вручную или нет:

sudo head -2 /etc/sysconfig/iptables

Если выходные данные выглядят так, не стесняйтесь вручную редактировать файлы + / etc / sysconfig / iptables + и + / etc / sysconfig / ip6tables + для реализации политик для вашего брандмауэра + iptables +:

output# sample configuration for iptables service
# you can edit this manually or use system-config-firewall

Откройте и отредактируйте файлы с правами + sudo +, чтобы добавить свои правила:

sudo nano /etc/sysconfig/iptables
sudo nano /etc/sysconfig/ip6tables

После того, как вы создали свои правила, вы можете проверить свои правила IPv4 и IPv6, используя следующие команды:

sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
sudo sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

Если, с другой стороны, результат проверки файла + / etc / sysconfig / iptables + выглядит следующим образом, вам не следует редактировать файл вручную:

output# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.

Это означает, что инструмент управления + system-config-firewall + установлен и используется для управления этим файлом. Любые ручные изменения будут перезаписаны инструментом. Если вы видите это, вы должны внести изменения в брандмауэр, используя один из связанных инструментов. Для текстового интерфейса введите:

sudo system-config-firewall-tui

Если у вас установлен графический интерфейс, вы можете запустить его, набрав:

sudo system-config-firewall

Если вам нужна помощь в изучении правил и синтаксиса + iptables +, могут быть полезны следующие руководства, даже если они в основном предназначены для систем Ubuntu:

Остановите службу FirewallD и запустите службу Iptables

Затем нам нужно остановить текущий брандмауэр + firewalld + и запустить наши сервисы + iptables +. Мы будем использовать конструкцию + && + для запуска новых служб брандмауэра, как только служба + firewalld + успешно завершит работу:

sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables

Вы можете проверить, что + firewalld + не работает, набрав:

sudo firewall-cmd --state

Вы также можете увидеть, что правила, которые вы установили в каталоге + / etc / sysconfig +, были загружены и применены, набрав:

sudo iptables -S
sudo ip6tables -S

На этом этапе службы + iptables + и + ip6tables + активны для текущего сеанса. Однако в настоящее время служба + firewalld + по-прежнему автоматически запускается при перезагрузке сервера.

Это лучшее время для тестирования политик брандмауэра, чтобы убедиться, что у вас есть необходимый уровень доступа, потому что вы можете перезапустить сервер, чтобы вернуться к старому брандмауэру, если возникнут какие-либо проблемы.

Отключите службу FirewallD и включите службы Iptables

После тестирования правил брандмауэра, чтобы убедиться, что ваша политика правильно применяется, вы можете отключить службу + firewalld +, набрав:

sudo systemctl disable firewalld

Это предотвратит автоматический запуск службы при загрузке. Так как служба + firewalld + не должна запускаться вручную, пока запущены службы + iptables +, вы можете сделать дополнительный шаг, замаскировав службу. Это предотвратит запуск службы + firewalld + также вручную:

sudo systemctl mask firewalld

Теперь вы можете включить ваши сервисы + iptables + и + ip6tables +, чтобы они автоматически запускались при загрузке:

sudo systemctl enable iptables
sudo systemctl enable ip6tables

Это должно завершить переход вашего брандмауэра.

Заключение

Внедрение брандмауэра является важным шагом к обеспечению безопасности ваших серверов. Хотя + firewalld + является отличным решением брандмауэра, иногда наиболее целесообразно использовать наиболее знакомый инструмент или использовать одни и те же системы в более разнообразной инфраструктуре.

Related