CentOS ha un firewall?
Come disabilitare o disattivare Firewalld su CentOS 7
Iptables
CentOS ha un firewall estremamente potente integrato, comunemente indicato come iptables, ma più accuratamente è iptables/netfilter. Iptables è il modulo dello spazio utenti, il bit con cui l’utente interagisci nella riga di comando per inserire le regole del firewall in tabelle predefinite. Netfilter è un modulo del kernel, integrato nel kernel, che effettivamente fa il filtro. Esistono molti front -end della GUI per iptables che consentono agli utenti di aggiungere o definire le regole in base a un’interfaccia utente punto e clicca, ma spesso non mancano la flessibilità dell’utilizzo dell’interfaccia della riga di comando e limitano la comprensione degli utenti di ciò che sta realmente accadendo. Impareremo l’interfaccia della riga di comando di iptables.
Prima di poter davvero fare i conti con iptables, dobbiamo avere almeno una comprensione di base del modo in cui funziona. Iptables utilizza il concetto di indirizzi IP, protocolli (TCP, UDP, ICMP) e porte. Non abbiamo bisogno di essere esperti in questi per iniziare (poiché possiamo cercare una qualsiasi delle informazioni di cui abbiamo bisogno), ma aiuta ad avere una comprensione generale.
Iptables posa le regole in catene predefinite (input, output e in avanti) che sono controllate da qualsiasi traffico di rete (pacchetti IP) rilevanti per tali catene e una decisione è presa su cosa fare con ciascun pacchetto in base al risultato di tali regole, i.e. accettare o far cadere il pacchetto. Queste azioni sono indicate come target, di cui i due obiettivi predefiniti più comuni sono caduti per far cadere un pacchetto o accettare per accettare un pacchetto.
Catene
- Input – Tutti i pacchetti destinati al computer host.
- Output – Tutti i pacchetti provenienti dal computer host.
- Forward: tutti i pacchetti non sono né destinati né provenienti dal computer host, ma passano attraverso (instradati da) il computer host. Questa catena viene utilizzata se si utilizza il tuo computer come router.
Per la maggior parte, avremo a che fare con la catena di input per filtrare i pacchetti che entrano nella nostra macchina, cioè tenendo fuori i cattivi.
Le regole vengono aggiunte in un elenco a ciascuna catena. Un pacchetto viene controllato contro ogni regola a sua volta, a partire dall’alto, e se corrisponde a tale regola, viene intrapresa un’azione come accettare (accetta) o cadere (rilascia) il pacchetto. Una volta che una regola è stata abbinata e un’azione intrapresa, il pacchetto viene elaborato in base al risultato di tale regola e non viene elaborato da ulteriori regole nella catena. Se un pacchetto passa attraverso tutte le regole della catena e raggiunge il fondo senza essere abbinato a alcuna regola, viene intrapresa l’azione predefinita per quella catena. Questo è indicato come politica predefinita e può essere impostato per accettare o rilasciare il pacchetto.
Il concetto di politiche predefinite all’interno delle catene aumenta due possibilità fondamentali che dobbiamo prima considerare prima di decidere come organizzare il nostro firewall.
1. Possiamo impostare una politica predefinita per eliminare tutti i pacchetti e quindi aggiungere regole per consentire (accettare) pacchetti specifici che possono provenire da indirizzi IP di fiducia o per alcune porte su cui disponiamo di servizi in esecuzione come BitTorrent, Server FTP, Web Server, Samba File Server.
2. Possiamo impostare una politica predefinita per accettare tutti i pacchetti e quindi aggiungere regole per bloccare specificamente i pacchetti che possono provenire da specifici indirizzi o intervalli IP di fastidio o per alcune porte su cui disponiamo di servizi privati o nessun servizio in esecuzione.
Generalmente, l’opzione 1 sopra viene utilizzata per la catena di input in cui vogliamo controllare ciò che è consentito accedere alla nostra macchina e l’opzione 2 verrebbe utilizzata per la catena di output in cui generalmente ci fidiamo del traffico che sta lasciando (proveniente dalla nostra macchina.
2. Iniziare
Lavorare con iptables dalla riga di comando richiede i privilegi di root, quindi dovrai diventare root per la maggior parte delle cose che faremo.
Iptables dovrebbe essere installato per impostazione predefinita su tutti i centos 5.X e 6.X installazioni. Puoi verificare se iptables è installato sul tuo sistema da:
$ rpm -q iptables iptables -1.4.7-5.1.EL6_2.x86_64
E per vedere se iptables è effettivamente in esecuzione, possiamo verificare che i moduli iptables vengano caricati e utilizzare l’interruttore -l per ispezionare le regole attualmente caricate:
# lsmod | grep ip_tables ip_tables 29288 1 iptable_filter x_tables 29192 6 ip6t_reject, ip6_tables, ipt_reject, xt_state, xt_tcpudp, ip_tables
# iptables -l Input a catena (politica accetta) destinazione di target prot opt source Accetta tutto - ovunque sia stato legato allo stato, stabilito Accetta ICMP - ovunque ovunque Accetta tutto - ovunque ovunque Accetta TCP - Ovunque State Nuovo TCP DPT: SSH Rifiuta tutto-ovunque, rifiuta con ICMP-Host-proibito Catena forward (politica accetta) destinazione di target prot opt source Rifiuta tutto-ovunque, rifiuta con ICMP-Host-proibito Output a catena (politica accetta) destinazione di target prot opt source
Sopra vediamo il set predefinito di regole su un sistema CentOS 6. Si noti che il servizio SSH è consentito per impostazione predefinita.
Se iptables non è in esecuzione, puoi abilitarlo eseguendo:
# System-Config-Securitylevel
3. Scrivere un semplice set di regole
Useremo un approccio basato sull’esempio per esaminare i vari comandi iptables. In questo primo esempio, creeremo un set di regole molto semplice per impostare un firewall di ispezione dei pacchetti a stato (SPI) che consentirà tutte le connessioni in uscita ma bloccano tutte le connessioni in arrivo indesiderate:
# iptables -p input accetta # iptables -f # iptables -a input -i lo -j accetta # iptables -a input -m State -stato stabilito, correlato -j accetta # iptables -a input -p tcp -dport 22 -j accetta # iptables -p drop di input # iptables -p drop # iptables -p output accetta # iptables -l -v
Domande:
- 1. Cosa sono iptables?
- 2. Quali sono le tre catene predefinite in iptables?
- 3. Qual è lo scopo della catena di input?
- 4. Come vengono aggiunte le regole alle catene?
- 5. Cosa succede se un pacchetto corrisponde a una regola nella catena?
- 6. Qual è la politica predefinita della catena di input?
- 7. Qual è la politica predefinita della catena di output?
- 8. Quali sono le due possibilità di organizzare un firewall utilizzando politiche predefinite?
- 9. Qual è l’opzione consigliata per la catena di input?
- 10. Come si controlla se iptables è installato sul tuo sistema?
- 11. Come si controlla se iptables è in esecuzione?
- 12. Come puoi abilitare iptables se non è in esecuzione?
- 13. Qual è lo scopo di un firewall di ispezione dei pacchetti statali (SPI)?
- 14. Quali connessioni sono consentite dalla semplice regola impostata nell’esempio?
- 15. Quali connessioni sono bloccate dalla semplice regola impostata nell’esempio?
Risposte:
- 1. Cosa sono iptables?
Iptables è un potente firewall integrato in CentOS che consente agli utenti di definire e gestire le regole del firewall utilizzando l’interfaccia della riga di comando. - 2. Quali sono le tre catene predefinite in iptables?
Le tre catene predefinite in iptables sono input, output e in avanti. - 3. Qual è lo scopo della catena di input?
La catena di input viene utilizzata per filtrare i pacchetti che inseriscono il computer host. - 4. Come vengono aggiunte le regole alle catene?
Le regole vengono aggiunte alle catene in un elenco, con ogni regola controllata dal traffico di rete in arrivo nella catena specificata. - 5. Cosa succede se un pacchetto corrisponde a una regola nella catena?
Se un pacchetto corrisponde a una regola nella catena, viene intrapresa un’azione specificata dalla regola (come accettazione o caduta) per quel pacchetto. - 6. Qual è la politica predefinita della catena di input?
La politica predefinita della catena di input può essere impostata per accettare o rilasciare. Generalmente, si consiglia di impostarlo in calo e consentire esplicitamente connessioni di fiducia. - 7. Qual è la politica predefinita della catena di output?
La politica predefinita della catena di output è generalmente impostata per accettare, poiché le connessioni in uscita sono generalmente attendibili. - 8. Quali sono le due possibilità di organizzare un firewall utilizzando politiche predefinite?
Le due possibilità stanno impostando un criterio predefinito da scendere e consentendo connessioni attendibili specifiche (Opzione 1) o impostando una politica predefinita per accettare e bloccare connessioni indesiderate specifiche (Opzione 2). - 9. Qual è l’opzione consigliata per la catena di input?
L’opzione consigliata per la catena di input è quella di impostare una politica predefinita da scendere e consentire esplicitamente connessioni affidabili. - 10. Come si controlla se iptables è installato sul tuo sistema?
Puoi verificare se iptables è installato eseguendo il comando:RPM -Q iptables
- 11. Come si controlla se iptables è in esecuzione?
Puoi verificare se iptables è in esecuzione controllando se i moduli iptables sono caricati e utilizzando il comando:iptables -l
- 12. Come puoi abilitare iptables se non è in esecuzione?
È possibile abilitare iptables eseguendo il comando:System-Config-Securitylevel
- 13. Qual è lo scopo di un firewall di ispezione dei pacchetti statali (SPI)?
Un firewall SPI (Stateful Packet Ispection (SPI) consente connessioni in uscita ma blocca le connessioni in arrivo indesiderate in base allo stato e alle caratteristiche dei pacchetti. - 14. Quali connessioni sono consentite dalla semplice regola impostata nell’esempio?
La semplice regola impostata nell’esempio consente tutte le connessioni in uscita. - 15. Quali connessioni sono bloccate dalla semplice regola impostata nell’esempio?
Il set di regole semplici blocca tutte le connessioni in arrivo indesiderate.
Come disabilitare o disattivare Firewalld su CentOS 7
Ora puoi utilizzare questo servizio nelle tue zone come faresti normalmente.
Iptables
CentOS ha un firewall estremamente potente integrato, comunemente indicato come iptables, ma più accuratamente è iptables/netfilter. Iptables è il modulo dello spazio utenti, il bit con cui l’utente interagisci nella riga di comando per inserire le regole del firewall in tabelle predefinite. Netfilter è un modulo del kernel, integrato nel kernel, che effettivamente fa il filtro. Esistono molti front -end della GUI per iptables che consentono agli utenti di aggiungere o definire le regole in base a un’interfaccia utente punto e clicca, ma spesso non mancano la flessibilità dell’utilizzo dell’interfaccia della riga di comando e limitano la comprensione degli utenti di ciò che sta realmente accadendo. Impareremo l’interfaccia della riga di comando di iptables.
Prima di poter davvero fare i conti con iptables, dobbiamo avere almeno una comprensione di base del modo in cui funziona. Iptables utilizza il concetto di indirizzi IP, protocolli (TCP, UDP, ICMP) e porte. Non abbiamo bisogno di essere esperti in questi per iniziare (poiché possiamo cercare una qualsiasi delle informazioni di cui abbiamo bisogno), ma aiuta ad avere una comprensione generale.
Iptables posa le regole in catene predefinite (input, output e in avanti) che sono controllate da qualsiasi traffico di rete (pacchetti IP) rilevanti per tali catene e una decisione è presa su cosa fare con ciascun pacchetto in base al risultato di tali regole, i.e. accettare o far cadere il pacchetto. Queste azioni sono indicate come target, di cui i due obiettivi predefiniti più comuni sono caduti per far cadere un pacchetto o accettare per accettare un pacchetto.
Catene
- Input – Tutti i pacchetti destinati al computer host.
- Output – Tutti i pacchetti provenienti dal computer host.
- Forward: tutti i pacchetti non sono né destinati né provenienti dal computer host, ma passano attraverso (instradati da) il computer host. Questa catena viene utilizzata se si utilizza il tuo computer come router.
Per la maggior parte, avremo a che fare con la catena di input per filtrare i pacchetti che entrano nella nostra macchina, cioè tenendo fuori i cattivi.
Le regole vengono aggiunte in un elenco a ciascuna catena. Un pacchetto viene controllato contro ogni regola a sua volta, a partire dall’alto, e se corrisponde a tale regola, viene intrapresa un’azione come accettare (accetta) o cadere (rilascia) il pacchetto. Una volta che una regola è stata abbinata e un’azione intrapresa, il pacchetto viene elaborato in base al risultato di tale regola e non viene elaborato da ulteriori regole nella catena. Se un pacchetto passa attraverso tutte le regole della catena e raggiunge il fondo senza essere abbinato a alcuna regola, viene intrapresa l’azione predefinita per quella catena. Questo è indicato come politica predefinita e può essere impostato per accettare o rilasciare il pacchetto.
Il concetto di politiche predefinite all’interno delle catene aumenta due possibilità fondamentali che dobbiamo prima considerare prima di decidere come organizzare il nostro firewall.
1. Possiamo impostare una politica predefinita per eliminare tutti i pacchetti e quindi aggiungere regole per consentire (accettare) pacchetti specifici che possono provenire da indirizzi IP di fiducia o per alcune porte su cui disponiamo di servizi in esecuzione come BitTorrent, Server FTP, Web Server, Samba File Server.
2. Possiamo impostare una politica predefinita per accettare tutti i pacchetti e quindi aggiungere regole per bloccare specificamente i pacchetti che possono provenire da specifici indirizzi o intervalli IP di fastidio o per alcune porte su cui disponiamo di servizi privati o nessun servizio in esecuzione.
Generalmente, l’opzione 1 sopra viene utilizzata per la catena di input in cui vogliamo controllare ciò che è consentito accedere alla nostra macchina e l’opzione 2 verrebbe utilizzata per la catena di output in cui generalmente ci fidiamo del traffico che sta lasciando (proveniente dalla nostra macchina.
2. Iniziare
Lavorare con iptables dalla riga di comando richiede i privilegi di root, quindi dovrai diventare root per la maggior parte delle cose che faremo.
Iptables dovrebbe essere installato per impostazione predefinita su tutti i centos 5.X e 6.X installazioni. Puoi verificare se iptables è installato sul tuo sistema da:
$ rpm -q iptables iptables -1.4.7-5.1.EL6_2.x86_64
E per vedere se iptables è effettivamente in esecuzione, possiamo verificare che i moduli iptables vengano caricati e utilizzare l’interruttore -l per ispezionare le regole attualmente caricate:
# lsmod | grep ip_tables ip_tables 29288 1 iptable_filter x_tables 29192 6 ip6t_reject, ip6_tables, ipt_reject, xt_state, xt_tcpudp, ip_tables
# iptables -l input a catena (politica accetta) target prot Opt source destinazione accetta tutto-ovunque ovunque correlato allo stato, consolidato ICMP-ovunque ovunque accetta tutto-ovunque ovunque accetta TCP-ovunque statale statale nuovo TCP dpt: ssh rifiuta tutto-ovunque rifiutano con iCMP-host-host-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-pro-protetto catena di catenella (protezione per la catena di destinazione per la catena di e-outp-outp-project
Sopra vediamo il set predefinito di regole su un sistema CentOS 6. Si noti che il servizio SSH è consentito per impostazione predefinita.
Se iptables non è in esecuzione, puoi abilitarlo eseguendo:
# System-Config-Securitylevel
3. Scrivere un semplice set di regole
Useremo un approccio basato sull’esempio per esaminare i vari comandi iptables. In questo primo esempio, creeremo un set di regole molto semplice per impostare un firewall di ispezione dei pacchetti a stato (SPI) che consentirà tutte le connessioni in uscita ma bloccano tutte le connessioni in arrivo indesiderate:
# iptables -p input accetta # iptables -f # iptables -a input -i lo -j accetta # iptables -a input -m stato --state stabilito, correlato -j accetta # iptables -a input -p tcp -dport 22 -j accetta # iptables -p input drop # iptables -p in avanti drop # iptables -p output # iptables -l -l -l
che dovrebbe dare il seguente output:
Input catena (pacchetti di caduta di politica 0, 0 byte) PKTS byte target prot opt in out source destinazione 0 0 accetta tutto - lo qualsiasi ovunque 0 0 accetta tutto - qualsiasi altro stato relativo allo stato, stabilito 0 0 accetta tcp - qualsiasi ovunque tcp dpt: ssh catena in avanti (pacchetti di criteri di critica, output di polificate aw byts) destinazione di origine fuori
- iptables -p input accetta Se collegando in remoto dobbiamo prima impostare temporaneamente la politica predefinita sulla catena di input per accettare altrimenti una volta scaricate le regole correnti, saremo bloccati dal nostro server.
- iptables -f Abbiamo usato l’interruttore -f per eliminare tutte le regole esistenti, quindi iniziamo con uno stato pulito da cui aggiungere nuove regole.
- iptables -a input -i lo -j accetta Ora è il momento di iniziare ad aggiungere alcune regole. Utilizziamo l’interruttore -a per appendicare (o aggiungere) una regola a una catena specifica, la catena di input in questo caso. Quindi utilizziamo l’interruttore -i (per interfaccia) per specificare la corrispondenza dei pacchetti o destinati a LO (LocalHost, 127.0.0.1) Interfaccia e infine -j (salta) all’azione target per i pacchetti corrispondenti alla regola – In questo caso accetta. Quindi questa regola consentirà di accettare tutti i pacchetti in arrivo destinati all’accettazione dell’interfaccia localhost. Ciò è generalmente richiesto poiché molte applicazioni software prevedono di essere in grado di comunicare con l’adattatore locale.
- iptables -a input -m stato -stato stabilito, correlato -j accetta Questa è la regola che fa la maggior parte del lavoro, e di nuovo lo stiamo aggiungendo (-a) alla catena di input. Qui stiamo usando l’interruttore -m per caricare un modulo (stato). Il modulo di stato è in grado di esaminare lo stato di un pacchetto e determinare se è nuovo, stabilito o correlato. Nuovo si riferisce a pacchetti in arrivo che sono nuove connessioni in arrivo che non sono state avviate dal sistema host. Si riferisce e correlato a pacchetti in arrivo che fanno parte di una connessione già consolidata o relativa a una connessione già consolidata.
- iptables -a input -p tcp -dport 22 -j accetta Qui aggiungiamo una regola che consente connessioni SSH sulla porta TCP 22. Questo per prevenire i blocchi accidentali quando si lavora su sistemi remoti su una connessione SSH. Spiegheremo questa regola in modo più dettagliato in seguito.
- iptables -P Drop di input L’interruttore -p imposta il criterio predefinito sulla catena specificata. Quindi ora possiamo impostare il criterio predefinito sulla catena di input per scendere. Ciò significa che se un pacchetto in arrivo non corrisponde a una delle seguenti regole, verrà eliminato. Se stessimo collegando in remoto tramite SSH e non avessimo aggiunto la regola sopra, ci saremmo appena bloccati dal sistema a questo punto.
- iptables -p drop Allo stesso modo, qui abbiamo impostato la politica predefinita sulla catena in avanti in quanto non stiamo usando il nostro computer come router, quindi non dovrebbero esserci pacchetti che passano attraverso il nostro computer.
- iptables -p output accetta E infine, abbiamo impostato la politica predefinita sulla catena di output per accettare in quanto vogliamo consentire tutto il traffico in uscita (poiché ci fidiamo dei nostri utenti).
- iptables -l -v Infine, possiamo elencare (-l) le regole che abbiamo appena aggiunto per verificare che sono state caricate correttamente.
Infine, l’ultima cosa che dobbiamo fare è salvare le nostre regole in modo che la prossima volta che riavviamo il nostro computer le nostre regole vengono ricaricate automaticamente:
# /sbin /servizio iptables salva
Questo esegue lo script iptables init, che esegue/sbin/iptables save e scrive la configurazione Iptables corrente in/etc/sysconfig/iptables. Al riavvio, lo script IPTables INIT riappia le regole salvate in/etc/sysconfig/iptables utilizzando il comando/sbin/iptables-restore.
Ovviamente digitare tutti questi comandi sulla shell può diventare noioso, quindi di gran lunga il modo più semplice di lavorare con iptables è creare un semplice script per fare tutto per te. I comandi sopra possono essere inseriti nel tuo editor di testo preferito e salvati come myfirewall, ad esempio:
# # iptables example configuration script # # Flush all current rules from iptables # iptables -F # # Allow SSH connections on tcp port 22 # This is essential when working on remote servers via SSH to prevent locking yourself out of the system # iptables -A INPUT -p tcp --dport 22 -j ACCEPT # # Set default policies for INPUT, FORWARD and OUTPUT chains # iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # # Set access for localhost # iptables -A INPUT -i lo -j ACCEPT # # Accept packets belonging to established and related connections # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # # Save settings # /sbin/service iptables save # # List rules # iptables -L -v
Nota: Possiamo anche commentare la nostra sceneggiatura per ricordarci cosa stava facendo.
Ora rendi eseguibile lo script:
# chmod +x myfirewall
Ora possiamo semplicemente modificare il nostro script ed eseguirlo dalla shell con il seguente comando:
# ./myfirewall
4. Interfacce
Nel nostro esempio precedente, abbiamo visto come potremmo accettare tutti i pacchetti in arrivo su una particolare interfaccia, in questo caso l’interfaccia LocalHost:
iptables -a input -i lo -j accetta
Supponiamo di avere 2 interfacce separate, ETH0 che è la nostra connessione LAN interna e il modem dialup PPP0 (o forse ETH1 per una NIC) che è la nostra connessione Internet esterna. Potremmo voler consentire tutti i pacchetti in arrivo sulla nostra LAN interna ma filtrare comunque i pacchetti in arrivo sulla nostra connessione Internet esterna. Potremmo farlo come segue:
iptables -a input -i lo -j accetta iptables -a input -i eth0 -j accetta
Ma stai molto attento – Se dovessimo consentire a tutti i pacchetti per la nostra interfaccia Internet esterna (ad esempio, modem di dialup PPP0):
iptables -a input -i ppp0 -j accetta
Avremmo effettivamente disabilitato il nostro firewall!
5. Indirizzi IP
Aprire un’intera interfaccia ai pacchetti in arrivo potrebbe non essere abbastanza restrittivo e potresti voler un maggiore controllo su cosa permettere e cosa rifiutare. Supponiamo che abbiamo una piccola rete di computer che usano il 192.168.0.x Sotthenet privato. Possiamo aprire il nostro firewall ai pacchetti in arrivo da un singolo indirizzo IP di fiducia (ad esempio, 192.168.0.4):
# Accetta pacchetti da indirizzi IP di fiducia iptables -a input -s 192.168.0.4 -J Accetta # Modifica l'indirizzo IP come appropriato
Abbattere questo comando, per prima cosa aggiungiamo (-a) una regola alla catena di input per l’indirizzo IP di origine (-s) 192.168.0.4 Per accettare tutti i pacchetti (nota anche come possiamo usare il simbolo # per aggiungere commenti in linea per documentare il nostro script con qualsiasi cosa dopo essere stato ignorato e trattato come un commento).
Ovviamente se vogliamo consentire i pacchetti in arrivo da una gamma di indirizzi IP, potremmo semplicemente aggiungere una regola per ogni indirizzo IP di fiducia e questo funzionerebbe bene. Ma se ne abbiamo molti, potrebbe essere più facile aggiungere una gamma di indirizzi IP in una volta sola. Per fare ciò, possiamo utilizzare una maschera di rete o una notazione standard per specificare un intervallo di indirizzo IP. Ad esempio, se volessimo aprire il nostro firewall a tutti i pacchetti in arrivo dal 192 completo.168.0.X (dove x = 1 a 254) intervallo, potremmo usare uno dei seguenti metodi:
# Accetta pacchetti da indirizzi IP di fiducia iptables -a input -s 192.168.0.0/24 -J Accetta # usando la notazione slash standard iptables -a input -s 192.168.0.0/255.255.255.0 -j Accetta # usando una maschera di sottorete
Infine, oltre a filtrare contro un singolo indirizzo IP, possiamo anche abbinare l’indirizzo MAC per il dispositivo dato. Per fare ciò, dobbiamo caricare un modulo (il modulo MAC) che consente il filtro rispetto agli indirizzi MAC. In precedenza abbiamo visto un altro esempio di utilizzo dei moduli per estendere la funzionalità degli iptables quando abbiamo usato il modulo di stato per abbinare i pacchetti affermati e correlati. Qui utilizziamo il modulo MAC per verificare l’indirizzo MAC dell’origine del pacchetto oltre al suo indirizzo IP:
# Accetta pacchetti da indirizzi IP di fiducia iptables -a input -s 192.168.0.4 -M Mac - -Mac -Source 00: 50: 8d: FD: E6: 32 -J Accetta
Per prima cosa usiamo -M Mac Per caricare il modulo Mac e quindi usiamo --mac-source Per specificare l’indirizzo MAC dell’indirizzo IP di origine (192.168.0.4). Dovrai scoprire l’indirizzo MAC di ciascun dispositivo Ethernet su cui si desidera filtrare. Corsa ifconfig (O iwconfig per dispositivi wireless) come root ti fornirà l’indirizzo MAC.
Ciò può essere utile per prevenire lo spoofing dell’indirizzo IP di origine in quanto consentirà a tutti i pacchetti che provengono veramente da 192.168.0.4 (avente l’indirizzo MAC 00: 50: 8d: FD: E6: 32) ma bloccerà tutti i pacchetti che sono falsificati provenienti da quell’indirizzo. Nota, il filtro dell’indirizzo MAC non funzionerà su Internet ma sicuramente funziona bene su una LAN.
6. Porte e protocolli
Sopra abbiamo visto come possiamo aggiungere regole al nostro firewall per filtrare i pacchetti corrispondenti a una particolare interfaccia o un indirizzo IP di origine. Ciò consente il pieno accesso tramite il nostro firewall a determinate fonti di fiducia (PC host). Ora esamineremo come possiamo filtrare contro protocolli e porte per perfezionare ulteriormente quali pacchetti in arrivo consentiamo e cosa blocciamo.
Prima di poter iniziare, dobbiamo sapere quale protocollo e numero di porta utilizza un determinato servizio. Per un semplice esempio, diamo un’occhiata a BitTorrent. BitTorrent utilizza il protocollo TCP sulla porta 6881, quindi dovremmo consentire tutti i pacchetti TCP sulla porta di destinazione (la porta su cui arrivano alla nostra macchina) 6881:
# Accetta i pacchetti TCP sulla porta di destinazione 6881 (bittorrent) iptables -a input -p tcp -dport 6881 -j accetta
Qui aggiungiamo (-a) una regola alla catena di input per i pacchetti corrispondenti al protocollo TCP (-P TCP) ed entrando nella nostra macchina sulla porta di destinazione 6881 (--dport 6881).
Nota: Per utilizzare corrispondenze come le porte di destinazione o di origine (--dport O --sport), Voi dovere prima specifica il protocollo (TCP, UDP, ICMP, ALL).
Possiamo anche estendere quanto sopra per includere un intervallo di porte, ad esempio, consentendo tutti i pacchetti TCP nell’intervallo da 6881 a 6890:
# Accetta i pacchetti TCP sulle porte di destinazione 6881-6890 iptables -a input -p tcp - -dport 6881: 6890 -j accetta
7. Mettere tutto insieme
Ora abbiamo visto le basi, possiamo iniziare a combinare queste regole.
Un popolare servizio UNIX/Linux è il servizio Secure Shell (SSH) che consente l’accesso remoto. Per impostazione predefinita SSH utilizza la porta 22 e di nuovo utilizza il protocollo TCP. Quindi, se vogliamo consentire l’accesso remoto, dovremmo consentire connessioni TCP sulla porta 22:
# Accetta i pacchetti TCP sulla porta di destinazione 22 (ssh) iptables -a input -p tcp -dport 22 -j accetta
Ciò aprirà la porta 22 (SSH) a tutte le connessioni TCP in arrivo che rappresentano una potenziale minaccia per la sicurezza poiché gli hacker potrebbero provare a cracking della forza bruta sui conti con password deboli. Tuttavia, se conosciamo gli indirizzi IP delle macchine remote di fiducia che verranno utilizzate per accedere all’utilizzo di SSH, possiamo limitare l’accesso solo a questi indirizzi IP di origine. Ad esempio, se volessimo solo aprire l’accesso SSH sulla nostra LAN privata (192.168.0.x), possiamo limitare l’accesso solo a questo intervallo di indirizzi IP di origine:
# Accetta i pacchetti TCP sulla porta di destinazione 22 (SSH) da LAN privati iptables -a input -p tcp -s 192.168.0.0/24 - -dport 22 -j accetta
L’uso del filtro IP di origine ci consente di aprire in modo sicuro l’accesso SSH sulla porta 22 per solo indirizzi IP attendibili. Ad esempio, potremmo utilizzare questo metodo per consentire l’accesso remoto tra lavoro e macchine domestiche. A tutti gli altri indirizzi IP, la porta (e il servizio) sembrerebbe chiusa come se il servizio fosse disabilitato, quindi è probabile che gli hacker utilizzano i metodi di scansione delle porte ci passino.
8. Riepilogo
Abbiamo appena graffiato la superficie di ciò che può essere raggiunto con iptables, ma speriamo che questo Howto abbia fornito una buona messa a terra nelle basi da cui si possono costruire set di regole più complicate.
9. Link
http: // ip2Location.com/gratis/visitatore -bloccante – per bloccare alcuni paesi secondo il loro indirizzo IP
Howtos/Network/iptables (последним иппл п полззователь Nedslider 2021-07-27 23:21:13)
- Moinmoin alimentato
- Python alimentato
- GPL con licenza
- HTML valido 4.01
Come disabilitare o disattivare Firewalld su CentOS 7
Firewalld è una soluzione firewall gestita dinamicamente che supporta la suddivisione in zone della rete. Gli amministratori di sistema lo usano per consentire e non consentire il traffico in entrata e in uscita dinamicamente. Supporta le impostazioni del firewall IPv4 e IPv6. A partire da CentOS 7, Firewalld (Dynamic Firewall Manager) è lo strumento firewall predefinito sui server CentOS.
Consigliamo sempre di mantenere Firewalld attivo e abilitato. Tuttavia, gli amministratori potrebbero dover disabilitare Firewalld per il test o il passaggio a un altro strumento di firewall, come iptables.
Questo tutorial ti mostrerà come disabilitare e fermare il firewall su CentOS 7.
- Un utente con privilegi sudo
- Accesso a una riga di comando (CTRL-ALT-T)
- Una macchina CentOS 7
Controlla lo stato di firewalld
Firewalld è abilitato per impostazione predefinita su ogni macchina CentOS 7.
Per controllare lo stato di firewalld, eseguire il comando seguente dalla riga di comando:
sudo systemctl status firewalld
Se il firewall è in esecuzione, vedrai un testo verde brillante che indica che il firewall è attivo, come mostrato di seguito.
Disabilitare il firewall su centos
Puoi disabilitare il firewall temporaneamente O permanentemente. Le sezioni seguenti forniscono istruzioni per entrambe le opzioni.
Fermare temporaneamente Firewalld
Per disabilitare temporaneamente il Firewall Manager predefinito su CentOS 7, utilizzare il seguente comando:
sudo systemctl smettere di firewalld
Non ci sarà un messaggio di conferma.
Per verificare che Firewalld sia disabilitato, digita:
sudo systemctl status firewalld
Puoi aspettarti di vedere Attivo: inattivo (morto) .
IL SystemCtl Stop firewalld Il comando disabilita il servizio fino al riavvio. Dopo la fine della sessione di runtime e il sistema si riavvia, il servizio firewalld sarà di nuovo attivo.
Disabilita permanentemente Firewalld
Per disabilitare permanentemente il firewall su CentOS 7, dovrai fermare il servizio firewall e quindi disabilitarlo del tutto.
Per fermare lo strumento firewalld, eseguire:
sudo systemctl smettere di firewalld
Questo è anche lo stesso comando che abbiamo usato per fermare temporaneamente Firewalld. Controlla lo stato del firewall.
sudo systemctl status firewalld
L’output dovrebbe affermare che il servizio è inattivo.
Per disabilitare il servizio dall’attivazione all’avvio del sistema, immettere questo comando:
sudo systemctl disabilita firewalld
Vedi l’immagine qui sotto per l’output che puoi aspettarti di trovare:
Ora hai fermato e disabilitato con successo il servizio firewall sul tuo server CentOS 7. Tuttavia, altri servizi attivi potrebbero attivare Firewalld.
Per impedire ad altri servizi di attivare firewalld, maschera firewalld da altri servizi sul sistema:
maschera sudo systemctl -ora firewalld
Questo crea un collegamento simbolico (collegamento simbolico) dal servizio firewalld a /dev/null .
L’output dovrebbe apparire come quanto segue:
Output creato symlink da/etc/systemd/system/firewalld.Servizio a /dev /null.
Seguendo questo tutorial, ora sai come fermare e disabilitare il firewall su CentOS 7. Inoltre, hai imparato a mascherare il servizio firewalld da altri servizi attivi per evitare la riattivazione.
Buone pratiche di sicurezza vietano di disabilitare il firewall, in particolare sui server dal vivo. Sii sempre cauto quando lo fai, anche in ambienti di test.
Usando Firewalld in CentOS 7
Firewalld è il passaggio al firewall per CentOS e supporta le zone di rete / firewall, al fine di stabilire il livello di fiducia delle connessioni / interfacce di rete (vedere il paragrafo delle zone). Oltre alla possibilità di gestire in modo specifico le porte, supporta anche la possibilità di aggiungere direttamente servizi / applicazioni.
- Connettiti al VPS tramite SSH o la console VPS nel pannello di controllo e usa Sudo o segui i passaggi in questo articolo come utente di root.
- Usi un plesk vps? La zona predefinita nelle recenti versioni di Plesk non è pubblica, ma plesk (–zone = plesk).
- Le nostre installazioni Plesk, DirectAdmin e CPanel sono previste da firewalld.
Installazione di firewalld
Firewalld è facilmente installato utilizzando i seguenti comandi:
yum -y installa firewalld systemctl abilita firewalld
Controllare lo stato di Firewalld
Prima di continuare con la configurazione di Firewalld, è saggio verificare che funzioni correttamente. Lo fai con il comando:
Stato SystemCtl Firewalld
Se non ci sono problemi, l’input sembrerà così:
Se non afferma che Firewalld è attivo, prova a riavviarlo con:
SystemCtl Riavvia firewalld
Firewalld non inizia ancora? Controlla possibili messaggi di errore per risolvere il problema con:
Journalctl -xe -u firewalld
Zone
Firewalld usa le zone, ma cosa significa questo? Con una zona, indichi effettivamente in che tipo di ambiente si trova la tua connessione a Internet e quanto ti fidi, ad esempio una connessione pubblica, domestica o di lavoro. Ciò è particolarmente utile se si utilizza una rete privata, ad esempio, o si utilizza centos 7 su un laptop e lavori da diverse località. È quindi possibile configurare diverse zone in anticipo e regolare la zona attiva a seconda di dove ti trovi.
Configurando zone diverse, è possibile distinguere tra quali servizi / porte sono accessibili, a seconda di dove ti trovi e di quale zona si utilizza. Spesso usi solo una zona su un VPS perché il VPS non cambia da casa / lavoro / ambiente pubblico.
Firewalld è fornito con le seguenti zone: Firewalld:
- gocciolare: Tutte le connessioni in arrivo vengono rifiutate. Sono possibili connessioni in uscita.
- bloccare: Tutte le connessioni in arrivo sono negate con un messaggio predefinito per l’origine della connessione in arrivo. Per IPv4, questo è ICMP-HOST-proibito e per IPv6 ICMP6-ADM-Prohibited (ICMP è un valore predefinito per l’invio di informazioni e messaggi di errore nel traffico IP). Sono possibili connessioni in uscita.
- pubblico: Usa questa zona per ambienti pubblici in cui non si fidi di altri computer sulla rete. Solo connessioni predefinite (i.e. Porti / servizi) sono accettati.
- esterno: Questo è principalmente focalizzato su se il tuo firewall funziona come gateway e Nat mascheraggio viene utilizzato. Non ti fidi di altri computer sulla rete e vengono accettate solo connessioni preconfigurate.
- DMZ: La zona demilitarizzata, in cui il computer / server è isolato sulla rete e non ha accesso ad altri computer / server. Vengono accettate solo connessioni specifiche.
- lavoro: Per ambienti di lavoro. Di solito, altri computer sono attendibili sulla stessa rete. Ancora una volta, sono accettate solo connessioni predefinite.
- casa: Per uso domestico. Lo stesso vale della zona “lavoro”. Si noti che le connessioni sul lavoro sono spesso meglio protette che in una rete domestica.
- interno: Per l’uso con reti private. I computer su questa rete di solito sono fidati. Sono accettate solo connessioni predefinite.
- fidato: Tutte le connessioni sono accettate.
Gestire le zone
Firewalld viene fornito con una serie di comandi utili per gestire le tue zone. In questa sezione, spieghiamo il più importante.
Controllo della zona predefinita
Per impostazione predefinita, il ‘pubblico‘La zona è la zona predefinita. Controlli la zona predefinita con il comando:
firewall-cmd --get-default-zone
Controllare la zona attiva
Può succedere che tu cambi la zona attiva, ma non la zona predefinita. Controlli la zona attiva e le interfacce di rete per le quali vengono utilizzate con:
firewall-cmd --get-zones
Controlla le zone disponibili
Controlli le zone disponibili con il comando:
firewall-cmd-zone
Questo è particolarmente utile se vuoi cambiare le zone e vuoi prima vedere le tue opzioni.
Informazioni dettagliate della zona
Informazioni dettagliate come servizi autorizzati e porting, ma anche inoltro del porto ecc. può essere visualizzato con:
firewall-cmd --zone = public-list-all
Modifica ‘pubblico‘Alla zona desiderata o visualizzare l’output per tutte le zone con:
firewall-cmd-list-all-zones | meno
Modifica della zona predefinita
Per modificare la zona predefinita, hai due opzioni: modificare la zona per tutte le interfacce o per interfaccia. Supponiamo di utilizzare un’interfaccia di rete (e non anche una rete privata), quindi l’uso di una zona è sufficiente e potresti quindi regolare la zona predefinita quando si cambia le zone.
Regola la zona per tutte le interfacce:
firewall-cmd-set-default-zone = pubblico
firewall-cmd --zone = public --change-interface = eth0
Sostituire pubblico con il nome della zona desiderata ed eth0 con il nome dell’interfaccia di rete desiderata. In questo modo, puoi anche cambiare le zone per interfaccia per reti private, ad esempio:
firewall-cmd --zone = public --change-interface = eth0 firewall-cmd --zone = interno-interfaccia di scambio = eth1
Porte di apertura
È possibile aprire le porte in firewalld o aggiungere servizi per fornire l’accesso alla rete alle applicazioni. Non tutte le applicazioni vengono fornite con un servizio o forse hai modificato la porta predefinita del servizio (E.G. per SSH). In tal caso, apri una o più porte specifiche.
Ogni modifica in questa parte è attiva solo dopo un riavvio del vps o ricaricando la configurazione con:
firewall-cmd--ricarico
Apertura di una sola porta
Apri una porta con il comando:
firewall-cmd --zone = public --permanent --add-port = 1234/TCP
- Sostituire pubblico con la zona desiderata
- –permanente assicura che il cambiamento rimanga intatto anche dopo un riavvio
- Sostituire 1234/TCP con la porta desiderata e il protocollo desiderato (TCP o UDP)
Gamme di apertura
Preferiresti aprire una gamma? Quindi usi il comando:
firewall-cmd --zone = public --permanent --add-port = 1234-1345/TCP
Sostituisci 1234-1345 con l’intervallo di porta effettivo che si desidera aprire
Accesso per IP
Invece di aprire una porta per l’intero mondo, puoi anche aprirla per un IP specifico solo usando i comandi:
firewall-cmd --permanent --zone = public --add-rich-rule = '
Rule Family = "IPv4" Indirizzo di origine = "123.123.123.123 "Port Protocol =" TCP "Port =" 123 "Accetta '
Sostituire 123.123.123.123 dall’indirizzo IP effettivo del cliente e 123 dalla porta che vorresti aprire. Ripeti questi passaggi per whitelist multipli IP e ricarica la configurazione in seguito (firewall-cmd–relaoad). Non dimenticare di rimuovere la regola generale se la porta corrispondente era già aperta in modo previvabile.
Controllo delle porte aperte
Nel tempo, potresti dimenticare quali porte sono aperte. Li controlli con il comando:
firewall-cmd --zone = public --permanent-list-ports
Porte di chiusura
La chiusura delle porte funziona quasi come l’apertura di una porta e lo fai con il comando:
firewall-cmd --zone = public --permanent--remove-port = 1234/TCP Firewall-CMD--Reload
- sostituire 1234 con il numero di porta desiderato o utilizzare 1234-1345/TCP come sintassi per eliminare un intervallo di porte
- firewall-cmd–ricarico Aggiorna immediatamente la modifica della configurazione
Regolazione direttamente della configurazione
Oltre ai comandi sopra, è anche possibile regolare direttamente il file di configurazione di una zona specifica. È possibile trovare i file di configurazione delle zone con:
LS/etc/firewalld/zone
In una nuova installazione, solo pubblico.XML e pubblico.XML.Il vecchio sarà elencato qui. Puoi aprirlo e modificarlo con il comando:
nano/etc/firewalld/zone/pubblico.XML
È possibile aprire servizi o porte posizionando rispettivamente le seguenti aggiunte nel file:
- Sostituisci il nome del servizio con il nome effettivo del servizio, ad esempio SSH.
- Sostituisci 1234 con il numero desiderato e TCP con UDP se sei sicuro di voler aprire la porta UDP.
Vuoi creare un nuovo file di configurazione per un’altra zona, ad esempio Home? Quindi il pubblico.XML.vecchio è un ottimo punto di partenza. Cambi pubblico.XML.vecchio in un file per un’altra zona copiandola con:
CP/etc/firewalld/zone/pubblico.XML.vecchio/etc/firewalld/zone/casa.XML
- Sostituisci la casa con il nome della zona desiderata.
Aggiunta di servizi
Oltre ad aprire le porte, puoi anche aprire servizi specifici in firewalld. Quindi aggiungi il servizio in firewalld e quindi vengono aperte una o più porte. C’è una nota a margine qui:
Firewalld utilizza i file di configurazione (vedere i servizi disponibili) in cui sono definite le porte di diversi servizi. Queste porte vengono aperte quando viene aggiunto il servizio. Ad esempio, se si modifica la porta SSH, se hai aggiunto il servizio SSH, la nuova porta non verrà automaticamente aperta a meno che non si apra la porta manualmente o regola la configurazione del servizio in firewalld.
Apri i servizi in firewalld con il seguente comando, in cui si sostituisce SSH con il nome del servizio pertinente:
firewall-cmd --zone = public --permanent-sservice = ssh firewall-cmd--relaoad
Esistono due modi per vedere quali servizi sono disponibili per l’uso con firewalld:
Con un comando diretto:
firewall-cmd--service
LS/USR/Lib/Firewalld/Servizi
Il contenuto dei file disponibile può essere visualizzato con:
Cat/USR/Lib/Firewalld/Services/ServiceNaam.XML
Rimozione dei servizi
Puoi rimuovere un servizio con la stessa facilità con cui lo aggiungi in firewalld:
firewall-cmd --zone = public --permanent--remove-service = ssh firewall-cmd--reload
Bloccare IP
Può succedere che il vice VPS sia bombardato da attacchi a forza bruta da parte dei robot. Ti consigliamo di risolverlo usando fail2ban, ma puoi anche bloccare manualmente IPS. Lo fai con i comandi:
firewall-cmd -permanent --add-rich-rule = "regola family = 'ipv4' Indirizzo di origine = '123.123.123.0/24 'rifiuto "firewall-cmd--relaoad
Sostituire 123.123.123.0/24 con l’intervallo IP specifico che si desidera bloccare o con un indirizzo IP specifico se si desidera bloccare un IP.
In alternativa, puoi anche trasformare questo principio e bloccare l’accesso a una porta per tutti e consentire solo IPS specifici. Per prima cosa rimuovi la porta pertinente:
firewall-cmd --zone = public --permanent--remove-port = 1234/TCP
Sostituire il pubblico con la zona pertinente, 1234 e TCP con la porta / protocollo desiderata. Quindi, puoi accedere a IP specifici con i comandi:
firewall-cmd --permanent --zone = public --add-rich-rule = '
Rule Family = "IPv4" Indirizzo sorgente = "1.2.3.4 "Port Protocol =" TCP "Port =" 1234 "Accetta 'Firewall-CMD--Reload
Se necessario, sostituire il pubblico con la zona desiderata, 1.2.3.4. con l’IP corretto e 1234 e TCP con il numero di porta / protocollo corretto.
Controllo delle porte bloccate
Supponiamo che un indirizzo IP abbia problemi a raggiungere un servizio sul vice VPS, è quindi utile escludere se è bloccato sul vps. Lo fai con il comando:
firewall-cmd-list-all
Sbloccare IPS
Per sbloccare gli IP bloccati in firewalld, in un certo senso, invertire i comandi dalla sezione precedente. Supponiamo di aver bloccato un intervallo IP / IP, quindi utilizza la sintassi:
firewall-cmd --permanent--rimuove-rich-role = "regola family = 'ipv4' Indirizzo di origine = '123.123.123.0/24 'rifiuto "firewall-cmd--relaoad
Non dimenticare di regolare l’IP qui. Hai dato un indirizzo IP specifico l’accesso a una porta e vuoi annullarla? Quindi usa:
firewall-cmd --permanent --zone = public--rimuove-rich-role = '
Rule Family = "IPv4" Indirizzo sorgente = "1.2.3.4 "Port Protocol =" TCP "Port =" 1234 "Accetta 'Firewall-CMD--Reload
Vuoi sapere ancora di più su Firewalld? Facci sapere e dai un’occhiata anche alla documentazione di Firewalld.
In caso di domande su questo articolo, non esitare a contattare il nostro dipartimento di supporto. Puoi raggiungerli tramite il ‘Contattaci’ pulsante nella parte inferiore di questa pagina.
Se vuoi discutere questo articolo con altri utenti, lascia un messaggio sotto “Commenti‘.
- In questo articolo:
- Installazione di firewalld
- Controllare lo stato di Firewalld
- Zone
- Gestire le zone
- Porte di apertura
- Porte di chiusura
- Aggiunta di servizi
- Rimozione dei servizi
- Bloccare IP
- Sbloccare IPS
Come impostare un firewall usando firewalld su centos 7
Firewalld è una soluzione di gestione del firewall disponibile per molte distribuzioni Linux che funge da frontend per il sistema di filtraggio dei pacchetti iptables fornito dal kernel Linux. In questa guida, tratteremo come impostare un firewall per il tuo server e mostrarti le basi della gestione del firewall con lo strumento amministrativo Firewall-CMD (se tu’D piuttosto usare iptables with centOS, seguire questa guida).
Nota: C’è la possibilità che tu possa lavorare con una versione più recente di firewalld di quella disponibile al momento della scrittura o che il tuo server sia stato impostato in modo leggermente diverso rispetto al server di esempio utilizzato in questa guida. Il comportamento di alcuni dei comandi spiegati in questa guida può variare a seconda della configurazione specifica.
Concetti di base in firewalld
Prima di iniziare a parlare di come utilizzare effettivamente l’utilità di firewall-cmd per gestire la tua configurazione del firewall, dovremmo familiarizzare con alcuni concetti di base che lo strumento introduce.
Zone
Il demone firewalld gestisce gruppi di regole usando entità chiamate “zone”. Le zone sono fondamentalmente serie di regole che determinano ciò che il traffico dovrebbe essere consentito a seconda del livello di fiducia che hai nelle reti a cui il tuo computer è connesso. Alle interfacce di rete viene assegnata una zona per dettare il comportamento che il firewall dovrebbe consentire.
Per i computer che potrebbero spostarsi frequentemente tra le reti (come i laptop), questo tipo di flessibilità fornisce un buon metodo per modificare le regole a seconda del tuo ambiente. Potresti avere regole rigorose in atto che vietano la maggior parte del traffico quando si opera su una rete WiFi pubblica, consentendo al contempo restrizioni più rilassate quando è connesso alla rete domestica. Per un server, queste zone non sono così immediatamente importanti perché l’ambiente di rete raramente, se mai, cambia.
Indipendentemente da quanto possa essere dinamico l’ambiente di rete, è comunque utile avere familiarità con l’idea generale dietro ciascuna delle zone predefinite per Firewalld . In ordine da meno fidato A più fidati, Le zone predefinite all’interno di Firewalld sono:
- gocciolare: Il livello più basso di fiducia. Tutte le connessioni in arrivo vengono eliminate senza risposta e sono possibili solo connessioni in uscita.
- bloccare: Simile a quanto sopra, ma invece di eliminare semplicemente le connessioni, le richieste in arrivo vengono respinte con un messaggio proto-proibito ICMP-Host o ICMP6-ADM.
- pubblico: Rappresenta reti pubbliche e non affidate. Don’t Fidati di altri computer ma può consentire connessioni in arrivo selezionate caso per caso.
- esterno: Reti esterne nel caso in cui tu stia usando il firewall come gateway. È configurato per il mascheraggio NAT in modo che la tua rete interna rimanga privata ma raggiungibile.
- interno: L’altro lato della zona esterna, utilizzata per la porzione interna di un gateway. I computer sono abbastanza affidabili e sono disponibili alcuni servizi aggiuntivi.
- DMZ: Utilizzato per i computer situati in una DMZ (computer isolati che non avranno accesso al resto della rete). Sono consentite solo alcune connessioni in arrivo.
- lavoro: Usato per le macchine da lavoro. Fidati della maggior parte dei computer nella rete. Potrebbero essere consentiti qualche altro servizio.
- casa: Un ambiente domestico. In genere implica che ti fidi della maggior parte degli altri computer e che saranno accettati alcuni altri servizi.
- fidato: Fidati di tutte le macchine nella rete. Il più aperto delle opzioni disponibili e dovrebbe essere utilizzato con parsimonia.
Per utilizzare il firewall, possiamo creare regole e modificare le proprietà delle nostre zone e quindi assegnare le nostre interfacce di rete a qualunque zone sia più appropriata.
Permanenza della regola
In firewalld, le regole possono essere designate come permanenti o immediate. Se una regola viene aggiunta o modificata, per impostazione predefinita, viene modificato il comportamento del firewall attualmente in esecuzione. Al prossimo avvio, le modifiche verranno eliminate e verranno applicate le vecchie regole.
La maggior parte delle operazioni di firewall-cmd può prendere la bandiera permanente per indicare che il firewall non afemerale dovrebbe essere preso di mira. Ciò influirà sul set di regole che viene ricaricato al momento dell’avvio. Questa separazione significa che è possibile testare le regole nell’istanza del firewall attivo e quindi ricaricare se ci sono problemi. È inoltre possibile utilizzare la flag -permanent per costruire un intero set di regole nel tempo che verranno applicate in una sola volta quando viene emesso il comando di ricarica.
Installa e abilita il tuo firewall per iniziare all’avvio
Firewalld è installato per impostazione predefinita su alcune distribuzioni Linux, tra cui molte immagini di CentOS 7. Tuttavia, potrebbe essere necessario per te installare Firewalls da solo:
Dopo aver installato firewalld, è possibile abilitare il servizio e riavviare il server. Tieni presente che abilitare Firewalld farà l’avvio del servizio all’avvio. È migliore pratica creare le tue regole del firewall e cogliere l’occasione per testarle prima di configurare questo comportamento al fine di evitare potenziali problemi.
Quando il server si riavvia, il firewall dovrebbe essere sollevato, le interfacce di rete dovrebbero essere inserite nelle zone configurate (o rientrare nella zona predefinita configurata) e tutte le regole associate alle zone verranno applicate alle interfacce associate.
Possiamo verificare che il servizio sia in esecuzione e raggiungibile digitando:
Produzionecorsa
Ciò indica che il nostro firewall è attivo e funzionante con la configurazione predefinita.
Acquisire familiarità con le attuali regole del firewall
Prima di iniziare a apportare modifiche, dovremmo familiarizzare con l’ambiente predefinito e le regole fornite dal demone.
Esplorare le impostazioni predefinite
Possiamo vedere quale zona è attualmente selezionata come impostazione predefinita mediante:
Produzionepubblico
Da quando non abbiamo’t Dato firewalld qualsiasi comando da deviare dalla zona predefinita e nessuna delle nostre interfacce è configurata per legarsi a un’altra zona, quella zona sarà anche l’unica “attivo” zona (la zona che controlla il traffico per le nostre interfacce). Possiamo verificarlo digitando:
ProduzioneInterfacce pubbliche: ETH0 ETH1
Qui, possiamo vedere che il nostro server di esempio ha due interfacce di rete controllate dal firewall (ETH0 ed ETH1). Entrambi sono attualmente gestiti secondo le regole definite per la zona pubblica.
Come facciamo a sapere quali regole sono associate alla zona pubblica? Possiamo stampare la zona predefinita’Configurazione S digitando:
ProduzionePublic (Default, Active) Target: predefinito ICMP-Block-Inversion: Nessuna Interfacce: ETH0 ETH1 Fonti: Servizi: SSH DHCPV6-Client Porte: Protocolli: Masquerade: Nessun porto forward: Porte di origine: ICMP-Blocchi: RICH REGOLE: RICH REGOLE: RICH REGOLE: RICH REGOLE: RICH ROLEGGI: RICH REGOLE: RICH REGOLE: RICH REGOLE: RICH REGOLE: RICH ROLEGGI: RICH ROLEGGI: RICH ROLEGGI: RICH ROLEGGI: RICH ROLEGER: RICH ROLEGER: RICH ROLEGER: RICH ROLEGER: RICH ROLEGER: RICH ROLER
Dall’output possiamo dire che questa zona è sia predefinita che attiva e che le interfacce ETH0 ed ETH1 sono associate a questa zona (sapevamo già tutto questo dalle nostre precedenti indagini). Tuttavia, possiamo anche vedere che questa zona consente le normali operazioni associate a un client DHCP (per l’assegnazione dell’indirizzo IP) e SSH (per amministrazione remota).
Esplorare zone alternative
Ora abbiamo una buona idea della configurazione per la zona predefinita e attiva. Possiamo scoprire anche informazioni su altre zone.
Per ottenere un elenco delle zone disponibili, tipo:
ProduzioneBlocco DMZ Drop External Home Public Internal Trusted Work
Possiamo vedere la configurazione specifica associata a una zona includendo il parametro –zone = nel nostro comando–list-all:
Produzionehome target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
È possibile produrre tutte le definizioni della zona utilizzando l’opzione–list-all-zones. Probabilmente ti consigliamo di eliminare l’uscita in un cercapersone per una visione più semplice:
Selezionando le zone per le tue interfacce
A meno che non abbia configurato le interfacce di rete altrimenti, ogni interfaccia verrà inserita nella zona predefinita quando il firewall viene avviato.
Cambiare la zona di un’interfaccia
È possibile trasferire un’interfaccia tra le zone durante una sessione utilizzando il parametro –Zone = in combinazione con il parametro –change-interface =. Come per tutti i comandi che modificano il firewall, dovrai usare Sudo .
Ad esempio, possiamo passare la nostra interfaccia ETH0 al “casa” zona digitando questo:
Produzionesuccesso
Nota: Ogni volta che si sta trasferendo un’interfaccia in una nuova zona, tieni presente che probabilmente stai modificando i servizi che saranno operativi. Ad esempio, qui ci stiamo trasferendo al “casa” Zona, che ha SSH disponibile. Ciò significa che la nostra connessione non dovrebbe’t caduta. Alcune altre zone non hanno ssh abilitato per impostazione predefinita e se la connessione viene eliminata durante l’utilizzo di una di queste zone, potresti ritrovarti incapace di accedere.
Possiamo verificare che ciò abbia avuto successo chiedendo di nuovo le zone attive:
ProduzioneInterfacce domestiche: ETH0 Public Interfaces: ETH1
Regolazione della zona predefinita
Se tutte le tue interfacce possono essere gestite al meglio da una singola zona, esso’S Probabilmente più facile selezionare la migliore zona predefinita e quindi usarla per la configurazione.
È possibile modificare la zona predefinita con il parametro–set-default-zone =. Ciò cambierà immediatamente qualsiasi interfaccia che era ricaduta sul valore predefinito nella nuova zona:
Produzionesuccesso
Impostazione delle regole per le tue applicazioni
Il modo base di definire le eccezioni del firewall per i servizi che si desidera rendere disponibili è abbastanza semplice. Noi’Funzionerà l’idea di base qui.
Aggiunta di un servizio alle tue zone
Il metodo più semplice è aggiungere i servizi o le porte necessarie alle zone che si utilizzano. Ancora una volta, puoi ottenere un elenco dei servizi disponibili con l’opzione –get-services:
ProduzioneRH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-Client Tinc TIN SOCKS TRASMISSIONE-Client VDSM VNC-Server WBEM-HTPS XMPP-BOSH XMPP-Client XMPP-Local XMPP-Server
Nota: Puoi ottenere maggiori dettagli su ciascuno di questi servizi guardando i loro associati .File XML all’interno della directory/usr/lib/firewalld/servizi. Ad esempio, il servizio SSH è definito in questo modo:
/usr/lib/firewalld/servizi/ssh.XML
servizio> corto>Sshcorto> descrizione>Secure Shell (SSH) è un protocollo per l'accesso e l'esecuzione di comandi su macchine remote. Fornisce comunicazioni crittografate sicure. Se hai intenzione di accedere alla macchina in remoto tramite SSH su un'interfaccia firewall, abilita questa opzione. È necessario il pacchetto OpenSsh-Server installato affinché questa opzione sia utile.descrizione> porta protocollo="TCP" porta="22"/> servizio>
È possibile abilitare un servizio per una zona utilizzando il parametro –Add-Service =. L’operazione prenderà di mira la zona predefinita o qualunque zona sia specificata dal parametro –Zone =. Per impostazione predefinita, questo regolerà solo la sessione di firewall corrente. È possibile regolare la configurazione permanente del firewall includendo la flag -permanent.
Ad esempio, se stiamo eseguendo un server Web che serve traffico HTTP convenzionale, possiamo consentire questo traffico per le interfacce nel nostro “pubblico” zona per questa sessione digitando:
Puoi tralasciare il –zone = se si desidera modificare la zona predefinita. Possiamo verificare che l’operazione abbia avuto successo utilizzando le operazioni di-list-all o–list-services:
Produzionedhcpv6-client http ssh
Una volta testato che tutto funziona come dovrebbe, probabilmente vorrai modificare le regole permanenti del firewall in modo che il tuo servizio sia ancora disponibile dopo un riavvio. Possiamo fare il nostro “pubblico” Cambio di zona permanente mediante digitazione:
Produzionesuccesso
Puoi verificare che ciò abbia avuto successo aggiungendo la bandiera permanente all’operazione–list-service. Devi usare Sudo per qualsiasi operazione permanente:
Produzionedhcpv6-client http ssh
Tuo “pubblico” La zona ora consentirà il traffico Web HTTP sulla porta 80. Se il tuo server Web è configurato per utilizzare SSL/TLS, tu’Ll desidera anche aggiungere il servizio HTTPS. Possiamo aggiungerlo alla sessione corrente e al set di regole permanenti digitando:
Cosa succede se non è disponibile alcun servizio appropriato?
I servizi di firewall inclusi nell’installazione di firewalld rappresentano molti dei requisiti più comuni per le applicazioni a cui è possibile consentire l’accesso a. Tuttavia, ci saranno probabilmente scenari in cui questi servizi non soddisfano le tue esigenze.
In questa situazione, hai due opzioni.
Aprire una porta per le tue zone
Un modo per aggiungere supporto per l’applicazione specifica è aprire le porte che utilizza nelle zone appropriate. Questo viene fatto specificando la porta o l’intervallo di porte e il protocollo associato per le porte che è necessario aprire.
Ad esempio, se la nostra applicazione viene eseguita sulla porta 5000 e utilizza TCP, potremmo aggiungere questo al “pubblico” Zona per questa sessione usando il parametro –Add-Port =. I protocolli possono essere TCP o UDP:
Produzionesuccesso
Possiamo verificare che ciò sia riuscito a utilizzare l’operazione–list-ports:
Produzione5000/TCP
È anche possibile specificare un intervallo sequenziale di porte separando la porta iniziale e finale nell’intervallo con un trattino. Ad esempio, se la nostra applicazione utilizza le porte UDP da 4990 a 4999, potremmo aprirle su “pubblico” Digitando:
Dopo il test, probabilmente vorremmo aggiungerli al firewall permanente. Puoi farlo digitando:
ProduzioneSuccesso successo 5000/TCP 4990-4999/UDP
Definizione di un servizio
L’apertura delle porte per le tue zone è facile, ma può essere difficile tenere traccia di ciò che ciascuno è. Se mai disattivato un servizio sul tuo server, potresti avere difficoltà a ricordare quali porte che sono state aperte sono ancora necessarie. Per evitare questa situazione, è possibile definire un servizio.
I servizi sono raccolte di porte con un nome e una descrizione associati. L’uso dei servizi è più facile da amministrare rispetto alle porte, ma richiede un po ‘di lavoro iniziale. Un buon modo per iniziare è copiare uno script esistente (trovato in/usr/lib/firewalld/servizi) nella directory/etc/firewalld/servizi in cui il firewall cerca definizioni non standard.
Ad esempio, potremmo copiare la definizione del servizio SSH da utilizzare per il nostro “esempio” Definizione del servizio come questa. Il nome file meno il .Il suffisso XML detterà il nome del servizio all’interno dell’elenco dei servizi firewall:
Ora puoi regolare la definizione trovata nel file che hai copiato:
Per iniziare, il file conterrà la definizione SSH che hai copiato:
/etc/firewalld/servizi/esempio.XML
servizio> corto>Sshcorto> descrizione>Secure Shell (SSH) è un protocollo per l'accesso e l'esecuzione di comandi su macchine remote. Fornisce comunicazioni crittografate sicure. Se hai intenzione di accedere alla macchina in remoto tramite SSH su un'interfaccia firewall, abilita questa opzione. È necessario il pacchetto OpenSsh-Server installato affinché questa opzione sia utile.descrizione> porta protocollo="TCP" porta="22"/> servizio>
La maggior parte di questa definizione è in realtà i metadati. Ti consigliamo di modificare il nome corto per il servizio all’interno dei tag. Questo è un nome leggibile dall’uomo per il tuo servizio. Dovresti anche aggiungere una descrizione in modo da avere maggiori informazioni se hai bisogno di controllare il servizio. L’unica configurazione che devi fare che influisce effettivamente la funzionalità del servizio sarà probabilmente la definizione della porta in cui si identifica il numero di porta e il protocollo che si desidera aprire. Questo può essere specificato più volte.
Per noi “esempio” Servizio, immagina di dover aprire la porta 7777 per TCP e 8888 per UDP. Isando la modalità Insert premendo I, possiamo modificare la definizione esistente con qualcosa del genere:
/etc/firewalld/servizi/esempio.XML
servizio> corto>Servizio di esempiocorto> descrizione>Questo è solo un servizio di esempio. Probabilmente non dovrebbe essere usato su un sistema reale.descrizione> porta protocollo="TCP" porta="7777"/> porta protocollo="UDP" porta="8888"/> servizio>
Premere ESC, quindi immettere: x per salvare e chiudere il file.
Ricarica il tuo firewall per accedere al tuo nuovo servizio:
Puoi vedere che ora è tra l’elenco dei servizi disponibili:
ProduzioneRH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch esempio freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
Ora puoi utilizzare questo servizio nelle tue zone come faresti normalmente.
Creare le tue zone
Mentre le zone predefinite saranno probabilmente più che sufficienti per la maggior parte degli utenti, può essere utile definire le tue zone più descrittive della loro funzione.
Ad esempio, potresti voler creare una zona per il tuo server web, chiamata “PublicWeb”. Tuttavia, potresti voler avere un’altra zona configurata per il servizio DNS fornito sulla tua rete privata. Potresti voler una zona chiamata “privatedns” per quello.
Quando si aggiunge una zona, è necessario aggiungerla alla configurazione permanente del firewall. È quindi possibile ricaricare per portare la configurazione nella sessione in esecuzione. Ad esempio, potremmo creare le due zone che abbiamo discusso sopra mediante digitazione:
Puoi verificare che questi siano presenti nella configurazione permanente digitando:
ProduzioneBlocco DMZ Drop External Home Internal privatedns pubblico PublicWeb lavoro di fiducia
Come affermato in precedenza, questi hanno vinto’essere disponibile nell’istanza attuale del firewall ancora:
ProduzioneBlocco DMZ Drop External Home Public Internal Trusted Work
Ricarica il firewall per portare queste nuove zone nella configurazione attiva:
ProduzioneBlocco DMZ Drop External Home Internal privatedns pubblico PublicWeb lavoro di fiducia
Ora puoi iniziare a assegnare i servizi e le porte appropriate alle tue zone. Esso’S di solito una buona idea per regolare l’istanza attiva e quindi trasferire tali modifiche alla configurazione permanente dopo il test. Ad esempio, per il “PublicWeb” Zona, potresti voler aggiungere i servizi SSH, HTTP e HTTPS:
ProduzionePublicWeb Target: predefinito ICMP-Block-Inversion: Nessuna Interfacce: Fonti: Servizi: SSH HTTP HTTPS PORTS: Protocolli: Masquerade: Nessun Porte Forward: Source-Ports: ICMP-Blocks: Rich Regole: RICH: RICH REGOLE:
Allo stesso modo, possiamo aggiungere il servizio DNS al nostro “privatedns” zona:
ProduzionePrivatedNS Interfaces: Fonti: Servizi: DNS Porte: Masquerade: Nessun Porte in avanti: ICMP-Blocks: Rich Rules:
Potremmo quindi cambiare le nostre interfacce in queste nuove zone per testarle:
A questo punto, hai l’opportunità di testare la configurazione. Se questi valori funzionano per te, vorrai aggiungere le stesse regole alla configurazione permanente. Puoi farlo riapplicando le regole con la bandiera-permanente:
Dopo aver applicato in modo permanente queste regole, puoi riavviare la rete e ricaricare il servizio firewall:
Convalida che sono state assegnate le zone corrette:
ProduzioneInterfacce privatedNS: ETH1 PublicWeb Interfaces: ETH0
E convalidare che i servizi appropriati sono disponibili per entrambe le zone:
Produzionehttp https ssh
ProduzioneDNS
Hai impostato correttamente le tue zone! Se si desidera creare una di queste zone il valore predefinito per altre interfacce, ricorda di configurare quel comportamento con il parametro-Set-Default-Zone =:
Sudo Firewall-CMD-Set-Default-Zone = PublicWeb
Conclusione
Ora dovresti avere una buona comprensione di come amministrare il servizio firewalld sul tuo sistema CentOS per uso quotidiano.
Il servizio firewalld consente di configurare regole e set di regole mantenute che prendono in considerazione l’ambiente di rete. Ti consente di passare perfettamente tra le diverse politiche del firewall attraverso l’uso delle zone e offre agli amministratori la possibilità di astrarre la gestione delle porte in definizioni di servizi più amichevoli. L’acquisizione di una conoscenza pratica di questo sistema ti consentirà di sfruttare la flessibilità e la potenza che questo strumento fornisce.
Proteggere facilmente la tua infrastruttura e definire quali servizi sono visibili sui server utilizzando i firewall cloud digitali. I nostri firewall cloud sono gratuiti e perfetti per la messa in scena e le distribuzioni di produzione.
Come impostare un firewall usando firewalld su centos 8
Firewalld è un software di gestione del firewall disponibile per molte distribuzioni Linux, che funge da frontend per Linux’Sistemi di filtro pacchetti NfTables o iptables in-kernel.
In questa guida, ti mostreremo come impostare un firewall firewalld per il tuo server CentOS 8 e coprire le basi della gestione del firewall con lo strumento amministrativo Firewall-CMD.
Prerequisiti
Per completare questo tutorial, avrai bisogno di un server che esegue CentOS 8. Supponiamo che tu abbia effettuato l’accesso a questo server come non-radice, utente sudo -abilitato. Per impostare questo, consultare la nostra configurazione del server iniziale per la guida CentOS 8.
Concetti di base in firewalld
Prima di iniziare a parlare di come utilizzare effettivamente l’utilità di firewall-cmd per gestire la tua configurazione del firewall, dovremmo familiarizzare con alcuni concetti che lo strumento introduce.
Zone
Il demone firewalld gestisce gruppi di regole usando entità chiamate zone. Le zone sono serie di regole che determinano quale traffico dovrebbe essere consentito a seconda del livello di fiducia che hai nella rete. Le interfacce di rete sono assegnate a una zona per dettare il comportamento che il firewall dovrebbe consentire.
Per i computer che potrebbero spostarsi frequentemente tra le reti (come i laptop), questo tipo di flessibilità fornisce un buon metodo per modificare le regole a seconda del tuo ambiente. Potresti avere regole rigorose in atto che vietano la maggior parte del traffico quando si opera su una rete WiFi pubblica, consentendo al contempo restrizioni più rilassate quando è connesso alla rete domestica. Per un server, queste zone spesso non sono così importanti perché l’ambiente di rete raramente, se mai, cambia.
Indipendentemente da quanto possa essere dinamico l’ambiente di rete, è comunque utile avere familiarità con l’idea generale dietro ciascuna delle zone predefinite per Firewalld . Le zone predefinite all’interno di firewalld sono, in ordine da meno fidato A più fidati:
- gocciolare: Il livello più basso di fiducia. Tutte le connessioni in arrivo vengono eliminate senza risposta e sono possibili solo connessioni in uscita.
- bloccare: Simile a quanto sopra, ma invece di eliminare semplicemente le connessioni, le richieste in arrivo vengono respinte con un messaggio proto-proibito ICMP-Host o ICMP6-ADM.
- pubblico: Rappresenta reti pubbliche e non affidate. Don’t Fidati di altri computer ma può consentire connessioni in arrivo selezionate caso per caso.
- esterno: Reti esterne nel caso in cui tu stia usando il firewall come gateway. È configurato per il mascheraggio NAT in modo che la tua rete interna rimanga privata ma raggiungibile.
- interno: L’altro lato della zona esterna, utilizzata per la porzione interna di un gateway. I computer sono abbastanza affidabili e sono disponibili alcuni servizi aggiuntivi.
- DMZ: Utilizzato per i computer situati in una DMZ (computer isolati che non avranno accesso al resto della rete). Sono consentite solo alcune connessioni in arrivo.
- lavoro: Usato per le macchine da lavoro. Fidati della maggior parte dei computer nella rete. Potrebbero essere consentiti qualche altro servizio.
- casa: Un ambiente domestico. In genere implica che ti fidi della maggior parte degli altri computer e che saranno accettati alcuni altri servizi.
- fidato: Fidati di tutte le macchine nella rete. Il più aperto delle opzioni disponibili e dovrebbe essere utilizzato con parsimonia.
Per utilizzare il firewall, possiamo creare regole e modificare le proprietà delle nostre zone e quindi assegnare le nostre interfacce di rete a qualunque zone sia più appropriata.
Permanenza della regola
In firewalld, le regole possono essere applicate alla corrente Runtime regolet o essere fatto permanente. Quando viene aggiunta o modificata una regola, Per impostazione predefinita, viene modificato solo il firewall attualmente in esecuzione. Dopo il prossimo riavvio – o ricaricare il servizio firewalld – rimarranno solo le regole permanenti.
La maggior parte delle operazioni di firewall-cmd può prendere una bandiera permanente per indicare che le modifiche dovrebbero essere applicate alla configurazione permanente. Inoltre, il firewall attualmente in esecuzione può essere salvato alla configurazione permanente con il comando firewall-cmd–runtime-to-permanent.
Questa separazione di runtime vs configurazione permanente significa che è possibile testare in sicurezza le regole nel firewall attivo, quindi ricaricare per ricominciare se ci sono problemi.
Installazione e abilitazione Firewalld
Firewalld è installato per impostazione predefinita su alcune distribuzioni Linux, tra cui molte immagini di CentOS 8. Tuttavia, potrebbe essere necessario per te installare Firewalls da solo:
Dopo aver installato firewalld, è possibile abilitare il servizio e riavviare il server. Tieni presente che abilitare Firewalld farà l’avvio del servizio all’avvio. È migliore pratica creare le tue regole del firewall e cogliere l’occasione per testarle prima di configurare questo comportamento al fine di evitare potenziali problemi.
Quando il server si riavvia, il firewall dovrebbe essere sollevato, le interfacce di rete dovrebbero essere inserite nelle zone configurate (o rientrare nella zona predefinita configurata) e tutte le regole associate alle zone verranno applicate alle interfacce associate.
Possiamo verificare che il servizio sia in esecuzione e raggiungibile digitando:
Produzionecorsa
Ciò indica che il nostro firewall è attivo e funzionante con la configurazione predefinita.
Acquisire familiarità con le attuali regole del firewall
Prima di iniziare a apportare modifiche, dovremmo familiarizzare con l’ambiente predefinito e le regole fornite da Firewalld.
Esplorare le impostazioni predefinite
Possiamo vedere quale zona è attualmente selezionata come impostazione predefinita mediante:
Produzionepubblico
Da quando non abbiamo’t Dato firewalld qualsiasi comando da deviare dalla zona predefinita e nessuna delle nostre interfacce è configurata per legarsi a un’altra zona, quella zona sarà anche l’unica attivo zona (la zona che controlla il traffico per le nostre interfacce). Possiamo verificarlo digitando:
ProduzioneInterfacce pubbliche: ETH0 ETH1
Qui, possiamo vedere che il nostro server di esempio ha due interfacce di rete controllate dal firewall (ETH0 ed ETH1). Entrambi sono attualmente gestiti secondo le regole definite per pubblico zona.
Come facciamo a sapere quali regole sono associate al pubblico zona però? Possiamo stampare la zona predefinita’Configurazione S digitando:
ProduzionePublic (active) Target: predefinito ICMP-Block-Inversion: nessuna interfacce: ETH0 ETH1 Fonti: Servizi: cabina di pilotaggio dhcpv6-client ssh Porte: Protocolli: Masquerade: Nessun porto in avanti: Porti di origine: ICMP-blocchi: Rich Regole:
Dall’output possiamo dire che questa zona è sia predefinita che attiva e che le interfacce ETH0 ed ETH1 sono associate a questa zona (sapevamo già tutto questo dalle nostre precedenti indagini). Tuttavia, possiamo anche vedere che questa zona consente il traffico per un client DHCP (per l’assegnazione degli indirizzi IP), SSH (per l’amministrazione remota) e una cabina di pilotaggio (una console basata sul Web).
Esplorare zone alternative
Ora abbiamo una buona idea della configurazione per la zona predefinita e attiva. Possiamo scoprire anche informazioni su altre zone.
Per ottenere un elenco delle zone disponibili, tipo:
ProduzioneBlocco DMZ Drop External Home Public Internal Trusted Work
Possiamo vedere la configurazione specifica associata a una zona includendo il parametro –zone = nel nostro comando–list-all:
Produzionehome target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
È possibile produrre tutte le definizioni della zona utilizzando l’opzione–list-all-zones. Probabilmente ti consigliamo di eliminare l’uscita in un cercapersone per una visione più semplice:
Successivamente impareremo a conoscere le zone alle interfacce di rete.
Selezionando le zone per le tue interfacce
A meno che non abbia configurato le interfacce di rete altrimenti, ogni interfaccia verrà inserita nella zona predefinita quando viene avviato il firewall.
Cambiare la zona di un’interfaccia
È possibile spostare un’interfaccia tra le zone durante una sessione usando il parametro –Zone = in combinazione con il parametro –change-interface =. Come per tutti i comandi che modificano il firewall, dovrai usare Sudo .
Ad esempio, possiamo spostare la nostra interfaccia ETH0 su casa zona digitando questo:
Produzionesuccesso
Nota: Ogni volta che si sposta un’interfaccia in una nuova zona, tieni presente che probabilmente stai modificando quali servizi saranno operativi. Ad esempio, qui ci stiamo trasferendo al casa Zona, che ha SSH disponibile. Ciò significa che la nostra connessione non dovrebbe’t caduta. Alcune altre zone non hanno ssh abilitato per impostazione predefinita e passare a una di queste zone potrebbe far cadere la connessione, impedendoti di accedere al server del server.
Possiamo verificare che ciò abbia avuto successo chiedendo di nuovo le zone attive:
ProduzioneInterfacce domestiche: ETH0 Public Interfaces: ETH1
Regolazione della zona predefinita
Se tutte le tue interfacce possono essere gestite bene da una singola zona, esso’è probabilmente più facile designare la zona migliore come predefinita e quindi usarla per la tua configurazione.
È possibile modificare la zona predefinita con il parametro–set-default-zone =. Ciò cambierà immediatamente qualsiasi interfaccia utilizzando la zona predefinita:
Produzionesuccesso
Impostazione delle regole per le tue applicazioni
Permettere’s eseguire attraverso il modo base di definire le eccezioni del firewall per i servizi che si desidera rendere disponibili.
Aggiunta di un servizio alle tue zone
Il metodo più diretto è quello di aggiungere i servizi o le porte necessarie alle zone che si utilizzano. Puoi ottenere un elenco delle definizioni di servizio disponibili con l’opzione –get-services:
ProduzioneRH-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
Nota: Puoi ottenere maggiori dettagli su ciascuno di questi servizi guardando i loro associati .File XML all’interno della directory/usr/lib/firewalld/servizi. Ad esempio, il servizio SSH è definito in questo modo:
/usr/lib/firewalld/servizi/ssh.XML
servizio> corto>Sshcorto> descrizione>Secure Shell (SSH) è un protocollo per l'accesso e l'esecuzione di comandi su macchine remote. Fornisce comunicazioni crittografate sicure. Se hai intenzione di accedere alla macchina in remoto tramite SSH su un'interfaccia firewall, abilita questa opzione. È necessario il pacchetto OpenSsh-Server installato affinché questa opzione sia utile.descrizione> porta protocollo="TCP" porta="22"/> servizio>
È possibile abilitare un servizio per una zona utilizzando il parametro –Add-Service =. L’operazione prenderà di mira la zona predefinita o qualunque zona sia specificata dal parametro –Zone =. Per impostazione predefinita, questo regolerà solo la sessione di firewall corrente. È possibile regolare la configurazione permanente del firewall includendo la flag -permanent.
Ad esempio, se stiamo eseguendo un server Web che serve traffico HTTP convenzionale, possiamo temporaneamente consentire questo traffico per le interfacce nel nostro pubblico Zona mediante digitazione:
Puoi tralasciare il flag –zone = se si desidera modificare la zona predefinita. Possiamo verificare che l’operazione abbia avuto successo utilizzando le operazioni di-list-all o–list-services:
ProduzioneCockpit DHCPV6-Client http ssh
Una volta testato che tutto funziona come dovrebbe, probabilmente vorrai modificare le regole permanenti del firewall in modo che il tuo servizio sia ancora disponibile dopo un riavvio. Possiamo rendere permanente il nostro cambiamento precedente retipitandolo e aggiungendo la bandiera -permanente:
Produzionesuccesso
In alternativa, è possibile utilizzare il flag–Runtime a permanente per salvare la configurazione del firewall attualmente in esecuzione sulla configurazione permanente:
Stai attento a questo, come Tutto Le modifiche apportate al firewall in esecuzione saranno impegnate permanentemente.
Qualunque metodo tu abbia scelto, puoi verificare che abbia avuto successo aggiungendo la bandiera permanente all’operazione–list-service. Devi usare Sudo per qualsiasi operazione permanente:
ProduzioneCockpit DHCPV6-Client http ssh
Tuo pubblico La zona ora consentirà il traffico Web HTTP sulla porta 80. Se il tuo server Web è configurato per utilizzare SSL/TLS, tu’Ll desidera anche aggiungere il servizio HTTPS. Possiamo aggiungerlo alla sessione corrente e al set di regole permanenti digitando:
Cosa succede se non è disponibile alcun servizio appropriato?
I servizi che sono inclusi nell’installazione di Firewalld rappresentano molte delle applicazioni più comuni a cui è possibile consentire l’accesso a. Tuttavia, ci saranno probabilmente scenari in cui questi servizi non soddisfano le tue esigenze.
In questa situazione, hai due opzioni.
Aprire una porta per le tue zone
Il modo più semplice per aggiungere supporto per l’applicazione specifica è aprire le porte che utilizza nelle zone appropriate. Questo viene fatto specificando la porta o l’intervallo delle porte e il protocollo associato (TCP o UDP) per le porte.
Ad esempio, se la nostra applicazione viene eseguita sulla porta 5000 e utilizza TCP, potremmo temporaneamente aggiungerlo al pubblico Zona usando il parametro –Add-Port =. I protocolli possono essere designati come TCP o UDP:
Produzionesuccesso
Possiamo verificare che ciò sia riuscito a utilizzare l’operazione–list-ports:
Produzione5000/TCP
È anche possibile specificare un intervallo sequenziale di porte separando la porta iniziale e finale nell’intervallo con un trattino. Ad esempio, se la nostra applicazione utilizza le porte UDP da 4990 a 4999, potremmo aprirle su pubblico Digitando:
Dopo il test, probabilmente vorremmo aggiungerli al firewall permanente. Usa sudo firewall-cmd–rultime-to-permanent per farlo o eseguiti i comandi con la bandiera-permanente:
ProduzioneSuccesso successo 5000/TCP 4990-4999/UDP
Definizione di un servizio
L’apertura delle porte per le tue zone è una soluzione semplice, ma può essere difficile tenere traccia di ciò che ognuno è. Se mai disattivato un servizio sul tuo server, potresti avere difficoltà a ricordare quali porte che sono state aperte sono ancora necessarie. Per evitare questa situazione, è possibile definire un nuovo servizio.
I servizi sono raccolte di porte con un nome e una descrizione associati. L’uso dei servizi è più facile da amministrare rispetto alle porte, ma richiede un po ‘di lavoro iniziale. Il modo più semplice per iniziare è copiare uno script esistente (trovato in/usr/lib/firewalld/servizi) nella directory/etc/firewalld/servizi in cui il firewall cerca definizioni non standard.
Ad esempio, potremmo copiare la definizione del servizio SSH da utilizzare per il nostro esempio Definizione del servizio come questa. Il nome file meno il .Il suffisso XML detterà il nome del servizio all’interno dell’elenco dei servizi firewall:
Ora puoi regolare la definizione trovata nel file che hai copiato. Prima aprilo nel tuo editor di testo preferito. Noi’usi VI qui:
Per iniziare, il file conterrà la definizione SSH che hai copiato:
/etc/firewalld/servizi/esempio.XML
servizio> corto>Sshcorto> descrizione>Secure Shell (SSH) è un protocollo per l'accesso e l'esecuzione di comandi su macchine remote. Fornisce comunicazioni crittografate sicure. Se hai intenzione di accedere alla macchina in remoto tramite SSH su un'interfaccia firewall, abilita questa opzione. È necessario il pacchetto OpenSsh-Server installato affinché questa opzione sia utile.descrizione> porta protocollo="TCP" porta="22"/> servizio>
La maggior parte di questa definizione è in realtà i metadati. Ti consigliamo di modificare il nome corto per il servizio all’interno dei tag. Questo è un nome leggibile dall’uomo per il tuo servizio. Dovresti anche aggiungere una descrizione in modo da avere maggiori informazioni se hai bisogno di controllare il servizio. L’unica configurazione che devi fare che influisce effettivamente la funzionalità del servizio sarà probabilmente la definizione della porta in cui si identifica il numero di porta e il protocollo che si desidera aprire. È possibile specificare più tag.
Per noi esempio Servizio, immagina di dover aprire la porta 7777 per TCP e 8888 per UDP. Possiamo modificare la definizione esistente con qualcosa del genere:
/etc/firewalld/servizi/esempio.XML
servizio> corto>Servizio di esempiocorto> descrizione>Questo è solo un servizio di esempio. Probabilmente non dovrebbe essere usato su un sistema reale.descrizione> porta protocollo="TCP" porta="7777"/> porta protocollo="UDP" porta="8888"/> servizio>
Salva e chiudi il file.
Ricarica il tuo firewall per accedere al tuo nuovo servizio:
Puoi vedere che ora è tra l’elenco dei servizi disponibili:
ProduzioneRh-satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph-mons cfengine cfengine condor-collector ctdb dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6 dhcp6-ccr-mcc ccr-mc ccring-mC-client dhcp6-clome NS DNS-Over-TLS Docker-Rere Register Dock-Sward Dropbox-Lansync ElasticSearch etcd-Client Etcd-Server esempio 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
Ora puoi utilizzare questo servizio nelle tue zone come faresti normalmente.
Creare le tue zone
Mentre le zone predefinite saranno probabilmente più che sufficienti per la maggior parte degli utenti, può essere utile definire le tue zone più descrittive della loro funzione.
Ad esempio, potresti voler creare una zona per il tuo server web, chiamata PublicWeb. Tuttavia, potresti voler avere un’altra zona configurata per il servizio DNS fornito sulla tua rete privata. Potresti voler una zona chiamata “privatedns” per quello.
Quando si aggiunge una zona, tu dovere Aggiungilo alla configurazione permanente del firewall. È quindi possibile ricaricare per portare la configurazione nella sessione in esecuzione. Ad esempio, potremmo creare le due zone che abbiamo discusso sopra mediante digitazione:
Puoi verificare che questi siano presenti nella configurazione permanente digitando:
ProduzioneBlocco DMZ Drop External Home Internal privatedns pubblico PublicWeb lavoro di fiducia
Come affermato in precedenza, questi hanno vinto’essere disponibile nel firewall di runtime ancora:
ProduzioneBlocco DMZ Drop External Home Public Internal Trusted Work
Ricarica il firewall per portare queste nuove zone nella configurazione di runtime attive:
ProduzioneBlocco DMZ Drop External Home Internal privatedns pubblico PublicWeb lavoro di fiducia
Ora puoi iniziare a assegnare i servizi e le porte appropriate alle tue zone. Esso’S di solito una buona idea per regolare il firewall di runtime e quindi salvare quelle modifiche alla configurazione permanente dopo il test. Ad esempio, per il PublicWeb Zona, potresti voler aggiungere i servizi SSH, HTTP e HTTPS:
ProduzionePublicWeb Target: predefinito ICMP-Block-Inversion: Nessuna Interfacce: Fonti: Servizi: HTTP Porte SSH HTTPS: Protocolli: Masquerade: No Forward-Ports: Source-Ports: ICMP-Blocks: Rich Rules: Rich Rules: Rich Rules:
Allo stesso modo, possiamo aggiungere il servizio DNS al nostro privatedns zona:
ProduzionePrivatedNS Target: predefinito ICMP-Block-Inversion: Nessun Interface: Fonti: Servizi: DNS Porte: Protocolli: Masquerade: Nessun Porte Forward: Source-Ports: ICMP-Blocks: Rich Rules:
Potremmo quindi cambiare le nostre interfacce in queste nuove zone per testarle:
A questo punto, hai l’opportunità di testare la configurazione. Se questi valori funzionano per te, vorrai aggiungere queste regole alla configurazione permanente. Voi Potevo Fallo eseguendo di nuovo tutti i comandi con il flag -permanent aggiunto, ma in questo caso noi’Usano la flag–Runtime-to-Permanent per salvare in modo permanente la nostra intera configurazione di runtime:
Dopo aver applicato permanentemente queste regole, ricaricare il firewall per testare che le modifiche rimangono:
Convalida che sono state assegnate le zone corrette:
ProduzioneInterfacce privatedNS: ETH1 PublicWeb Interfaces: ETH0
E convalidare che i servizi appropriati sono disponibili per entrambe le zone:
Produzionehttp https ssh
ProduzioneDNS
Hai impostato correttamente le tue zone! Se si desidera creare una di queste zone il valore predefinito per altre interfacce, ricorda di configurare quel comportamento con il parametro-Set-Default-Zone =:
Conclusione
Ora dovresti avere una comprensione abbastanza approfondita di come amministrare il servizio firewalld sul tuo sistema CentOS per uso quotidiano.
Il servizio firewalld consente di configurare regole e set di regole mantenute che prendono in considerazione l’ambiente di rete. Ti consente di passare perfettamente tra le diverse politiche del firewall attraverso l’uso delle zone e offre agli amministratori la possibilità di astrarre la gestione delle porte in definizioni di servizi più amichevoli. L’acquisizione di una conoscenza pratica di questo sistema ti consentirà di sfruttare la flessibilità e la potenza che questo strumento fornisce.
Per ulteriori informazioni su Firewalld, consultare la documentazione ufficiale di Firewalld.
Grazie per l’apprendimento con la comunità digitale. Dai un’occhiata alle nostre offerte per database di calcolo, archiviazione, networking e gestiti.