Переход с FirewallD на IPTables в CentOS 7

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

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

Брандмауэр firewalld – довольно надёжное решение с широким набором функций. Однако некоторые пользователи предпочитают использовать фаервол IPTables, поскольку он не менее продуктивен и имеет более привычный синтаксис. На самом деле, сервис firewalld

Позволяет использовать команду iptables, но сам фаервол IPTablesне установлен в систему CentOS 7 по умолчанию. В этом руководстве показано, как установить сервис IPTables на CentOS 7 и перейти на него с брандмауэра firewalld.

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

Прежде чем приступить к замене брандмауэра, рекомендуется сохранить текущие правила 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 не требуют повторного создания фреймворка управления firewalld. Потому правила, установленные в конечном итоге, вероятно, будут намного проще. Чтобы сохранить как можно больше исходных данных нетронутыми, нужно сохранить весь набор текущих правил.

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

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

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

2: Загрузите и установите сервис IPTables

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

Загрузите и установите сервис при помощи команды:

sudo yum install iptables-services

Это загрузит и установит скрипт systemd, необходимый для управления сервисом iptables, а также некоторые стандартные конфигурационные файлы iptables и ip6tables ( в каталог /etc/sysconfig).

3: Создайте правила 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 вручную:

# 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 запрещает редактировать файлы вручную, на экране появится такой вывод:

# 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

4: Остановите сервис FirewallD и запустите IPTables

Затем нужно остановить текущий фаервол firewalld и запустить сервис iptables. Используйте условный оператор &&, чтобы запустить новый сервис фаервола сразу после остановки firewalld:

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

Убедитесь, что firewalld отключен:

sudo firwall-cmd --state

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

sudo iptables -S
sudo ip6tables -S

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

Сейчас нужно проверить политику фаервола, чтобы убедиться, что у вас есть необходимый уровень доступа к серверу, потому что в случае возникновения проблем с настройками вы сможете перезагрузить сервер и вернуться к предыдущему брандмауэру.

5: Отключите FirewallD

Протестировав настойки нового фаервола, отключите FirewallD:

sudo systemctl disable firewalld

Теперь система не будет автоматически загружать FirewallD при запуске. Примените маскировку сервиса, чтобы предотвратить запуск firewalld вручную, если работает Iptables.

sudo systemctl mask firewalld

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

sudo systemctl enable iptables
sudo systemctl enable ip6tables

Переход с с FirewallD на IPTables успешно завершён.

Заключение

Внедрение фаервола – важнейший шаг в настройке безопасности сервера. Несмотря на то, что firewalld – надёжное решение, многие пользователи предпочитают работать с более знакомыми им инструментами.

Tags: , ,

Добавить комментарий