Назад в блог

Настройка брандмауэра с помощью FirewallD на CentOS 7

Настройка брандмауэра с помощью FirewallD на CentOS 7

Введение

Firewalld — это решение для управления брандмауэром, доступное во многих дистрибутивах Linux. Оно служит интерфейсом для системы фильтрации пакетов iptables, предоставляемой ядром Linux. В этом руководстве вы узнаете, как настроить брандмауэр для вашего сервера. Мы также покажем вам основы управления брандмауэром с помощью инструмента администрирования firewall-cmd.

Основы Firewalld

FirewallD использует концепции зон и служб вместо цепочек и правил iptables. В зависимости от настроенных зон и служб вы можете контролировать, какой трафик разрешен или запрещен для системы и от нее. Настраивать FirewallD и управлять им можно с помощью утилиты командной строки firewall-cmd.

Установка и включение брандмауэра при загрузке

В большинстве дистрибутивов Linux firewallD уже установлен. Однако, если вам нужно установить его самостоятельно, введите следующую команду:

Вы можете включить службу и перезагрузить сервер после установки firewalld:

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

check firewall state FirewallD

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

Проверка настроек по умолчанию

Вы можете проверить зону, выбранную сервером, с помощью этой команды:

check firewall default zone

Проверьте активную зону, введя:

firewall active zones

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

list all rules FirewallD

Вывод указывает на то, что эта зона является одновременно зоной по умолчанию и активной зоной. Он также показывает, что интерфейсы eth0 и eth1 назначены этой зоне.

Проверка альтернативных зон

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

firewall check other zones

Проверьте конкретную конфигурацию, назначенную зоне, добавив параметр –zone= в команду –list-all:

check zone configuration FirewallD

 Изменение зоны интерфейса

Вы можете легко изменить зону интерфейса, используя параметр –change-interface в сочетании с параметром –change-interface. Следующая команда назначит интерфейс eth1 рабочей области:

Вы можете проверить изменения, введя:

changing firewall interface zones FirewallD

Изменение зоны по умолчанию

Чтобы изменить зону по умолчанию, используйте параметр –set-default-zone, за которым следует имя зоны, которую вы хотите установить по умолчанию. Например, чтобы изменить зону по умолчанию для начала, вам следует выполнить следующую команду:

Затем вы можете проверить изменения с помощью:

firewall change default zone

Настройка правил для ваших приложений

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

Добавление службы в ваши зоны

Самый простой способ — добавить нужные порты или службы в используемые зоны. Точно так же вы можете использовать параметр –get-services, чтобы просмотреть все доступные службы:

firewall get services FirewallD

Вы можете активировать службу для зоны с помощью параметра –add-service =. Действие нацелено на зону по умолчанию или любую зону, определенную параметром –zone =. По умолчанию настраивается только текущий сеанс брандмауэра. Вы можете настроить постоянную конфигурацию брандмауэра, активировав флаг –permanent. Например, если вы используете веб-сервер, который обслуживает обычный HTTP-трафик, вы можете разрешить этот трафик для интерфейсов в нашей зоне “public” для этого сеанса, введя:

Вы можете опустить –zone =, если хотите изменить зону по умолчанию. Вы можете проверить успешность операции с помощью операций –list-all или –list-services:

add service to zone

Убедившись, что все работает должным образом, вы, скорее всего, захотите изменить постоянные правила брандмауэра, чтобы ваша служба оставалась доступной после перезапуска. Мы можем внести изменения в нашу зону “public” на постоянной основе, введя следующий синтаксис:

Вы можете проверить, было ли это успешно, добавив флаг –permanent к операции –list-services. Вы должны использовать sudo для всех постоянных операций:

Теперь ваша зона “public” разрешает HTTP-трафик на порту 80. Вы можете добавить это в текущий сеанс и набор постоянных правил с помощью команды ниже:

Если нет служб, соответствующих вашим требованиям, у вас есть два отличных варианта решения этой ситуации:

  1. Открытие порта для ваших зон

Самый простой способ добавить поддержку вашего конкретного приложения — открыть порты, используемые в каждой зоне. Это так же просто, как указать порт или диапазон портов и соответствующий протокол для портов, которые вам нужно открыть. Например, если ваше приложение работает на порту 5000 и использует TCP, вы можете добавить его в зону “public” для этого сеанса с помощью параметра –add-port =. Протоколы могут быть TCP или UDP:

Чтобы убедиться, что операция прошла успешно, используйте операцию –list-ports:

Вы также можете указать диапазон для последовательного интерфейса, разделив начальный и конечный порты в диапазоне дефисом. Например, если ваше приложение использует UDP-порты с 4990 по 4999, вы можете открыть их в зоне “public”, написав:

После тестирования мы, вероятно, захотим добавить их в постоянный брандмауэр. Вы можете сделать это, введя следующее:

adding ports to permanent firewall

  1. Определение службы

Служба представляет собой набор портов с соответствующим именем и описанием. Службами управлять проще, чем портами, но это требует некоторой начальной работы. Самый простой способ начать работу — скопировать существующий скрипт (в / usr / lib / firewalld / services) в каталог /etc/firewalld/services. Например, вы можете скопировать определение службы SSH для использования в определении службы “example” следующим образом. Имя файла без суффикса XML определяет имя службы в списке служб межсетевого экрана:

На этом этапе вы можете скорректировать определение в скопированном файле:

Во-первых, файл содержит скопированное вами определение SSH:

Большая часть этого определения состоит из метаданных. Вы должны изменить краткое имя службы в тегах <short>. Это понятное имя службы. Представьте, что для нашей службы “example” нам нужно открыть порт 7777 для TCP и 8888 для UDP. Вы можете изменить существующее определение, войдя в режим INSERT, нажав i:

Затем нажмите ESC и введите :x, чтобы сохранить и закрыть файл. После этого введите команду ниже, чтобы перезапустить межсетевой экран и получить доступ к новой службе;

После этого используйте команду ниже, чтобы получить список доступных служб:

get services

Эта служба теперь доступна в вашей зоне.

Создание собственных зон

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

При добавлении зоны добавьте ее в постоянные настройки межсетевого экрана. Затем вы можете выполнить перезагрузку, чтобы применить настройки к вашему сеансу. Например, вы можете создать две зоны, упомянутые ранее, введя:

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

firewall zones

Перезапустите межсетевой экран, чтобы перевести эти новые зоны в активную конфигурацию:

Теперь вы можете назначить соответствующие службы и порты вашим зонам. Например, для зоны “publicweb” вы можете добавить службы SSH, HTTP и HTTPS:

list public web zone

 

Также вы можете добавить службу DNS в вашу зону “privateDNS”, используя эту команду:

list privateDNS zone FirewallD

Далее вы можете перевести свои интерфейсы в эти новые зоны, чтобы протестировать их:

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

 

После применения этих правил на постоянной основе вы можете перезапустить сеть и перезагрузить службу брандмауэра:

Убедитесь, что зоны были назначены правильно:

check active zones FirewallD

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

Если вы хотите установить одну из зон по умолчанию для других интерфейсов, вам необходимо настроить это поведение с помощью параметра –set-default-zone=, используя следующую команду:

Заключение

На данном этапе вы успешно создали свои собственные зоны. Теперь у вас должно быть базовое понимание администрирования службы firewalld в системе CentOS для повседневного использования. Хорошее понимание работы службы firewalld позволит вам в полной мере использовать ее возможности и гибкость.

Приятной работы!

 

author

Akshay Nagpal

Автор · CloudSigma

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

Комментарии

Комментариев пока нет. Будьте первым.