Firewalld ha sostituito iptables come firewall per le distribuzioni basate su RHEL. La sintassi utilizzata da firewalld è più user-friendly. Questo post mostra come assicurarsi che firewalld sia in esecuzione e si avvii all'avvio del server. Ti mostra anche come creare regole firewall persistenti e flessibili.
Nota :Anche Red Hat®, CentOS®, Alma Linux®, Rocky Linux® utilizza firewalld, quindi tutti i comandi in questo articolo funzionano anche nelle immagini basate su RHEL che Rackspace ha a disposizione.
Concetti di base del firewall
Firewalld utilizza zone per gestire gruppi di regole. Le zone sono collegate alle interfacce di rete e determinano quale traffico è consentito su una rete specifica e quale traffico è negato.
Questa funzionalità potrebbe essere utile se desideri stabilire un firewall molto rigoroso sulla tua interfaccia pubblica e un firewall più rilassato sull'interfaccia CloudNetwork. È utile acquisire familiarità con le zone predefinite da firewall. Firewalld ha le seguenti zone predefinite, in ordine dalla meno affidabile alla più affidabile:
drop
:Questa zona consente solo connessioni in uscita. Elimina le connessioni in entrata senza risposta.block
:Sebbene sia simile adrop
, questa zona rifiuta le richieste in arrivo con unicmp-host-prohibited
oicmp6-adm-prohibited
messaggio.public
:usa questa zona per le reti pubbliche o quando non ti fidi di nessuno degli altri computer della rete. Questa zona accetta le connessioni in entrata caso per caso.external
:utilizzare questa zona su reti esterne in cui il firewall funge da gateway. Questa zona è configurata per il mascheramento NAT (Network Address Translation) in modo che la tua rete interna sia privata ma raggiungibile.internal
:utilizza questa zona per la parte interna di un gateway, dove gli altri computer sono ragionevolmente affidabili.dmz
:usa questa zona per i computer isolati che si trovano in una zona demilitarizzata (DMZ). Questa zona consente solo Secure Shell (SSH) e Internet Control Message Protocol (ICMP).work
:usa questa zona per i computer di lavoro.home
:usa questa zona per gli ambienti domestici.trusted
:usa questa zona quando ritieni attendibili tutti i computer della rete.
Per utilizzare il firewall, crei regole e modifichi le proprietà delle tue zone, quindi assegna le tue interfacce di rete alle zone più appropriate per la tua rete.
Avvia il firewall e abilitalo all'avvio
Per impostazione predefinita, firewalld dovrebbe essere abilitato, riavviare il server e quindi avviare all'avvio.
Puoi facilmente verificare se il firewall è in esecuzione utilizzando il --state
flag, come mostrato nell'esempio seguente:
[user@server ~]$ sudo firewall-cmd --state
Finding out about your zones
Se firewalld non è in esecuzione, puoi abilitarlo e avviarlo eseguendo i seguenti comandi:
[user@server ~]$ sudo systemctl enable firewalld
[user@server ~]$ sudo systemctl start firewalld
Puoi vedere quale zona è attualmente la zona predefinita eseguendo il comando seguente:
[user@server ~]$ sudo firewall-cmd --get-default-zone
Puoi vedere quali interfacce di rete sono assegnate a quali zone eseguendo il comando seguente:
[user@server ~]$ sudo firewall-cmd --get-active-zones
Nota :L'impostazione predefinita assegna tutte le interfacce di rete alla zona pubblica.
Puoi anche trovare le regole associate alla zona pubblica eseguendo il comando seguente:
[user@server ~]$ sudo firewall-cmd --list-all --zone=public
L'output dovrebbe essere simile al seguente esempio:
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client http https ssh
ports: 1025/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
L'output mostra che la zona pubblica è l'impostazione predefinita e dispone di interfacce di rete eth0 eeth1. Protocollo di configurazione host dinamico (DHCP)(dhcpv6-client
), sono consentiti il traffico SSH, Hypertext Transfer Protocol (HTTP) e Secure HTTP(HTTPS), nonché il traffico TCP (Transmission Control Protocol) sulla porta 1025
.
Per ottenere un elenco delle zone disponibili, eseguire il comando seguente:
[user@server ~]$ sudo firewall-cmd --get-zones
Configura le tue zone
Puoi spostare le interfacce tra le zone durante la sessione utilizzando il --change-interface=
argomento e --zone
discussione. Se il firewall si riavvia, l'interfaccia torna alla zona predefinita.
[user@server ~]$ sudo firewall-cmd --zone=internal --change-interface=eth1
Per definire una zona permanente per un'interfaccia, apri il file di configurazione per l'interfaccia e aggiungi le seguenti righe:
...
ONBOOT=yes
ZOME=internal
Salvare e chiudere il file, quindi eseguire i seguenti comandi per riavviare la rete e il firewall e rendere effettive le modifiche:
[user@server ~]$ sudo systemctl restart network
[user@server ~]$ sudo systemctl restart firewalld
Imposta le regole
Firewalld viene fornito con servizi predefiniti che consentono di aggiungere solo il servizio, anziché il numero di porta e il tipo di protocollo. Ad esempio, ti consentono di consentire http
anziché tcp port 80
.
È possibile ottenere un elenco di questi servizi utilizzando il comando seguente:
[user@server ~]$ sudo firewall-cmd --get-services
Quindi, usa il seguente comando di esempio per aggiungere un servizio:
[user@server ~]$ sudo firewall-cmd --add-service=http
La configurazione ha effetto immediato, ma non sopravvive ai riavvii. Per consentire il riavvio di questi tipi di configurazioni di servizio al riavvio del server, è necessario aggiungere il --permanent
discussione. Ti consigliamo di eseguire entrambi questi comandi in sequenza in modo che la configurazione abbia effetto immediato e che anche i servizi si riavviino, come mostrato nell'esempio seguente:
[user@server ~]$ sudo firewall-cmd --add-service=http
firewall-cmd --permanent --add-service=http
Puoi ottenere ulteriori dettagli sulle regole predefinite di firewalld navigando su /usr/lib/firewalld/services/ directory e leggere i file.
Imposta regole avanzate
Regole dettagliate sono come si definiscono i condizionali in firewalld. Il caso d'uso più comune per le regole avanzate è consentire l'accesso da un particolare indirizzo IP o intervallo di indirizzi IP. I seguenti comandi consentono l'accesso alla porta TCP 80 da qualsiasi IP sulla rete 192.168.0.0 e rendono permanente la regola:
[user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'
[user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent
Per esempi di regole avanzate, vedere Fedora®Wiki.
Definisci servizi
Puoi creare il tuo servizio e fare riferimento a quando crei le regole inserendo un file in /usr/lib/firewalld/services/ directory. Il modo più semplice per eseguire questa attività copiando un .xml esistente file in questa directory, quindi modificando i dettagli.
Il comando di esempio seguente copia un file esistente in un nuovo file:
[user@server ~]$ sudo cp /usr/lib/firewalld/services/http.xml /usr/lib/firewalld/services/myservice.xml
Il comando seguente apre il nuovo file per la modifica:
[user@server ~]$ sudo vim /usr/lib/firewalld/services/myserver.xml
Il file dovrebbe essere simile al seguente esempio:
<!--?xml version="1.0" encoding="utf-8"?-->
<service>
<short>My Custom Service</short>
<description>A brief description of the service. This rule allows port 1134 on TCP for my application.</description>
<port protocol="tcp" port="1134"></port>
</service>
Per applicare le modifiche, utilizza i seguenti comandi con il nome del file, meno il .xml estensione del file:
[user@server ~]$ sudo firewall-cmd --add-service=myservice
[user@server ~]$ sudo firewall-cmd --permanent --add-service=myservice
Utilizza la scheda Feedback per inserire commenti o porre domande. Puoi anche avviare una conversazione con noi.