Firewall

Описание

  • Весь сетевой трафик обрабатывается ядром с помощью netfilter

  • Netfilter руководствуется набором правил, который задается с помощью nftables (iptables до RHEL 8)

  • Так как nftables сложен в настройке, для него используется демон firewalld

  • nftables доступен для непосредственной настройки, но не рекомендуется

Компоненты firewalld:

  • Сервис (service) - XML файл, который содержит список портов, которые должны быть открыты для сервиса systemd, а также модули ядра, необходимые для загрузки, при открытии доступа к сервису systemd

  • Зона (zone) - конфигурация по-умолчанию, к которой могут быть привязаны сетевые адаптеры, для назначения специфичных настроек

    • По сути эти настройки определяют поведение на интерфейсах для внешних и внутренних сетей

  • Порт (port) - опциональные элементы, определяющие доступ к определенным портам

    • Не рекомендуется открывать просто порты, лучше делать это в привязке к конкретному сервису

[root@centos8 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 3000/tcp 8080/tcp
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

В данном примере:

  • public (active) - текущая зона и ее статус

  • interfaces - интерфейс в этой зоне

  • services - службы, для которых есть правило в этой зоне

  • ports - открытые порты

Настройка firewall-cmd

  • firewall-cmd - утилита для изменения настроек фаерволла

  • Для применения настроек с сохранением после перезагрузки необходимо использовать ключ --permanent

  • Посмотреть различные параметры можно через --get-

[root@centos8 ~]# firewall-cmd --get-
--get-active-zones        --get-helpers             --get-log-denied          --get-zone-of-interface=
--get-default-zone        --get-icmptypes           --get-services            --get-zones
--get-description         --get-ipset-types         --get-short               
[root@centos8 ~]# 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 s
amba-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
[root@centos8 ~]# firewall-cmd --get-zones
block dmz drop external home internal libvirt public trusted work
  • firewall-cmd --add-service <service_name> - добавляет сервис в правила

[root@centos8 ~]# firewall-cmd --add-service ftp
success
[root@centos8 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ftp ssh
  ports: 3000/tcp 8080/tcp
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  • Необходимо не забывать о флаге --permanent

  • После изменения настроек firewall-cmd необходимо перезагрузить

[root@centos8 ~]# firewall-cmd --add-service ftp --permanent
success
[root@centos8 ~]# firewall-cmd --reload
success

Использование firewall-config

  • firewall-config - утилита для настройки фаерволла при помощи GUI

  • Не входит в стандартный набор и требует установки из официального репозитория

Last updated