Firewall je způsob, jak chránit váš systém před nežádoucím provozem z vnějších sítí. Bezplatných a komerčních firewallových nástrojů je spousta; některé z nich zahrnují Iptables, UFW, Juniper, pfSense, SonicWall a další.
Mezi nimi FirewallD je bezplatný softwarový nástroj brány firewall pro operační systém CentOS/RHEL/Fedora. Je to frontendový řadič pro iptables a poskytuje rozhraní příkazového řádku pro implementaci pravidel brány firewall. Ve srovnání s Iptables používá FirewallD zóny a služby místo řetězců a pravidel a dynamicky spravuje sady pravidel. FirewallD poskytuje nástroj příkazového řádku firewall-cmd pro správu běhového prostředí a trvalé konfigurace.
Funkce
- Podpora protokolů IPv4 a IPv6
- Předdefinovaný seznam zón
- CLI a grafická konfigurace
- Kompletní rozhraní D-Bus API
- Ethernetové přemostění
- Jednoduchý protokol odmítnutých paketů
- Přidání na seznam povolených aplikací
- Integrace loutek
V tomto tutoriálu se naučíme, jak nastavit firewall s FirewallD na CentOS 8.
Předpoklady
- Nový CentOS 8 VPS na cloudové platformě Atlantic.Net
- Heslo uživatele root nakonfigurované na vašem serveru
Krok 1:Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte CentOS 8 s alespoň 1 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte k serveru CentOS 8, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
dnf update -y
Krok 2:Nainstalujte Firewalld
dnf install firewalld -y
Po instalaci spusťte službu FirewallD a povolte její spuštění při restartu systému pomocí následujícího příkazu:
systemctl start firewalld systemctl enable firewalld
Stav brány FirewallD můžete také ověřit pomocí následujícího příkazu:
firewall-cmd --state
Výstup:
running
Krok 3:Základní použití FirewallD
FirewallD spravuje sadu pravidel pomocí zón. Každá zóna má svou vlastní konfiguraci pro přijímání nebo odmítání paketů v závislosti na úrovni důvěry v sítě, ke kterým je váš počítač připojen.
Všechny dostupné zóny můžete vypsat pomocí následujícího příkazu:
firewall-cmd --get-zones
Měli byste vidět následující seznam:
block dmz drop external home internal public trusted work
Chcete-li získat seznam všech aktivních zón, spusťte následující příkaz:
firewall-cmd --get-active-zones
Měli byste vidět následující seznam:
public interfaces: eth0 eth1
Výchozí sadu zón pro síťová připojení můžete vypsat pomocí následujícího příkazu:
firewall-cmd --get-default-zone
Výstup:
public
Chcete-li změnit výchozí zónu z veřejné na domácí, použijte následující příkaz:
firewall-cmd --set-default-zone=home --permanent
Chcete-li zobrazit další informace o jakékoli zóně, použijte následující příkaz:
firewall-cmd --info-zone public
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:
Můžete také zobrazit seznam všech dostupných služeb spuštěním 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 kube-apiserver 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 4:Povolení a zakázání portů pomocí brány firewall
Firewalld poskytuje nástroj příkazového řádku firewall-cmd pro přidávání a odebírání portů ve vašem systému.
Chcete-li například povolit porty TCP 80 a 22 ve veřejné zóně, spusťte následující příkaz:
firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=22/tcp
Poté znovu načtěte démona FirewallD a uložte konfiguraci:
firewall-cmd --reload
Nyní vypište přidaný port pomocí následujícího příkazu:
firewall-cmd --info-zone public
Měli byste vidět následující výstup:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: 80/tcp 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Port můžete také snadno zakázat nebo odebrat ze zóny pomocí volby –remove-port.
Chcete-li například zakázat nebo odebrat port 80 z veřejné zóny, spusťte následující příkaz:
firewall-cmd --zone=public --permanent --remove-port=80/tcp
Krok 5:Povolení a zakázání služeb pomocí FirewallD
Místo použití portu s FirewallD můžete také povolit a zakázat podle názvu služby.
Například povolte službu FTP ve veřejné zóně spuštěním následujícího příkazu:
firewall-cmd --zone=public --permanent --add-service=ftp firewall-cmd --reload
Službu FTP můžete zakázat nebo odebrat z veřejné zóny pomocí následujícího příkazu:
:
firewall-cmd --zone=public --permanent --remove-service=ftp firewall-cmd --reload
Krok 6:Nastavení maskování IP pomocí FirewallD
Masquerading IP je proces nebo metoda, která umožňuje vašim počítačům v síti se soukromými adresami IP komunikovat s internetem pomocí adresy vašeho serveru. Je to velmi užitečné, když chcete, aby jiný počítač komunikoval s Internetem, aniž byste si kupovali další IP adresy od vašeho ISP.
Před nastavením maskování IP zkontrolujte, zda je maskování aktivní nebo ne, pomocí následujícího příkazu:
firewall-cmd --zone=public --query-masquerade
Měli byste vidět, že maskování IP je ve veřejné zóně zakázáno, jak je znázorněno níže:
no
Nyní nastavte maskování IP pomocí následujícího příkazu:
firewall-cmd --zone=public --add-masquerade firewall-cmd --reload
Maskování IP můžete také zakázat pomocí volby –remove-masquerade:
firewall-cmd --zone=public --remove-masquerade firewall-cmd --reload
Závěr
Ve výše uvedené příručce jste se naučili používat FirewallD k blokování nežádoucího provozu ve vašem systému. Nyní byste měli být schopni omezit všechna nepotřebná připojení a chránit váš server před útočníky. Vyzkoušejte FirewallD na Atlantic.Net VPS!