Что делать, если нужный сервис недоступен?
Брандмауэр firewalld по умолчанию включает в себя многие наиболее распространённые сервисы. Однако некоторым приложениям необходимы сервисы, поддержка которых отсутствует в firewalld. В таком случае вы можете поступить двумя способами.
Изменение зоны интерфейса на постоянной основе
Если в настройках интерфейса не указана никакая другая зона, после перезапуска брандмауэра интерфейс будет снова привязан к зоне по умолчанию. В РЕД ОС такие конфигурации хранятся в каталоге /etc/sysconfig/network-scripts, в файлах формата ifcfg-interface.
Чтобы определить зону интерфейса, откройте конфигурационный файл этого интерфейса, например:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
В конец файла добавьте переменную ZONE= и в качестве значения укажите другую зону, например, home:
Содержимое файла:
. . . DNS1=2001:4860:4860::8844 DNS2=2001:4860:4860::8888 DNS3=8.8.8.8 ZONE=home
Сохраните и закройте файл.
Чтобы обновить настройки, перезапустите сетевой сервис и брандмауэр:
sudo systemctl restart network.service sudo systemctl restart firewalld.service
После перезапуска интерфейс eth0 будет привязан к зоне home.
firewall-cmd --get-active-zones home interfaces: eth0 public interfaces: eth1
Основные концепции firewalld, зоны и правила
Перед тем как приступить к установке и настройке firewalld, мы познакомимся с понятием зон, которые используются для определения уровня доверия к различным соединениям. Для различных зон firewalld можно применить различные правила фильтрации, указывать активные опции брандмауэра в виде предварительно определенных служб, протоколов и портов, перенаправления портов и rich-rules.
Firewalld фильтрует входящий трафик по зонам в зависимости от примененных к зоне правил. Если IP-адрес отправителя запроса соответствует правилам какой-либо зоны, то пакет будет отправляться через эту зону. Если же адрес не соответствует ни одной из настроенных на сервере зоне, пакет будет обрабатываться зоной используемой по умолчанию. При установке firewalld зона по умолчанию называется public.
В firewalld есть зоны, где уже предварительно настроены разрешения для различных служб. Можно использовать эти настройки или создавать собственные зоны. Список зон по-умолчанию, которые создаются при установке firewalld (хранятся в каталоге /usr/lib/firewalld/zones/):
Автоматический запуск брандмауэра
Теперь, когда вы проверили все настройки и убедились, что все правила работают должным образом, вы можете настроить автозапуск брандмауэра.
Для этого введите:
sudo systemctl enable firewalld
Теперь брандмауэр будет запускаться вместе с сервером.
Белый список ip-адресов
Чтобы разрешить один IP-адрес на брандмауэре, выполните команду:
$ sudo firewall-cmd --permanent --add-source=192.168.2.50
Блокировка ip-адреса
До сих пор мы разобрали, как добавлять и удалять порты и службы, а также вносить в белый список и удалять IP-адреса из белого списка.
Чтобы заблокировать IP-адрес, используются «rich rules».
Например, чтобы заблокировать IP 192.168.2.50, выполните команду:
$ sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.50' reject"
Чтобы заблокировать всю подсеть, запустите:
$ sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.0/24' reject"
Блокировка службы
Чтобы заблокировать службу, например FTP, выполните:
Добавление правил для приложений
Чтобы открыть порт для приложения, можно добавить в исключения сервис. Вывести список доступных сервисов:
# firewall-cmd –get-services
Вывод будет содержать большое количество сервисов. Подробная информация о службе содержится в ее xml файле. Эти файлы расположены в директории /usr/lib/firewalld/services.
Например:
# cd /usr/lib/firewalld/services
# cat smtp.xml
Другие зоны брандмауэра
Теперь следует ознакомиться с другими зонами.
Чтобы получить список всех доступных зон, введите:
Изменение зоны интерфейса на одну сессию
Чтобы перевести интерфейс в другую зону на одну сессию, используйте опции —zone= и —change-interface=.
Например, чтобы перевести eth0 в зону home, нужно ввести:
sudo firewall-cmd --zone=home --change-interface=eth0 success
Примечание: При переводе интерфейса в другую зону нужно учитывать, что это может повлиять на работу некоторых сервисов. К примеру, зона home поддерживает SSH, поэтому соединения этого сервиса не будут сброшены. Но некоторые зоны сбрасывают все соединения, включая SSH, и тогда вы можете случайно заблокировать себе доступ к собственному серверу.
Чтобы убедиться, что интерфейс привязан к новой зоне, введите:
firewall-cmd --get-active-zones home interfaces: eth0 public interfaces: eth1
После перезагрузки брандмауэра интерфейс будет снова привязан к зоне по умолчанию.
sudo systemctl restart firewalld.service firewall-cmd --get-active-zones public interfaces: eth0 eth1
Курсы cisco и linux с трудоустройством!
Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
- Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
- Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
- Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
- Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
- Если хотите индивидуальный график — обсудим и осуществим.
- Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
Настройка зон интерфейсов
Изначально все сетевые интерфейсы привязаны к зоне по умолчанию.
Настройка зоны по умолчанию
Также вы можете выбрать другую зону по умолчанию.
Для этого используется параметр —set-default-zone=. После этого все интерфейсы будут привязаны к другой зоне:
sudo firewall-cmd --set-default-zone=home home interfaces: eth0 eth1
Открыть порт для определенного ip-адреса в firewalld
Сначала создайте соответствующее имя зоны (в нашем случае мы использовали mariadb-access, чтобы разрешить доступ к серверу базы данных MySQL).
# firewall-cmd --new-zone=mariadb_access --permanent
# firewall-cmd --reload # firewall-cmd --get-zones
Перенаправление портов в firewalld
Вы можете создать правило перенаправления портов в firewalld. Чтобы перенаправить 443 порт на 9090:
# firewall-cmd –zone=public –add-forward-port=port=443:proto=tcp:toport=9090 –permanent
Чтобы удалить правило перенаправления порта:
# firewall-cmd –zone=public –remove-forward-port=port=443:proto=tcp:toport=9090
Помогла статья? подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Просмотр правил брандмауэра
Чтобы просмотреть все правила брандмауэра, выполните команду:
$ sudo firewall-cmd --list-all
Просмотр правил по умолчанию
Чтобы узнать, какая зона используется по умолчанию, введите:
firewall-cmd --get-default-zone public
На данный момент firewalld не получал никаких инструкций относительно других зон, кроме того, к другим зонам не привязан ни один интерфейс, поэтому сейчас зона public является зоной по умолчанию, а также единственной активной зоной.
Чтобы получить список активных зон, введите:
firewall-cmd --get-active-zones public interfaces: eth0 eth1
К зоне public привязаны два сетевых интерфейса: eth0 и eth1. Интерфейсы, привязанные к зоне, работают согласно правилам этой зоны.
Чтобы узнать, какие правила использует зона по умолчанию, введите:
Разрешить службу
Сетевые службы определены в файле /etc/services.
Создание зон
Брандмауэр предоставляет много предопределенных зон, которых в большинстве случаев достаточно для работы. Но в некоторых ситуациях возникает необходимость создать пользовательскую зону.
Например, для веб-сервера можно создать зону publicweb, а для DNS-сервиса – зону privateDNS.
Создавая зону, нужно добавить её в постоянные настройки брандмауэра.
Попробуйте создать зоны publicweb и privateDNS:
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS
Убедитесь, что зоны существуют:
Сохранение правил
Правила firewalld бывают постоянными и временными. Если в наборе появляется или изменяется какое-либо правило, текущее поведение брандмауэра изменяется сразу. Однако после перезагрузки все изменения будут утрачены, если их не сохранить.Большинство команд firewall-cmd может использовать флаг —permanent, который сохранит правило, после чего оно будет использоваться на постоянной основе.
Способ 1: настройка порта
Проще всего в такой ситуации открыть порт приложения в необходимой зоне брандмауэра. Нужно просто указать порт или диапазон портов и протокол.
Например, приложение, которое использует порт 5000 и протокол TCP, нужно добавить в зону public. Чтобы включить поддержку приложения на дну сессию, используйте параметр —add-port= и укажите протокол tcp или udp.
sudo firewall-cmd --zone=public --add-port=5000/tcp
Убедитесь, что операция прошла успешно:
firewall-cmd --list-ports 5000/tcp
Также можно указать последовательный диапазон портов, отделив первый и последний порт диапазона с помощью тире. Например, если приложение использует UDP-порты 4990-4999, чтобы добавить их в зону public, нужно ввести:
sudo firewall-cmd --zone=public --add-port=4990-4999/udp
После тестирования можно добавить эти правила в постоянные настройки брандмауэра.
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports success success 4990-4999/udp 5000/tcp
Способ 2: определение сервиса
Добавлять порты в зоны просто, но если у вас много таких приложений, в результате будет сложно отследить, для чего предназначен тот или иной порт. Чтобы избежать такой ситуации, можно вместо портов определить сервисы.
Сервисы – это просто наборы портов с определенным именем и описанием. С помощью сервисов проще управлять настройками, но сами по себе они сложнее, чем порты.
Для начала нужно скопировать существующий сценарий из каталога /usr/lib/firewalld/services в каталог /etc/firewalld/services (здесь брандмауэр ищет нестандартные настройки).
Например, можно скопировать определение сервиса SSH и использовать его для определения условного сервиса example. Имя сценария должно совпадать с именем сервиса и иметь расширение .xml.
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
Откорректируйте скопированный файл.
sudo nano /etc/firewalld/services/example.xml
В файле находится определение SSH:
Большую часть определения сервиса составляют метаданные. Изменить краткое имя сервиса можно в тегах . Это человекочитаемое имя сервиса. Также нужно добавить описание сервиса. Единственное изменение, которое повлияет на работу сервиса – это изменение номера порта и протокола.
Вернёмся к сервису example; допустим, он требует открыть TCP- порт 7777 и UDP- порт 8888. Определение будет выглядеть так:
Сохраните и закройте файл.
Перезапустите брандмауэр:
sudo firewall-cmd --reload
Удаление ip-адресов из белого списка
Если вы хотите удалить из белого списка IP-адрес на брандмауэре, используйте флаг –remove-source, как показано ниже:
$ sudo firewall-cmd --permanent --remove-source=192.168.2.50
Для всей подсети выполните:
$ sudo firewall-cmd --permanent --remove-source=192.168.2.50/24
Установка и включение firewalld в centos
В CentOS 7/8 firewalld устанавливается по умолчанию при установке ОС. Если вы его удалили и хотите установить firewalld, можете воспользоваться стандартным менеджером yum/dnf:
# yum install firewalld -y — для Centos 7# dnf install firewalld -y — для Centos 8
Чтобы демон firewalld запускался автоматически со стартом сервера, нужно добавить его в автозагрузку:
# systemctl enable firewalld
И запустить:
# systemctl start firewalld
Проверить статус сервиса:
# systemctl status firewalld
Заключение
Брандмауэр firewalld — очень гибкий инструмент. Зоны позволяют быстро изменять политику брандмауэра.




