Co je brána firewall?
Firewalld je řešení pro správu firewallu pro mnoho distribucí Linuxu včetně Ubuntu, Debian, CentOS, RHEL a Fedora. Funguje jako frontend pro systém filtrování iptables poskytovaný linuxovým jádrem. Je nezávislý na protokolu, což znamená, že podporuje IPv4, IPv6, ethernetové mosty a sady IP.
Základní koncept brány firewall
FirewallD používá zóny a služby místo řetězce a pravidel iptables. Zóny jsou sada pravidel, která určují, jaký provoz by měl být povolen v závislosti na úrovni důvěry, kterou máte v síti, ke které jsou připojeny vaše počítače. Síťovým rozhraním byla přiřazena zóna, která určuje chování, které by měl firewall povolit.
Firewalld je spravován pomocí nástroje příkazového řádku firewall-cmd. Poskytuje rozhraní pro správu runtime a trvalou konfiguraci.
Zóny brány firewall
Firewalld má 9 předdefinovaných zón v závislosti na úrovni důvěry ve vzestupném pořadí.
Stručné vysvětlení každé zóny je vysvětleno níže:
- Vypustit: Tato zóna má nejnižší úroveň důvěry a používá se k odstranění veškerého příchozího provozu bez odeslání potvrzení odesílateli.
- Blokovat: Tato zóna je velmi podobná zóně Drop, příchozí provoz je odmítnut a odesílatel obdrží zprávu.
- Veřejné: Umožňuje provoz z určitých veřejných sítí.
- Externí: Tato zóna se používá, když váš systém funguje jako brána nebo směrovač.
- Interní: Sada pravidel, která platí pro počítače ve vaší soukromé interní síti.
- DMZ: Tato zóna je izolovaná záplata počítačů ve vaší interní síti, která nemusí mít přístup k jiným interním zdrojům.
- Práce: Tato zóna se používá pro pracovní stroje. Úroveň důvěry je vysoká.
- Domů: Většina počítačů v této zóně si navzájem důvěřuje. Úroveň důvěry je vyšší než práce.
- Důvěryhodný : Tato zóna má nejvyšší úroveň důvěryhodnosti. Všechny počítače v síti jsou důvěryhodné.
Krok 1 – Instalace brány firewall
Ve výchozím nastavení je brána firewall předinstalovaná na většině operačních systémů. Některé minimální instalace OS však nezahrnují. Pokud není nainstalován, můžete jej nainstalovat pomocí následujícího příkazu:
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
Po instalaci firewallu budete muset spustit a povolit jeho spuštění po restartu systému.
sudo systemctl start firewalld sudo systemctl enable firewalld
Spuštěním následujícího příkazu ověřte stav brány firewall
systemctl status firewalld [OR] firewall-cmd --state
Krok 2 – Práce se zónami a službami
Ve výchozím nastavení je veřejná výchozí zóna brány firewall a všechna síťová rozhraní jsou nakonfigurována s veřejnou zónou. Výchozí zónu můžete vypsat pomocí následujícího příkazu:
firewall-cmd --get-default-zone
Výstup:
public
Poté spusťte následující příkaz, abyste získali seznam aktivních zón:
firewall-cmd --get-active-zones
Měli byste získat následující výstup:
public interfaces: eth0 eth1
Chcete-li získat seznam všech dostupných zón, spusťte následující příkaz:
firewall-cmd --get-zones
Měli byste získat následující výstup:
block dmz drop external home internal public trusted work
Všechny služby spojené s veřejnou zónou můžete vypsat pomocí následujícího příkazu:
firewall-cmd --list-all
Měli byste získat následující výstup:
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:
Chcete-li změnit výchozí zónu z veřejné na pracovní, spusťte následující příkaz:
firewall-cmd --set-default-zone=work
Nyní můžete ověřit svou výchozí zónu pomocí následujícího příkazu:
firewall-cmd --get-default-zone
Výstup:
work
Seznam všech dostupných služeb ve vašem systému můžete získat pomocí následujícího příkazu:
firewall-cmd --get-services
Měli byste získat následující výstup:
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
Krok 3 – Povolení a zakázání služeb v bráně Firewalld
Můžete povolit a zakázat příchozí provoz na základě předdefinovaných služeb ve firewallu.
Chcete-li například povolit veškerý příchozí provoz pro službu http ve veřejné zóně, spusťte následující příkaz:
firewall-cmd --zone=public --add-service=http
Výstup:
success
Chcete-li povolit příchozí provoz pro službu ftp ve veřejné zóně, spusťte následující příkaz:
firewall-cmd --zone=public --add-service=ftp
Výstup:
success
Výše uvedený příkaz přidá službu http a ftp dočasně a není trvalá při restartu. Budete muset použít --permanent
možnost, aby byly trvalé, jak je uvedeno níže:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=ftp
Dále spusťte následující příkaz k implementaci změn:
firewall-cmd --reload
Nyní můžete získat seznam přidaných služeb pomocí následujícího příkazu:
firewall-cmd --permanent --zone=public --list-services
Měli byste vidět následující výstup:
cockpit dhcpv6-client ftp http ssh
Můžete také zkontrolovat podrobné informace o veřejné zóně pomocí následujícího příkazu:
firewall-cmd --info-zone public
Výstup:
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:
Pokud chcete odstranit/zakázat výše uvedené služby z brány firewall, použijte --remove-service
možnost:
firewall-cmd --permanent --zone=public --remove-service=http firewall-cmd --permanent --zone=public --remove-service=ftp
Dále spusťte následující příkaz a použijte změny:
firewall-cmd --reload
Krok 4 – Povolení a zakázání portů v bráně Firewalld
Můžete také povolit a zakázat příchozí provoz na základě portu ve firewalld.
Například povolte veškerý příchozí provoz na portech 8080 a 443, spusťte následující příkaz:
firewall-cmd --permanent --zone=public --add-port=443/tcp firewall-cmd --permanent --zone=public --add-port=8080/tcp
Dále spusťte následující příkaz a použijte změny:
firewall-cmd --reload
Dále ověřte přidané porty pomocí následujícího příkazu:
firewall-cmd --permanent --zone=public --list-ports
Výstup:
443/tcp 8080/tcp
Podobně odeberte/zakažte výše uvedené porty z firewallu, použijte volbu –remove-port:
firewall-cmd --permanent --zone=public --remove-port=443/tcp firewall-cmd --permanent --zone=public --remove-port=8080/tcp
Dále spusťte následující příkaz a použijte změny:
firewall-cmd --reload
Krok 5 – Přesměrování portů pomocí brány firewall
Přesměrování portů je proces, který přesměruje požadavek z kombinace IP/port a přesměruje jej na jinou IP a/nebo port. Tato technika umožňuje vzdáleným počítačům připojit se ke konkrétní službě v rámci privátní sítě.
Před konfigurací přesměrování portů musíte aktivovat maškarádu v požadované zóně. Můžete jej aktivovat pomocí --add-masquerade
možnost:
firewall-cmd --zone=public --add-masquerade
Dále, chcete-li přesměrovat provoz z portu 80 na port 8080 na stejném serveru, spusťte následující příkaz:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
Pokud chcete přesměrovat provoz z místního portu 80 na port 8080 na vzdáleném serveru s IP adresou 192.168.1.200, spusťte následující příkaz:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.200
Dále spusťte následující příkaz a použijte změny:
firewall-cmd --reload
Pokud chcete odstranit výše uvedená pravidla, nahraďte –add – –remove, jak je znázorněno níže:
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
Závěr
Ve výše uvedené příručce jste se naučili základní koncept brány firewall a jak jej implementovat v operačním systému Linux. Doufám, že nyní můžete omezit zbytečný příchozí provoz pomocí brány firewall.