🖧 Что такое FirewallD и как его реализовать в Linux — Information Security Squad
🖧 Что такое FirewallD и как его реализовать в Linux

Что такое Firewalld?

Firewalld — это решение для управления брандмауэром для многих дистрибутивов Linux, включая Ubuntu, Debian, CentOS, RHEL и Fedora.

Он действует как интерфейс для системы фильтрации iptables, предоставляемой ядром Linux.

Он не зависит от протокола, что означает, что он поддерживает IPv4, IPv6, мосты Ethernet и наборы IP.

Основная концепция Firewalld

FirewallD использует зоны и службы вместо цепочек и правил iptables.

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

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

Firewalld управляется с помощью инструмента командной строки firewall-cmd. Он предоставляет интерфейс для управления временем выполнения и постоянной настройкой.

Firewalld Зоны

В Firewalld есть 9 предопределенных зон в зависимости от уровня доверия в порядке возрастания.

Краткое объяснение каждой зоны показано ниже:

  • Drop: эта зона имеет наименьший уровень доверия и используется для удаления всего входящего трафика без отправки подтверждения отправителю.
  • Block: эта зона очень похожа на зону Drop, входящий трафик отклоняется, и отправитель получает сообщение.
  • Public: разрешает трафик из определенных общедоступных сетей.
  • External: эта зона используется, когда ваша система выступает в качестве шлюза или маршрутизатора.
  • Internal: набор правил, которые применяются к компьютерам в вашей частной внутренней сети.
  • DMZ: эта зона представляет собой изолированный доступ к компьютерам во внутренней сети, которые могут не иметь доступа к другим внутренним ресурсам.
  • Work: эта зона используется для рабочих машин. Уровень доверия высокий.
  • Home: большинство компьютеров в этой зоне доверяют друг другу. Уровень доверия выше work
  • Trusted: эта зона имеет самый высокий уровень доверия. Все компьютеры в сети являются доверенными.

Шаг 1 — Установка Firewalld

По умолчанию Firewalld предустановлен в большинстве операционных систем.

Но некоторые из минимальных установок ОС не включают его, так что если он не установлен, вы можете установить его с помощью следующей команды:

sudo yum install firewalld        # CentOS/RHEL 8/7/6 
sudo dnf install firewalld        # Fedora and CentOS/RHEL 8 
sudo apt install firewalld        # Ubuntu and Debian  

После установки firewalld вам нужно будет запустить его!

sudo systemctl start firewalld
sudo systemctl enable firewalld

Выполните следующую команду, чтобы проверить состояние firewalld

systemctl status firewalld
[или] 
firewall-cmd --state

Шаг 2 — Работа с зонами и сервисами

По умолчанию public является зоной по умолчанию в firewalld, и все сетевые интерфейсы настроены с этой зоной.

Вы можете узнать зону по умолчанию с помощью следующей команды:

firewall-cmd --get-default-zone

вывод:

public

Затем выполните следующую команду, чтобы получить список активных зон:

firewall-cmd --get-active-zones

Вы должны получить следующий вывод:

public
  interfaces: eth0 eth1

Чтобы получить список всех доступных зон, выполните следующую команду:

firewall-cmd --get-zones

Вы должны получить следующий вывод:

block dmz drop external home internal public trusted work
Вы можете получить список всех служб, связанных с public зоной, с помощью следующей команды:
firewall-cmd --list-all

Вы должны получить следующий вывод:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
Чтобы изменить зону по умолчанию с public на work, выполните следующую команду:
firewall-cmd --set-default-zone=work

Теперь вы можете проверить зону по умолчанию с помощью следующей команды:

firewall-cmd --get-default-zone

Вывод:

work

Вы можете получить список всех доступных служб в вашей системе с помощью следующей команды:

firewall-cmd --get-services

Вы должны получить следующий вывод:

RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

Шаг 3 — Разрешаем и запрещаем слуюбы в Firewalld

Вы можете разрешить и запретить входящий трафик на основе предопределенных сервисов в firewalld.

Например, чтобы разрешить весь входящий трафик для службы http в  public зоне, выполните следующую команду:

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

Вывод:

success
Чтобы разрешить входящий трафик для службы ftp в public зоне, выполните следующую команду:
firewall-cmd --zone=public --add-service=ftp
Вывод:
success

Приведенная выше команда добавит службы http и ftp временно, и правила не сохраняться при перезагрузке.

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

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=ftp

Затем выполните следующую команду для реализации изменений:

firewall-cmd --reload

Теперь вы можете получить список добавленных сервисов с помощью следующей команды:

firewall-cmd --permanent --zone=public --list-services

Вы должны увидеть следующий вывод:

cockpit dhcpv6-client ftp http ssh

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

firewall-cmd --info-zone public
 Вывод:
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources: 
  services: cockpit dhcpv6-client ftp http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

Если вы хотите удалить / запретить вышеперечисленные сервисы из firewalld, используйте параметр —remove-service:

firewall-cmd --permanent --zone=public --remove-service=http
firewall-cmd --permanent --zone=public --remove-service=ftp
Затем выполните следующую команду, чтобы применить изменения:
firewall-cmd --reload

Шаг 4 — Разрешаем и запрещаем порты в Firewalld

Вы также можете разрешить и запретить входящий трафик на основе портов в firewalld.

Например, чтобы запретить весь входящий трафик через порты 8080 и 443, выполните следующую команду:

firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=8080/tcp

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

firewall-cmd --reload

Затем проверьте добавленные порты с помощью следующей команды:

firewall-cmd --permanent --zone=public --list-ports

Вывод:

443/tcp 8080/tcp

Аналогичным образом удалите / запретите перечисленные выше порты из firewalld, используйте параметр -remove-port:

firewall-cmd --permanent --zone=public --remove-port=443/tcp
firewall-cmd --permanent --zone=public --remove-port=8080/tcp

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

firewall-cmd --reload

Шаг 5 — Переадресация портов ( проброс ) с помощью Firewalld

Переадресация портов — это процесс, который перенаправляет запрос от комбинации IP / порт и перенаправляет его на другой IP и / или порт.

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

Перед настройкой переадресации портов необходимо активировать маскарад в нужной зоне. Вы можете активировать его с помощью опции —add-masquerade:

firewall-cmd --zone=public --add-masquerade
Затем для пересылки трафика с порта 80 на порт 8080 на том же сервере выполните следующую команду:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080

Если вы хотите перенаправить трафик с локального порта 80 на порт 8080 на удаленном сервере с IP-адресом 192.168.1.200, выполните следующую команду:

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200

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

firewall-cmd --reload

Если вы хотите удалить вышеуказанные правила, замените –add на –remove, как показано ниже:

firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200
firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080

Заключение

В приведенном выше руководстве вы узнали основную концепцию Firewalld и ее реализацию в операционной системе Linux.

Я надеюсь, что теперь вы можете ограничить ненужный входящий трафик с помощью firewalld.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *