Lumpics lumpics.ru

Настройка Firewall в CentOS 7

Установленный в операционной системе Firewall используется для предотвращения несанкционированного прохождения трафика между компьютерными сетями. Вручную или автоматически создаются специальные правила для межсетевого экрана, которые и отвечают за управление доступом. В ОС, разработанной на ядре Linux, CentOS 7 имеется встроенный фаервол, а управление им осуществляется с помощью брандмауэра. По умолчанию задействован FirewallD, и о его настройке мы бы хотели поговорить сегодня.

Настраиваем Firewall в CentOS 7

Как уже было сказано выше, стандартным брандмауэром в CentOS 7 назначена утилита FirewallD. Именно поэтому настройка фаервола будет рассмотрена на примере этого инструмента. Задать правила фильтрации можно и с помощью той же iptables, но это выполняется немного другим образом. С конфигурацией упомянутой утилиты рекомендуем ознакомиться, перейдя по следующей ссылке, а мы же начнем разбор FirewallD.

Читайте также: Настройка iptables в CentOS 7

Основные понятия межсетевого экрана

Существует несколько зон — наборов правил для управления трафиком на основе доверия к сетям. Всем им задаются собственные политики, совокупность которых и образует конфигурацию брандмауэра. Каждой зоне присваивается один или несколько сетевых интерфейсов, что также позволяет регулировать фильтрацию. От используемого интерфейса напрямую зависят применяемые правила. Например, при подключении к общедоступному Wi-Fi сетевой экран повысит уровень контроля, а в домашней сети откроет дополнительный доступ для участников цепи. В рассматриваемом фаерволе присутствуют такие зоны:

Зона Описание
trusted Максимальный уровень доверия ко всем устройствам сети
home Группа локальной сети. Существует доверие к окружению, но при этом входящие соединения доступны только для определенных машин
work Рабочая зона. Присутствует доверие к большинству устройств, а также активируются дополнительные сервисы
dmz Зона для изолированных компьютеров. Такие устройства отсоединены от остальной сети и пропускают только определенный входящий трафик
internal Зона внутренних сетей. Доверие применяется ко всем машинам, открываются дополнительные сервисы
external Обратная к предыдущей зона. Во внешних сетях активна маскировка NAT, закрывая внутреннюю сеть, но не блокируя возможность получения доступа
public Зона общедоступных сетей с недоверием ко всем устройствам и индивидуальным приемом входящего трафика
block Все входящие запросы сбрасываются с отправлением ошибки icmp-host-prohibited или icmp6-adm-prohibited
drop Минимальный уровень доверия. Входящие соединения сбрасываются без каких-либо уведомлений

Сами же политики бывают временные и постоянные. При появлении или редактировании параметров действие фаервола сразу меняется без надобности перезагрузки. Если же были применены временные правила, после рестарта FirewallD они будут сброшены. Перманентное правило на то так и называются — оно будет сохранено на постоянной основе при применении аргумента —permanent.

Включение брандмауэра FirewallD

Для начала нужно запустить FirewallD или убедиться в том, что он находится в активном состоянии. Только функционирующий демон (программа, работающая в фоновом режиме) будет применять правила для межсетевого экрана. Активация производится буквально в несколько кликов:

  1. Запустите классический «Терминал» любым удобным методом, к примеру, через меню «Приложения».
  2. Запуск терминала для дальнейшей настройки фаервола в CentOS 7
  3. Введите команду sudo systemctl start firewalld.service и нажмите на клавишу Enter.
  4. Запуск сервисов фаервола в операционной системе CentOS 7
  5. Управление утилитой осуществляется от имени суперпользователя, поэтому придется подтвердить подлинность, указав пароль.
  6. Ввод пароля для запуска сервисов фаервола в терминале CentOS 7
  7. Чтобы убедиться в функционировании сервиса, укажите firewall-cmd --state.
  8. Просмотр текущего состояния фаервола через терминал в CentOS 7
  9. В открывшемся графическом окне повторно подтвердите подлинность.
  10. Ввод пароля для подтверждения подлинности при просмотре состояния фаервола CentOS 7
  11. Отобразится новая строка. Значение «running» говорит о том, что фаервол работает.
  12. Отображение текущего состояния фаервола в операционной системе CentOS 7

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

