Администратор Linux - Настройка брандмауэра
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 | drop Низкий уровень доверия. Все входящие соединения и пакеты отбрасываются, и только исходящие соединения возможны через statefullness |
2 | block На входящие соединения отправляется сообщение icmp, информирующее инициатора о том, что запрос запрещен. |
3 | public Все сети ограничены. Однако выбранные входящие соединения могут быть явно разрешены |
4 | external Настраивает firewalld для NAT. Внутренняя сеть остается частной, но доступной |
5 | dmz Разрешены только определенные входящие соединения. Используется для систем в изоляции DMZ |
6 | work По умолчанию доверять большему количеству компьютеров в сети, предполагая, что система находится в защищенной рабочей среде. |
7 | hone По умолчанию больше сервисов не фильтруются. Предполагая, что система находится в домашней сети, где будут использоваться такие службы, как NFS, SAMBA и SSDP. |
8 | trusted Все машины в сети являются доверенными. Большинство входящих соединений разрешены без ограничений.This is not meant for interfaces exposed to the Internet |
Чаще всего используются следующие зоны: общественная, временная, рабочая и домашняя.
Некоторые сценарии, в которых будет использоваться каждая общая зона:
public- Это самая распространенная зона, используемая администратором. Это позволит вам применить пользовательские настройки и соблюдать спецификации RFC для операций в локальной сети.
drop- Хороший пример использования drop - это конференция по безопасности, общедоступная сеть Wi-Fi или интерфейс, подключенный напрямую к Интернету. drop предполагает, что все незапрошенные запросы являются злонамеренными, включая зонды ICMP. Поэтому ни один запрос за пределами штата не получит ответа. Обратной стороной отказа является то, что он может нарушить функциональность приложений в определенных ситуациях, требующих строгого соответствия RFC.
work- Вы находитесь в полузащищенной корпоративной локальной сети. Где весь трафик можно считать умеренно безопасным. Это означает, что это не Wi-Fi, и у нас, возможно, есть IDS, IPS и физическая безопасность или 802.1x. Мы также должны быть знакомы с людьми, использующими LAN.
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
Давайте снова сделаем общедоступной зоной по умолчанию .
[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 .
Команда | Действие |
---|---|
брандмауэр-cmd --get-зоны | Список всех зон, которые можно применить к интерфейсу. |
firewall-cmd —status | Возвращает текущий статус службы firewalld |
брандмауэр-cmd - get-default-zone | Получает текущую зону по умолчанию |
firewall-cmd --set-default-zone = <зона> | Устанавливает зону по умолчанию в текущий контекст |
брандмауэр-cmd --get-active-zone | Получает текущие зоны в контексте применительно к интерфейсу |
брандмауэр-cmd --zone = <зона> --list-all | Перечисляет конфигурацию поставляемой зоны |
firewall-cmd --zone = <зона> --addport = <порт / транспортный протокол> | Применяет правило порта к фильтру зоны |
- постоянный | Делает изменения в зоне постоянными. Флаг используется в командах модификации |
Это основные концепции администрирования и настройки firewalld .
Настройка служб межсетевого экрана на основе хоста в CentOS может быть сложной задачей в более сложных сетевых сценариях. Расширенное использование и настройка firewalld и iptables в CentOS может занять целое руководство. Однако мы представили основы, которых должно хватить для выполнения большинства повседневных задач.