Un firewall è un modo per proteggere il tuo sistema dal traffico indesiderato proveniente da reti esterne. Gli strumenti firewall gratuiti e commerciali sono abbondanti; alcuni di questi includono Iptables, UFW, Juniper, pfSense, SonicWall e altri.
Tra questi, FirewallD è uno strumento software firewall gratuito per il sistema operativo CentOS/RHEL/Fedora. È un controller frontend per iptables e fornisce un'interfaccia a riga di comando per implementare le regole del firewall. Rispetto a Iptables, FirewallD utilizza zone e servizi invece di catene e regole e gestisce dinamicamente i set di regole. FirewallD fornisce lo strumento da riga di comando firewall-cmd per gestire il runtime e la configurazione permanente.
Caratteristiche
- Supporta il protocollo IPv4 e IPv6
- Elenco delle zone predefinite
- CLI e configurazione grafica
- API D-Bus completa
- Bridge Ethernet
- Semplice registro dei pacchetti negati
- Inserimento nella whitelist dell'applicazione
- Integrazione dei pupazzi
In questo tutorial impareremo come configurare il firewall con FirewallD su CentOS 8.
Prerequisiti
- Un nuovo CentOS 8 VPS sulla piattaforma Atlantic.Net Cloud
- Una password di root configurata sul tuo server
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo CentOS 8 come sistema operativo con almeno 1 GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al server CentOS 8, esegui il comando seguente per aggiornare il sistema di base con gli ultimi pacchetti disponibili.
dnf update -y
Passaggio 2:installa Firewalld
dnf install firewalld -y
Una volta installato, avvia il servizio FirewallD e abilitalo all'avvio al riavvio del sistema con il seguente comando:
systemctl start firewalld systemctl enable firewalld
Puoi anche verificare lo stato di FirewallD usando il seguente comando:
firewall-cmd --state
Uscita:
running
Fase 3:utilizzo di base di FirewallD
FirewallD gestisce un insieme di regole utilizzando le zone. Ogni zona ha la propria configurazione per accettare o rifiutare i pacchetti a seconda del livello di fiducia che hai nelle reti a cui è connesso il tuo computer.
Puoi elencare tutte le zone disponibili usando il seguente comando:
firewall-cmd --get-zones
Dovresti vedere il seguente elenco:
block dmz drop external home internal public trusted work
Per ottenere un elenco di tutte le zone attive, eseguire il comando seguente:
firewall-cmd --get-active-zones
Dovresti vedere il seguente elenco:
public interfaces: eth0 eth1
È possibile elencare la zona predefinita impostata per le connessioni di rete utilizzando il comando seguente:
firewall-cmd --get-default-zone
Uscita:
public
Per cambiare la zona predefinita da pubblica a casa utilizzando il seguente comando:
firewall-cmd --set-default-zone=home --permanent
Per visualizzare maggiori informazioni su qualsiasi zona utilizzando il seguente comando:
firewall-cmd --info-zone public
Dovresti ottenere il seguente output:
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:
Puoi anche elencare tutti i servizi disponibili eseguendo il comando seguente:
firewall-cmd --get-services
Dovresti ottenere il seguente output:
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
Fase 4:Consenti e Nega le porte con Firewalld
Firewalld fornisce uno strumento da riga di comando firewall-cmd per aggiungere e rimuovere porte nel tuo sistema.
Ad esempio, per consentire le porte TCP 80 e 22 nell'area pubblica, eseguire il comando seguente:
firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=22/tcp
Quindi, ricarica il demone FirewallD per salvare la configurazione:
firewall-cmd --reload
Ora, elenca la porta aggiunta con il seguente comando:
firewall-cmd --info-zone public
Dovresti vedere il seguente output:
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:
Puoi anche negare o rimuovere facilmente la porta dalla zona utilizzando l'opzione –remove-port.
Ad esempio, per negare o rimuovere la porta 80 dalla zona pubblica, eseguire il comando seguente:
firewall-cmd --zone=public --permanent --remove-port=80/tcp
Passaggio 5:Consenti e nega servizi con FirewallD
Puoi anche consentire e negare in base al nome del servizio invece di utilizzare una porta con FirewallD.
Ad esempio, consenti il servizio FTP nell'area pubblica eseguendo il comando seguente:
firewall-cmd --zone=public --permanent --add-service=ftp firewall-cmd --reload
Puoi negare o rimuovere il servizio FTP dall'area pubblica utilizzando il seguente comando:
:
firewall-cmd --zone=public --permanent --remove-service=ftp firewall-cmd --reload
Fase 6:imposta il mascheramento IP con FirewallD
Il masquerading IP è un processo o metodo che consente ai tuoi computer in una rete con indirizzi IP privati di comunicare con Internet utilizzando l'indirizzo del tuo server. È molto utile quando vuoi che un altro computer comunichi a Internet senza acquistare IP aggiuntivi dal tuo ISP.
Prima di configurare il masquerading IP, verificare se il masquerading è attivo o meno con il seguente comando:
firewall-cmd --zone=public --query-masquerade
Dovresti vedere che il mascheramento IP è disabilitato nella zona pubblica come mostrato di seguito:
no
Ora, imposta il masquerading IP usando il seguente comando:
firewall-cmd --zone=public --add-masquerade firewall-cmd --reload
Puoi anche disabilitare il mascheramento IP usando l'opzione –remove-masquerade:
firewall-cmd --zone=public --remove-masquerade firewall-cmd --reload
Conclusione
Nella guida sopra, hai imparato come utilizzare FirewallD per bloccare il traffico indesiderato nel tuo sistema. Ora dovresti essere in grado di limitare tutte le connessioni non necessarie e proteggere il tuo server dagli aggressori. Prova FirewallD su un VPS Atlantic.Net!