Подробнее: Отключение Firewall в CentOS 7

Просмотр правил по умолчанию и доступных зон

Даже работающий в штатном режиме фаервол имеет свои определенные правила и доступные зоны. Перед началом редактирования политик советуем ознакомиться с текущей конфигурацией. Делается это при помощи простых команд:

  1. Определить функционирующую по умолчанию зону поможет команда firewall-cmd --get-default-zone.
  2. Просмотр установленной по умолчанию зоны фаервола в CentOS 7
  3. После ее активации вы увидите новую строку, где отобразится необходимый параметр. Например, на скриншоте ниже активной считается зона «public».
  4. Отображение установленной по умолчанию зоны фаервола в CentOS 7
  5. Однако активными могут быть сразу несколько зон, к тому же они привязываются к отдельному интерфейсу. Узнайте эту информацию через firewall-cmd --get-active-zones.
  6. Просмотр всех активных зон фаервола в CentOS 7
  7. Команда firewall-cmd --list-all выведет на экран правила, заданные для зоны по умолчанию. Обратите внимание на скриншот ниже. Вы видите, что активной зоне «public» присвоено правило «default» — функционирование по умолчанию, интерфейс «enp0s3» и добавлено два сервиса.
  8. Просмотр правил активных зон фаервола через терминал в CentOS 7
  9. Если появилась надобность узнать все доступные зоны брандмауэра, введите firewall-cmd --get-zones.
  10. Получение списка всех доступных зон фаервола через терминал в CentOS 7
  11. Параметры же конкретной зоны определяются через firewall-cmd --zone=name --list-all, где name — название зоны.
  12. Отображение правил указанной зоны фаервола через терминал в CentOS 7

После определения необходимых параметров можно переходить к их изменению и добавлению. Давайте детально разберем несколько самых популярных конфигураций.

Настройка зон интерфейсов

Как вы знаете из информации выше, для каждого интерфейса определяется своя зона по умолчанию. Он будет находиться в ней до тех пор, пока настройки не изменятся пользователем или программно. Возможен ручной перенос интерфейса в зону на одну сессию, и осуществляется он активацией команды sudo firewall-cmd --zone=home --change-interface=eth0. Результат «success» свидетельствует о том, что перенос прошел успешно. Напомним, что такие настройки сбрасываются сразу после перезагрузки фаервола.

Назначение определенного интерфейса для зоны фаервола в CentOS 7

При подобном изменении параметров следует учитывать, что работа сервисов может быть сброшена. Некоторые из них не поддерживают функционирование в определенных зонах, допустим, SSH хоть и доступен в «home», но в пользовательских или особенных сервис работать откажется. Убедиться в том, что интерфейс был успешно привязан к новой ветви можно, введя firewall-cmd --get-active-zones.

Просмотр активной зоны фаервола и ее интерфейс в CentOS 7

Если вы захотите сбросить произведенные ранее настройки, просто выполните рестарт брандмауэра: sudo systemctl restart firewalld.service.

Перезапуск фаервола после внесения изменений в CentOS 7

Порой не всегда удобно изменять зону интерфейса всего на одну сессию. В таком случае потребуется редактировать конфигурационный файл, чтобы все настройки ввелись на перманентной основе. Для этого мы советуем использовать текстовый редактор nano, который устанавливается с официального хранилища sudo yum install nano. Далее остается произвести такие действия:

  1. Откройте конфигурационный файл через редактор, введя sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0, где eth0 — название необходимого интерфейса.
  2. Открытие конфигурационного файла интерфейса фаервола в CentOS 7
  3. Подтвердите подлинность учетной записи для выполнения дальнейших действий.
  4. Ввод пароля для открытия конфигурационного файла интерфейса в CentOS 7
  5. Отыщите параметр «ZONE» и поменяйте его значение на нужное, например, public или home.
  6. Изменение зоны интерфейса через конфигурационный файл в CentOS 7
  7. Зажмите клавиши Ctrl + O, чтобы сохранить изменения.
  8. Запись изменений в текстовом редакторе CentOS 7
  9. Не изменяйте имя файла, а просто нажмите на Enter.
  10. Назначение файла для записи изменений в текстовом редакторе CentOS 7
  11. Выйдите из текстового редактора через Ctrl + X.
  12. Выход из текстового редактора после изменений CentOS 7

