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

 (online network tools and utilities) |
| |