Учебники

Linux Admin — Настройка брандмауэра

firewalld — это интерфейсный контроллер по умолчанию для iptables в CentOS. Интерфейс Firewalld имеет два основных преимущества по сравнению с необработанными iptables —

  • Использует простые в настройке и реализации зоны, абстрагирующие цепочки и правила.

  • Наборы правил являются динамическими, то есть соединения с состоянием не прерываются при изменении и / или изменении настроек.

Использует простые в настройке и реализации зоны, абстрагирующие цепочки и правила.

Наборы правил являются динамическими, то есть соединения с состоянием не прерываются при изменении и / или изменении настроек.

Помните, firewalld — это оболочка для iptables, а не замена. Хотя пользовательские команды iptables можно использовать с firewalld , рекомендуется использовать firewalld, чтобы не нарушать функциональность брандмауэра.

Во-первых, давайте удостоверимся, что firewalld запущен и включен.

[root@CentOS rdc]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon 
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago 
 Docs: man:firewalld(1) 
Main PID: 712 (firewalld) 
  Memory: 34.7M 
 CGroup: /system.slice/firewalld.service 
       └─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Мы можем видеть, что firewalld активен (для запуска при загрузке) и работает в данный момент. Если неактивен или не запущен, мы можем использовать —

systemctl start firewalld && systemctl enable firewalld

Теперь, когда мы настроили наш сервис firewalld, давайте убедимся, что он работает.

[root@CentOS]# firewall-cmd --state 
running 
[root@CentOS]#

Как видим, сервис firewalld полностью функционален.

Firewalld работает над концепцией зон . Зона применяется к сетевым интерфейсам через Network Manager. Мы обсудим это при настройке сети . Но сейчас, по умолчанию, изменение зоны по умолчанию изменит любые сетевые адаптеры, оставленные в состоянии по умолчанию «Зона по умолчанию».

Давайте кратко рассмотрим каждую зону, выходящую из коробки с firewalld .

Sr.No. Зона и описание
1

падение

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

2

блок

На входящие соединения приходит сообщение icmp, информирующее инициатора о том, что запрос запрещен

3

общественности

Все сети ограничены. Тем не менее, выбранные входящие соединения могут быть явно разрешены

4

внешний

Настраивает firewalld для NAT. Внутренняя сеть остается частной, но достижимой

5

ДМЗ

Разрешены только определенные входящие соединения. Используется для систем в изоляции DMZ

6

Работа

По умолчанию доверяют большему количеству компьютеров в сети, если система находится в защищенной рабочей среде.

7

затачивать

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

8

доверенный

Все машины в сети являются доверенными. Большинство входящих соединений разрешено беспрепятственно. Это не предназначено для интерфейсов, открытых для Интернета

падение

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

блок

На входящие соединения приходит сообщение icmp, информирующее инициатора о том, что запрос запрещен

общественности

Все сети ограничены. Тем не менее, выбранные входящие соединения могут быть явно разрешены

внешний

Настраивает firewalld для NAT. Внутренняя сеть остается частной, но достижимой

ДМЗ

Разрешены только определенные входящие соединения. Используется для систем в изоляции DMZ

Работа

По умолчанию доверяют большему количеству компьютеров в сети, если система находится в защищенной рабочей среде.

затачивать

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

доверенный

Все машины в сети являются доверенными. Большинство входящих соединений разрешено беспрепятственно. Это не предназначено для интерфейсов, открытых для Интернета

Наиболее распространенными зонами для использования являются: общедоступная, дропа, работа и дом.

Вот некоторые сценарии, в которых будет использоваться каждая общая зона:

  • public — это самая распространенная зона, используемая администратором. Это позволит вам применять пользовательские настройки и соблюдать спецификации RFC для операций в локальной сети.

  • drop — хороший пример использования drop на конференции по безопасности, в общедоступном WiFi или на интерфейсе, подключенном напрямую к Интернету. drop предполагает, что все нежелательные запросы являются вредоносными, включая ICMP-зонды. Таким образом, любой запрос за пределами штата не получит ответ. Недостатком является то, что он может нарушить функциональность приложений в определенных ситуациях, требующих строгого соответствия RFC.

  • работа — Вы находитесь в полубезопасной корпоративной локальной сети. Где весь трафик можно считать умеренно безопасным. Это означает, что это не WiFi, и у нас, возможно, есть IDS, IPS и физическая безопасность или 802.1x. Мы также должны быть знакомы с людьми, использующими локальную сеть.

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