Теперь зона интерфейса будет такой, какой вы ее указали, до момента следующего редактирования конфигурационного файла. Чтобы обновленные параметры вступили в действие, выполните sudo systemctl restart network.service и sudo systemctl restart firewalld.service.

Установка зоны по умолчанию

Выше мы уже демонстрировали команду, которая позволяла узнать установленную по умолчанию зону. Ее также можно изменить, установив параметр на свой выбор. Для этого в консоли достаточно прописать sudo firewall-cmd --set-default-zone=name, где name — имя необходимой зоны.

Назначение зоны фаервола по умолчанию в CentOS 7

Об успешности выполнения команды будет свидетельствовать надпись «success» в отдельной строке. После этого все текущие интерфейсы привяжутся к указанной зоне, если другого не задано в конфигурационных файлах.

Успешное назначение зоны по умолчанию в CentOS 7

Создание правил для программ и утилит

В самом начале статьи мы рассказали о действии каждой зоны. Определение сервисов, утилит и программ в такие ветви позволит применить для каждой из них индивидуальные параметры под запросы каждого пользователя. Для начала советуем ознакомиться с полным списком доступных на данный момент сервисов: firewall-cmd --get-services.

Команда для просмотра доступных в системе сервисов CentOS 7

Результат отобразится прямо в консоли. Каждый сервер разделен пробелом, и в списке вы сможете с легкостью отыскать интересующий вас инструмент. Если же нужный сервис отсутствует, его следует дополнительно установить. О правилах инсталляции читайте в официальной документации программного обеспечения.

Список доступных сервисов в CentOS 7

Указанная выше команда демонстрирует только названия сервисов. Детальная информация по каждому из них получается через индивидуальный файл, находящийся по пути /usr/lib/firewalld/services. Такие документы имеют формат XML, путь, например, к SSH выглядит так: /usr/lib/firewalld/services/ssh.xml, а документ имеет следующее содержимое:

SSH
Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.

Активируется поддержка сервиса в определенной зоне вручную. В «Терминале» следует задать команду sudo firewall-cmd --zone=public --add-service=http, где --zone=public — зона для активации, а --add-service=http — название сервиса. Учтите, что такое изменение будет действовать только в пределах одной сессии.

Добавление сервиса в определенную зону фаервола CentOS 7

Перманентное добавление осуществляется через sudo firewall-cmd --zone=public --permanent --add-service=http, а результат «success» свидетельствует об успешном завершении операции.

Перманентное добавление сервиса в зону фаервола CentOS 7

Просмотреть полный список постоянных правил для определенной зоны можно, отобразив список в отдельной строке консоли: sudo firewall-cmd --zone=public --permanent --list-services.

Просмотр списка перманентных сервисов фаервола CentOS 7

Решение неполадки с отсутствием доступа к сервису

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

Проброс порта

Как известно, все сетевые сервисы используют определенный порт. Он запросто обнаруживается межсетевым экраном, и по нему могут выполняться блокировки. Чтобы избежать таких действий со стороны фаервола, нужно открыть необходимый порт командой sudo firewall-cmd --zone=public --add-port=0000/tcp, где --zone=public — зона для порта, --add-port=0000/tcp — номер и протокол порта. Опция firewall-cmd --list-ports отобразит список открытых портов.

Открытие порта в определенной зоне фаервола CentOS 7

Если же вам необходимо открыть порты, входящие в диапазон, воспользуйтесь строкой sudo firewall-cmd --zone=public --add-port=0000-9999/udp, где --add-port=0000-9999/udp — диапазон портов и их протокол.

Открытие диапазона портов в определенной зоне фаервола CentOS 7

