NetTOOLSLib home page

GoУстановка и конфигурирование FirewallD на CentOS 7

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

Основные понятия в FirewallD
Прежде чем мы начнем говорить о том, как использовать утилиту firewall-cmd для управления настройкой брандмауэра, мы должны ознакомиться с несколькими базовыми понятиями.

FirewallD управляет группами правил, используя объекты, называемые «зонами».
Зоны - это в основном набор правил, определяющих, какой трафик должен быть разрешен в зависимости от уровня доверия, который у вас есть в сетях, к которым подключен ваш компьютер.
Сетевым интерфейсам назначается зона, определяющая поведение, которое должен разрешить брандмауэр.

Список всех допустимых зон по-умолчанию:

drop: самый низкий уровень доверия. Все входящие соединения удаляются без ответа и возможны только исходящие соединения.
block: входящие запросы отклоняются с сообщением icmp-host-forbidden или icmp6-adm-forbidden.
public: общедоступные, ненадежные сети. Вы не доверяете другим компьютерам, но можете разрешать выбранные входящие соединения в каждом конкретном случае.
external: внешние сети в том случае, если вы используете брандмауэр в качестве шлюза. Используется для внешнего интерфейса маршрутизатора
internal: внутренние сети. компьютеры заслуживают доверия.
dmz: для ресурсов, расположенных в DMZ (изолированные ресурсы, у которых не будет доступа к остальной сети). Разрешены только определенные входящие соединения.
work: рабочие компьютеры. разрешены только определенные входящие подключения.
home: домашняя зона. Доверие большинству компьютеров, но разрешены только определенные входящие подключения
trusted: полное доверие всем машинам в сети.

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

В FirewallD правила могут быть обозначены как постоянными, так и временными. Постоянные правила используют флаг -permanent их действие сохраняется после перезагрузки системы, иначе при следующей загрузке правила будут отменены.

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

FirewallD устанавливается по умолчанию во многих дистрибутивах Linux, включая CentOS 7. Если FirewallD не установлен, вам может понадобиться установить FirewallD самостоятельно:


#yum install firewalld



Запуск и остановка FirewallD

Проверка состояния FirewallD:


# systemctl status firewalld



Остановка FirewallD:


# systemctl stop firewalld



Запрет автостарта:


# systemctl disable firewalld



Запуск FirewallD:


# systemctl start firewalld



Включение автостарта:


# systemctl enable firewalld



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


#firewall-cmd --stat



Получение данных о действующих правилах брандмауэра

Список всех допустимых зон по-умолчанию:


# firewall-cmd --get-zones

block dmz drop external home internal public trusted work



Список всех активных зон


#firewall-cmd --get-active-zones

public
interfaces: enp0s25




Определение, к какой зоне принадлежит интерфейс (в примере enp0s25)


#firewall-cmd --get-zone-of-interface=enp0s25

public



Какие интерфейсы принадлежат конкретной зоне:


#firewall-cmd --zone=public --list-interfaces

enp0s25



Мы можем видеть конкретную конфигурацию, связанную с зоной, включая параметр -zone= в нашей команде --list-all:


#firewall-cmd --zone=home --list-all

home
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:




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

Вы можете перевести интерфейс между зонами во время сеанса, используя параметр -zone = в сочетании с параметром --change-interface=.
Для выполнения всех команд, которые изменяют брандмауэр, вам нужны будут права администратора.

Например, мы можем перевести наш enp0s25-интерфейс в «домашнюю» зону, набрав это:


#firewall-cmd --zone=home --change-interface=enp0s25

success



Проверка зоны home


#firewall-cmd --zone=home --list-all

home
interfaces: enp0s25
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:




Правила для ваших приложений

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


#firewall-cmd --get-services

amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server



Вы можете получить более подробную информацию о каждом из этих сервисов, просмотрев связанный с ними .xml-файл в каталоге /usr/lib/firewalld/services
Например, если мы используем веб-сервер, обслуживающий обычный HTTP и HTTPS, мы можем разрешить этот трафик для интерфейсов в нашей «public» зоне для этого сеанса, набрав:


#firewall-cmd --zone=public --add-service=http

success

#firewall-cmd --zone=public --add-service=https

success



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

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

Пример: мы можем взять определение службы HTTPS, скопировать его для создания своего определения службы. Имя файла с суффиксом .xml будет определять имя службы в списке служб брандмауэра:


#cp /usr/lib/firewalld/services/https.xml /etc/firewalld/services/myservice.xml


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


#vi /etc/firewalld/services/myservice.xml


Для начала файл будет содержать определение HTTPS, которое вы скопировали:

<?xml version="1.0" encoding="utf-8"?>
<service>
<short>MyService</short>
<description>HTTPS is a modified HTTP used to serve Web pages when security is important. Examples are sites that require logins like stores or web mail. This option is not required for viewing pages locally or developing Web pages. You need the httpd package installed for this option to be useful.</description>
<port protocol="tcp" port="443"/>
</service>


Описание файла интуитивно понятно:
<short> </short> - Простое имя сервиса
<description> </description> - Описание сервиса
<port> </port> - протокол и порт сервиса


/etc/firewalld/services/myservice.xml
<? xml version = "1.0" encoding = "utf-8"?>
<service>
<short>MyService</short>
<description>MyService</ Description>
<port protocol="tcp" port="10443" />
</service>


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


#firewall-cmd --reload

success


Вы можете видеть, что теперь он входит в список доступных сервисов:


firewall-cmd -get-services

amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt myservice mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server



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

FirewallD позволяет создавать свои собственные зоны.
Например, вы можете создать зону для своего веб-сервера под названием «myweb».
Однако вам может потребоваться настроить другую зону для службы FTP, которую вы предоставляете в своей частной сети. Для этого вам может понадобиться зона, называемая «myprivateFTP».

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


#firewall-cmd --permanent --new-zone = myweb
#firewall-cmd --permanent --new-zone = myprivateFTP


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


#firewall-cmd --permanent --get-zons

block dmz drop external home internal myprivateFTP myweb public trusted work


Перезагрузите брандмауэр, чтобы включить эти новые зоны в активную конфигурацию:

#firewall-cmd --reload

success



Заключение

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

Go


NetTOOLSLib home page
(online network tools and utilities)