public — это самая распространенная зона, используемая администратором. Это позволит вам применять пользовательские настройки и соблюдать спецификации RFC для операций в локальной сети.

drop — хороший пример использования drop на конференции по безопасности, в общедоступном WiFi или на интерфейсе, подключенном напрямую к Интернету. drop предполагает, что все нежелательные запросы являются вредоносными, включая ICMP-зонды. Таким образом, любой запрос за пределами штата не получит ответ. Недостатком является то, что он может нарушить функциональность приложений в определенных ситуациях, требующих строгого соответствия RFC.

работа — Вы находитесь в полубезопасной корпоративной локальной сети. Где весь трафик можно считать умеренно безопасным. Это означает, что это не WiFi, и у нас, возможно, есть IDS, IPS и физическая безопасность или 802.1x. Мы также должны быть знакомы с людьми, использующими локальную сеть.

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

Зоны и сетевые интерфейсы работают на уровне один ко многим. К одному сетевому интерфейсу одновременно может быть применена только одна зона. В то время как зона может быть применена ко многим интерфейсам одновременно.

Давайте посмотрим, какие зоны доступны и какие зоны применяются в данный момент.

[root@CentOS]# firewall-cmd --get-zones 
 work drop internal external trusted home dmz public block

[root@CentOS]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

Готовы добавить некоторые пользовательские правила в firewalld?

Во-первых, давайте посмотрим, как выглядит наша коробка для сканера портов снаружи.

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1
 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00046s latency). 
Not shown: 1023 filtered ports 
PORT   STATE SERVICE 
22/tcp open  ssh


Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds 
bash-3.2#

Давайте разрешим входящие запросы на порт 80.

Сначала проверьте, какая зона применяется по умолчанию.

[root@CentOs]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

Затем установите правило, разрешающее порт 80 для текущей зоны по умолчанию.

[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp 
success
[root@CentOS]#

Теперь давайте отметим наш флажок после разрешения подключения к порту 80.

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1

Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00053s latency). 
Not shown: 1022 filtered ports 
PORT   STATE  SERVICE 
22/tcp open   ssh 
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds 
bash-3.2#

Это теперь позволяет незапрошенный трафик до 80.

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

[root@CentOS]# firewall-cmd --set-default-zone=drop 
success

[root@CentOS]# firewall-cmd --get-default-zone 
drop

[root@CentOs]#

Теперь давайте просканируем хост с сетевым интерфейсом в более безопасной зоне.

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00094s latency). 
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered

Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds 
bash-3.2#

Теперь все отфильтровано снаружи.

Как показано ниже, хост не будет даже отвечать на запросы проверки связи ICMP, когда находится в состоянии сброса .

bash-3.2# ping 10.211.55.1 
PING 10.211.55.1 (10.211.55.1): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

Давайте снова установим зону по умолчанию на public .

[root@CentOs]# firewall-cmd --set-default-zone=public 
success

[root@CentOS]# firewall-cmd --get-default-zone 
public

[root@CentOS]#

Теперь давайте проверим наш текущий набор правил фильтрации публично .

[root@CentOS]# firewall-cmd --zone=public --list-all 
public (active) 
target: default 
icmp-block-inversion: no 
interfaces: enp0s5 
sources:  
services: dhcpv6-client ssh 
ports: 80/tcp 
protocols:  
masquerade: no 
forward-ports:  
sourceports:  
icmp-blocks:  
rich rules:

[root@CentOS rdc]#

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

Скоро мы настроим демон httpd , поэтому давайте сделаем наши изменения постоянными —

[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

[root@CentOS]# systemctl restart firewalld

[root@CentOS]#

Теперь наше правило порта 80 в общедоступной зоне сохраняется при перезагрузках и перезапусках службы.

Ниже приведены общие команды firewalld, применяемые с firewall-cmd .

команда действие
firewall-cmd —get-zone Перечисляет все зоны, которые могут быть применены к интерфейсу
firewall-cmd — статус Возвращает текущий статус службы firewalld
firewall-cmd —get-default-zone Получает текущую зону по умолчанию
firewall-cmd —set-default-zone = <зона> Устанавливает зону по умолчанию в текущий контекст
firewall-cmd —get-active-zone Получает текущие зоны в контексте применительно к интерфейсу
firewall-cmd —zone = <зона> —list-all Перечисляет конфигурацию предоставленной зоны
firewall-cmd —zone = <зона> —addport = <порт / транспортный протокол> Применяет правило порта к фильтру зоны
—permanent Делает изменения в зоне постоянными. Флаг используется inline с командами модификации

Это основные понятия администрирования и настройки firewalld .

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