Приведенные выше команды лишь позволят протестировать применение подобных параметров. Если оно прошло успешно, следует добавить эти же порты в постоянные настройки, а делается это путем ввода sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp или sudo firewall-cmd --zone=public --permanent --add-port=0000-9999/udp. Список открытых постоянных портов просматривается так: sudo firewall-cmd --zone=public --permanent --list-ports.

Определение сервиса

Как видите, добавление портов не вызывает никаких трудностей, но процедура усложняется в том случае, когда приложений используется большое количество. Отследить все использующиеся порты становится трудно, ввиду чего более правильным вариантом станет определение сервиса:

  1. Скопируйте конфигурационный файл, написав sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml, где service.xml — имя файла сервиса, а example.xml — название его копии.
  2. Копирование файла настроек сервиса фаервола в CentOS 7
  3. Откройте копию для изменения через любой текстовый редактор, к примеру, sudo nano /etc/firewalld/services/example.xml.
  4. Запуск скопированного файла сервиса CentOS 7
  5. Для примера мы создали копию сервиса HTTP. В документе вы в основном видите различные метаданные, например, короткое имя и описание. Влияет на работу сервера только смена номера порта и протокола. Над строкой «</service>» следует добавить <port protocol="tcp" port="0000"/>, чтобы открыть порт. tcp — использующийся протокол, а 0000 — номер порта.
  6. Внесение изменений в файл сервиса для открытия портов в CentOS 7
  7. Сохраните все изменения (Ctrl + O), закройте файл (Ctrl + X), а затем перезапустите фаервол для применения параметров через sudo firewall-cmd --reload. После этого сервис появится в списке доступных, который можно просмотреть через firewall-cmd --get-services.
  8. Перезапуск сервиса фаервола в CentOS 7

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

Создание пользовательских зон

Вы уже знаете, что изначально в FirewallD создано большое количество разнообразных зон с определенными правилами. Однако случаются ситуации, когда системному администратору требуется создать пользовательскую зону, как, например, «publicweb» для установленного веб-сервера или «privateDNS» — для DNS-сервера. На этих двух примерах мы и разберем добавление ветвей:

  1. Создайте две новые перманентные зоны командами sudo firewall-cmd --permanent --new-zone=publicweb и sudo firewall-cmd --permanent --new-zone=privateDNS.
  2. Добавление новых пользовательских зон фаервола CentOS 7
  3. Они будут доступны после перезагрузки инструмента sudo firewall-cmd --reload. Для отображения перманентных зон введите sudo firewall-cmd --permanent --get-zones.
  4. Просмотр доступных зон фаервола в CentOS 7
  5. Присвойте им нужные сервисы, например, «SSH», «HTTP» и «HTTPS». Делается это командами sudo firewall-cmd --zone=publicweb --add-service=ssh, sudo firewall-cmd --zone=publicweb --add-service=http и sudo firewall-cmd --zone=publicweb --add-service=https, где --zone=publicweb — название зоны для добавления. Просмотреть активность сервисов можно, прописав firewall-cmd --zone=publicweb --list-all.
  6. Добавление сервисов в пользовательскую зону CentOS 7

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

Как видите, брандмауэр FirewallD — достаточно объемный инструмент, позволяющий произвести максимально гибкую конфигурацию межсетевого экрана. Осталось только убедиться в том, что утилита запускается вместе с системой и указанные правила сразу же начинают свою работу. Сделайте это командой sudo systemctl enable firewalld.

Обсудить в TelegramНаш Telegram каналТолько полезная информация
Автор статьи Вы на сайте: Статья обновлена: . Автор: Виктор Бухтеев

Вам помогли мои советы?

Получить ответ на Email
Уведомить о

2 ответов
По рейтингу
Новые Старые
Межтекстовые Отзывы
Посмотреть все комментарии
Nick
18 марта 2020 14:53

Как открыть доступ по порту 5900 в CentOS с настройками по умолчанию без танцев с бубном одной командой?

Nick
18 марта 2020 15:04
Ответить на  Nick

Нашёл: Applications -> Sundry -> Firewall:
Configuration: Permanent
Zones: public
Ports -> Add -> 5900 (tcp) -> OK
Всё, терминал не нужен J

Задать вопрос