Ma i comandi di iptables sono complessi e molti utenti trovano difficile ricordare tutte le opzioni e i casi in cui dovrebbero essere utilizzati. Pertanto, gli sviluppatori della distribuzione creano i propri componenti aggiuntivi su iptables, che aiutano a semplificare la gestione del firewall. CentOS ha un componente aggiuntivo per la gestione di iptables chiamato Firewalld.
Firewalld presenta diverse importanti differenze rispetto a iptables. Qui, il controllo dell'accesso alla rete viene eseguito a livello di zone e servizi, non di catene e regole. E anche le regole vengono aggiornate dinamicamente senza interrompere le sessioni in esecuzione. Questo articolo ti guiderà attraverso la configurazione di un firewall CentOS 7 utilizzando Firewalld come esempio.
Come ho detto sopra, Firewalld non funziona con le catene di regole, ma con le zone. Ad ogni interfaccia di rete può essere assegnata una zona specifica. Una zona è un insieme di regole, restrizioni e autorizzazioni che si applicano a quell'interfaccia di rete. È possibile selezionare solo una zona per interfaccia. Gli sviluppatori hanno creato diverse zone preimpostate:
- gocciolare- blocca tutti i pacchetti in entrata, consenti solo in uscita
- bloccare- a differenza dell'opzione precedente, verrà inviato un messaggio al mittente del pacchetto per bloccarne il pacchetto;
- pubblico- sono supportate solo le connessioni in entrata per ssh e dhclient;
- esterno- Supporta NAT per nascondere la rete interna;
- interno- sono consentiti i servizi ssh, samba, mdns e dhcp;
- dmz- utilizzato per server isolati che non hanno accesso alla rete. Sono consentite solo connessioni SSH;
- opera- sono consentiti i servizi ssh e dhcp;
- casa- simile all'interno;
- di fiducia- tutto è permesso.
Pertanto, per abilitare o disabilitare un servizio, è sufficiente aggiungerlo o rimuoverlo dalla zona corrente o modificare la zona dell'interfaccia in quella in cui è consentito. È analogo alla politica dei pacchetti predefinita in iptables. La zona attendibile ha la politica ACCEPT e consente tutte le connessioni, la zona di blocco ha una politica DENY che nega tutte le connessioni e tutte le altre zone possono essere considerate eredi della zona di blocco, inoltre hanno già regole predefinite per consentire le connessioni di rete per alcuni servizi .
Anche Firewalld ha due tipi di configurazione:
- tempo di esecuzione- valido solo fino al riavvio, tutte le modifiche non espressamente indicate diversamente vengono applicate a questa configurazione;
- permanente- impostazioni permanenti che funzioneranno dopo un riavvio.
Ora che sai tutto ciò che devi fare, passiamo all'utilità firewalld-cmd.
Sintassi e opzioni di Firewall-cmd
È possibile gestire le impostazioni di Firewalld sia utilizzando l'utilità della console firewall-cmd sia nell'interfaccia grafica. CentOS è più comunemente usato sui server, quindi dovrai lavorare in un terminale. Diamo un'occhiata alla sintassi dell'utilità:
opzioni firewall-cmd
La seguente sintassi viene utilizzata per gestire le zone:
firewall-cmd --configuration --zone = opzioni di zona
Come configurazione, è necessario specificare l'opzione --permanent per salvare le modifiche dopo un riavvio o non specificare nulla, quindi le modifiche saranno valide solo fino al riavvio. Utilizzare il nome della zona desiderata come zona. Diamo un'occhiata alle opzioni di utilità:
- --stato- visualizzare lo stato del firewall;
- --ricaricare- ricaricare le regole dalla configurazione persistente;
- --completa-ricarica- ricaricamento forzato delle regole, interruzione di tutte le connessioni;
- --runtime-to-permanent- trasferire le impostazioni di configurazione del runtime in una configurazione permanente;
- --permanente- utilizzare la configurazione persistente;
- --get-default-zone- visualizzare la zona predefinita;
- --set-default-zone- impostare la zona predefinita;
- --get-active-zones- visualizzare le zone attive;
- --get-zone- visualizzare tutte le zone disponibili;
- --ottieni-servizi- visualizzare servizi predefiniti;
- --list-all-zones- visualizzare la configurazione di tutte le zone;
- --nuova-zona- creare una nuova zona;
- --delete-zone- eliminare una zona;
- --list-all- rimuovere tutto ciò che è stato aggiunto dalla zona selezionata;
- --list-servizi- visualizzare tutti i servizi aggiunti alla zona;
- --aggiungi-servizio- aggiungere un servizio alla zona;
- --rimuovi-servizio- rimuovere il servizio dalla zona;
- --list-ports- display port aggiunti alla zona;
- --add-port- aggiungere una porta alla zona;
- --rimuovi-porta- rimuovere il porto dalla zona;
- --query-port- mostrare se la porta è stata aggiunta alla zona;
- --list-protocolli- visualizzare i protocolli aggiunti alla zona;
- --add-protocol- aggiungere un protocollo alla zona;
- --rimuovi-protocollo- rimuovere il protocollo dalla zona;
- --list-source-ports- visualizzare le porte di origine aggiunte alla zona;
- --add-source-port- aggiungere la porta sorgente alla zona;
- --remove-source-port- rimuovere la porta sorgente dalla zona;
- --list-icmp-blocks- visualizzare un elenco di blocchi icmp;
- --add-icmp-block- aggiungere il blocco icmp;
- --add-icmp-block- rimuovere il blocco icmp;
- --add-forward-port- aggiungere la porta per l'inoltro al NAT;
- --rimuovi-forward-port- rimuovere la porta per l'inoltro NAT;
- --add-masquerade- abilitare il NAT;
- --rimuovi-mascheramento- rimuovere NAT.
Queste sono lontane da tutte le opzioni dell'utilità, ma saranno sufficienti per questo articolo.
Configurazione del firewall su CentOS 7
1. Stato del firewall
Il primo passo è guardare lo stato del firewall. Per fare ciò, esegui:
sudo systemctl status firewalld
Se il servizio Firewalld è disabilitato, è necessario abilitarlo:
sudo systemctl start firewalld
sudo systemctl abilita firewalld
Ora devi vedere se Firewalld è in esecuzione usando il comando firewall-cmd:
sudo firewall-cmd --state
Se il programma è in esecuzione e tutto è a posto, riceverai il messaggio "in esecuzione".
2. Gestione della zona
Come puoi immaginare, le zone sono lo strumento principale per la gestione delle connessioni di rete. Per visualizzare la zona predefinita, eseguire:
sudo firewall-cmd --get-default-zone
Nel mio caso, questa è la zona pubblica. Puoi cambiare la zona corrente con l'opzione --set-default-zone:
sudo firewall-cmd --set-default-zone = public
Per vedere quali zone sono utilizzate per tutte le interfacce di rete, eseguire:
sudo firewall-cmd --get-active-zones
L'elenco mostrerà le zone e le interfacce a cui sono assegnate. Con questo comando è possibile visualizzare la configurazione per una zona specifica. Ad esempio, per la zona pubblica:
3. Configurazione dei servizi
Puoi visualizzare tutti i servizi predefiniti con il comando:
sudo firewall-cmd --get-services
Il comando elencherà tutti i servizi disponibili, puoi aggiungerne uno alla zona per abilitarlo. Ad esempio, consentiamo la connessione a http:
sudo firewall-cmd --zone = public --add-service = http --permanent
E per rimuovere questo servizio, esegui:
sudo firewall-cmd --zone = public --remove-service = http --permanent
In entrambi i casi, abbiamo utilizzato l'opzione --permanent in modo che la configurazione persista al riavvio. Dopo le modifiche, è necessario aggiornare le regole:
sudo firewall-cmd --reload
Quindi, se guardi la configurazione della zona, il servizio aggiunto apparirà lì:
sudo firewall-cmd --zone = public --list-all
4. Come aprire una porta in Firewalld
Se non è disponibile alcun servizio per il programma di cui hai bisogno, puoi aprire la sua porta manualmente. Per fare ciò, è sufficiente aggiungere la porta desiderata alla zona. Ad esempio porta 8083:
sudo firewall-cmd --zone = public --add-port = 8083 / tcp --permanent
Per rimuovere questa porta dalla zona, esegui:
sudo firewall-cmd --zone = public --remove-port = 8083 / tcp --permanent
Analogamente ai servizi, per aprire una porta nel firewall centos 7, è necessario riavviare il firewall.
sudo firewall-cmd --reload
5. Inoltro alla porta del firewall
Il port forwarding in Firewalld è molto più semplice da configurare rispetto a iptables. Se hai bisogno, ad esempio, di reindirizzare il traffico dalla porta 2223 alla porta 22, aggiungi semplicemente un reindirizzamento alla zona:
sudo firewall-cmd --zone = public --add-forward-port = port = 2223: proto = tcp: toport = 22
Qui, il reindirizzamento viene eseguito solo sulla macchina corrente. Se desideri configurare una rete NAT e inoltrare una porta a un'altra macchina, devi prima abilitare il supporto per il masquerade:
sudo firewall-cmd --zone = public --add-masquerade
Quindi puoi aggiungere la porta:
sudo firewall-cmd --zone = publiс --add-forward-port = port = 2223: proto = tcp: toport = 22: toaddr = 192.168.56.4
6. Regole avanzate
Se la funzionalità delle zone non è sufficiente per te, puoi utilizzare le regole avanzate. La sintassi generale per le regole estese è:
famiglia di regole = "famiglia" valore di origine valore di destinazione registro azione di controllo
Ecco il significato dei parametri principali:
- Come famiglie di protocollo puoi specificare ipv4 o ipv6 o non fare nulla, quindi la regola si applicherà a entrambi i protocolli;
- fonte e destinazioneè il mittente e il destinatario del pacchetto. Poiché questi parametri possono essere utilizzati indirizzo IP, nome del servizio, porta, protocollo e così via;
- tronco d'albero- permette di loggare il passaggio dei pacchetti, ad esempio, a syslog. In questa impostazione, è possibile specificare il prefisso della riga di registro e il livello di verbosità del registro;
- auditè un modo alternativo di registrare quando i messaggi verranno inviati al servizio auditd.
- Azioneè l'azione da intraprendere sul pacchetto abbinato. Disponibile: accetta, elimina, rifiuta, contrassegna.
Diamo un'occhiata ad alcuni esempi. Dobbiamo bloccare l'accesso al server per l'utente con IP 135.152.53.5:
sudo firewall-cmd --zone = public --add-rich-rule "famiglia di regole =" ipv4 "indirizzo sorgente = 135.152.53.5 rifiuta"
Oppure dobbiamo negare solo l'accesso alla porta 22 per lo stesso utente:
sudo firewall-cmd --zone = public --add-rich-rule "rule family =" ipv4 "source address = 135.152.53.5 port port = 22 protocol = tcp rifiuto"
Puoi visualizzare tutte le regole avanzate con il comando:
sudo firewall-cmd --list-rich-rules
conclusioni
In questo articolo, abbiamo discusso di come viene eseguita la configurazione del firewall in CentOS 7 e quali attività possono essere eseguite utilizzandolo. Il programma è molto più facile da usare rispetto a iptables, ma secondo me l'add-on del firewall di Ubuntu è ancora più facile da usare.
Il firewall installato nel sistema operativo viene utilizzato per impedire il flusso di traffico non autorizzato tra le reti di computer. Le regole speciali per il firewall vengono create manualmente o automaticamente, che sono responsabili del controllo degli accessi. Il sistema operativo sviluppato sul kernel Linux, CentOS 7 ha un firewall integrato ed è controllato da un firewall. FirewallD è abilitato per impostazione predefinita e vorremmo parlare della sua configurazione oggi.
Come accennato in precedenza, FirewallD è il firewall predefinito in CentOS 7. Ecco perché verrà discussa la configurazione di un firewall utilizzando questo strumento come esempio. Puoi impostare le regole di filtraggio usando lo stesso iptables, ma questo viene fatto in un modo leggermente diverso. Ti consigliamo di familiarizzare con la configurazione dell'utilità menzionata facendo clic sul collegamento seguente e inizieremo l'analisi di FirewallD.
Concetti di base del firewall
Esistono diverse zone: insiemi di regole per il controllo del traffico in base alla fiducia nelle reti. A tutti vengono assegnati i propri criteri, la cui combinazione costituisce la configurazione del firewall. Ad ogni zona sono assegnate una o più interfacce di rete, che permette anche di regolare il filtraggio. Le regole applicate dipendono direttamente dall'interfaccia utilizzata. Ad esempio, quando è connesso al Wi-Fi pubblico, il firewall aumenterà il livello di controllo e sulla rete domestica aprirà un accesso aggiuntivo per i partecipanti alla catena. Il firewall considerato contiene le seguenti zone:
- attendibile: il livello massimo di attendibilità per tutti i dispositivi di rete;
- home - gruppo di rete locale. C'è fiducia nell'ambiente, ma le connessioni in entrata sono disponibili solo per macchine specifiche;
- lavoro - area di lavoro. C'è fiducia nella maggior parte dei dispositivi e vengono attivati servizi aggiuntivi;
- dmz - zona per computer isolati. Questi dispositivi sono disconnessi dal resto della rete e consentono solo un certo traffico in entrata;
- interno - zona di reti interne. La fiducia viene applicata a tutte le macchine, vengono aperti servizi aggiuntivi;
- esterno - torna alla zona precedente. Sulle reti esterne è attivo il NAT masquerading, che copre la rete interna ma non ne impedisce l'accesso;
- pubblico - una zona di reti pubbliche con diffidenza verso tutti i dispositivi e ricezione individuale del traffico in entrata;
- block - tutte le richieste in arrivo vengono scartate e viene inviato un errore icmp-host-proibito o icmp6-adm-vietato;
- drop - il livello minimo di fiducia. Le connessioni in entrata vengono interrotte senza alcuna notifica.
I politici stessi sono temporanei e permanenti. Quando i parametri vengono visualizzati o modificati, l'azione del firewall cambia immediatamente senza la necessità di un riavvio. Se sono state applicate regole temporanee, dopo il riavvio di FirewallD verranno ripristinate. Questo è il modo in cui viene chiamata una regola permanente: verrà salvata in modo permanente quando viene applicato l'argomento -permanent.
Abilitazione di FirewallD
Per prima cosa devi avviare FirewallD o assicurarti che sia attivo. Solo un demone funzionante (un programma in esecuzione in background) applicherà le regole del firewall. L'attivazione avviene letteralmente in pochi clic:
- Corri classico "Terminale" con qualsiasi metodo conveniente, ad esempio tramite il menu "Applicazioni".
- Immettere il comando sudo systemctl start firewalld.service e premere il tasto accedere.
- L'utility è gestita per conto del superutente, quindi dovrai confermare la tua identità specificando una password.
- Per verificare che il servizio funzioni, specificare firewall-cmd --state.
- Riautenticare nella finestra grafica che si apre.
- Verrà visualizzata una nuova riga. Senso "In esecuzione" indica che il firewall funziona.
Se un giorno hai bisogno di disabilitare temporaneamente o permanentemente il firewall, ti consigliamo di utilizzare le istruzioni presentate nell'altro nostro articolo al seguente link.
Visualizzazione delle regole predefinite e delle zone disponibili
Anche un firewall che funziona normalmente ha le sue regole specifiche e le zone disponibili. Prima di iniziare a modificare i criteri, ti consigliamo di familiarizzare con la configurazione corrente. Questo viene fatto usando semplici comandi:
- Il comando firewall-cmd --get-default-zone ti aiuterà a determinare la zona predefinita.
- Dopo averlo attivato, vedrai una nuova riga in cui verrà visualizzato il parametro richiesto. Ad esempio, nello screenshot qui sotto, la zona attiva è "Pubblico".
- Tuttavia, più zone possono essere attive contemporaneamente, inoltre, sono legate a un'interfaccia separata. Scopri queste informazioni tramite firewall-cmd --get-active-zones.
- Il comando firewall-cmd --list-all visualizzerà le regole predefinite per la zona. Dai un'occhiata allo screenshot qui sotto. Vedi che la zona attiva "Pubblico" regola assegnata "Predefinito"- operazione predefinita, interfaccia "Enp0s3" e ha aggiunto due servizi.
- Se hai bisogno di conoscere tutte le zone firewall disponibili, inserisci firewall-cmd --get-zones.
- I parametri di una zona specifica sono definiti tramite firewall-cmd --zone = name --list-all, dove nome- nome della zona.
Dopo aver definito i parametri necessari, è possibile procedere alla modifica e all'aggiunta degli stessi. Diamo un'occhiata più da vicino ad alcune delle configurazioni più popolari.
Configurazione delle zone di interfaccia
Come saprai dalle informazioni di cui sopra, ogni interfaccia ha la sua zona predefinita. Rimarrà al suo interno fino a quando le impostazioni non verranno modificate dall'utente o a livello di codice. E' possibile il trasferimento manuale dell'interfaccia alla zona per una sessione, e si effettua attivando il comando sudo firewall-cmd --zone = home --change-interface = eth0. Risultato "Successo" indica che il trasferimento è andato a buon fine. Ricordiamo che tali impostazioni vengono ripristinate immediatamente dopo il riavvio del firewall.
Con una tale modifica dei parametri, va tenuto presente che il lavoro dei servizi può essere ripristinato. Alcuni di essi non supportano il funzionamento in determinate zone, ad esempio SSH è disponibile in "Casa", ma in modo personalizzato o speciale, il servizio si rifiuterà di funzionare. Puoi verificare che l'interfaccia sia stata associata correttamente al nuovo ramo immettendo firewall-cmd --get-active-zones.
Se vuoi ripristinare le impostazioni che hai fatto in precedenza, riavvia semplicemente il firewall: sudo systemctl restart firewalld.service.
A volte non è sempre conveniente cambiare l'area dell'interfaccia per una sola sessione. In questo caso, sarà necessario modificare il file di configurazione in modo che tutte le impostazioni vengano inserite in modo permanente. Per questo ti consigliamo di utilizzare un editor di testo nano che viene installato dal repository ufficiale sudo yum install nano. Quindi resta da eseguire le seguenti azioni:
- Apri il file di configurazione tramite un editor inserendo sudo nano / etc / sysconfig / network-scripts / ifcfg-eth0, dove eth0- il nome dell'interfaccia richiesta.
- Conferma l'autenticità dell'account per ulteriori passaggi.
- Trova il parametro "ZONA" e cambia il suo valore in quello che vuoi, ad esempio pubblico o domestico.
- Tieni le chiavi Ctrl + O per salvare le modifiche.
- Non modificare il nome del file, basta fare clic su accedere.
- Esci dall'editor di testo con Ctrl + X.
Ora la zona dell'interfaccia sarà come l'avete specificata, fino alla successiva modifica del file di configurazione. Per rendere effettive le impostazioni aggiornate, eseguire sudo systemctl restart network.service e sudo systemctl restart firewalld.service.
Impostazione della zona predefinita
Sopra, abbiamo già dimostrato un comando che ti consente di scoprire la zona predefinita. Può anche essere modificato impostando un parametro a tua scelta. Per fare ciò, nella console, scrivi sudo firewall-cmd --set-default-zone = name, dove nome- il nome della zona richiesta.
Il successo del comando sarà indicato dalla scritta "Successo" su una linea separata. Successivamente, tutte le interfacce correnti verranno associate alla zona specificata, se non ne viene specificato altro nei file di configurazione.
Creazione di regole per programmi e utilità
All'inizio dell'articolo, abbiamo parlato dell'azione di ciascuna zona. La definizione di servizi, utilità e programmi in tali filiali consentirà di applicare a ciascuno di essi parametri individuali per le richieste di ciascun utente. Per iniziare, ti consigliamo di familiarizzare con l'elenco completo dei servizi attualmente disponibili: firewall-cmd --get-services.
Il risultato verrà visualizzato direttamente nella console. Ogni server è separato da uno spazio e nell'elenco puoi trovare facilmente lo strumento che ti interessa. Se il servizio richiesto non è disponibile, dovrebbe essere installato in aggiunta. Leggi le regole di installazione nella documentazione ufficiale del software.
Il comando sopra mostra solo i nomi dei servizi. Informazioni dettagliate su ciascuno di essi sono ottenute tramite un singolo file situato sotto il percorso /usr/lib/firewalld/services. Tali documenti sono in formato XML, il percorso, ad esempio, a SSH è simile a questo: /usr/lib/firewalld/services/ssh.xml e il documento ha il seguente contenuto:
SSH
Secure Shell (SSH) è un protocollo per accedere ed eseguire comandi su macchine remote. Fornisce comunicazioni crittografate sicure. Se prevedi di accedere alla tua macchina in remoto tramite SSH su un'interfaccia protetta da firewall, abilita questa opzione. Hai bisogno del pacchetto openssh-server installato affinché questa opzione sia utile.
Il servizio di assistenza viene attivato manualmente in una zona specifica. V "Terminale" il comando sudo firewall-cmd --zone = public --add-service = http, dove --zone = pubblico- zona per l'attivazione, e --add-service = http- Nome di Servizio. Si prega di notare che tale modifica sarà valida solo all'interno di una sessione.
L'aggiunta permanente viene eseguita tramite sudo firewall-cmd --zone = public --permanent --add-service = http e il risultato "Successo" indica il buon esito dell'operazione.
È possibile visualizzare l'elenco completo delle regole permanenti per una zona specifica visualizzando l'elenco su una riga separata nella console: sudo firewall-cmd --zone = public --permanent --list-services.
Risolvere il problema con la mancanza di accesso al servizio
Per impostazione predefinita, le regole del firewall indicano i servizi più popolari e sicuri come consentiti, ma bloccano alcune applicazioni standard o di terze parti. In questo caso, l'utente dovrà modificare manualmente le impostazioni per risolvere il problema di accesso. Questo può essere fatto in due modi diversi.
Port forwarding
Come sai, tutti i servizi di rete utilizzano una porta specifica. Viene facilmente rilevato da un firewall e possono essere eseguiti blocchi su di esso. Per evitare tali azioni da parte del firewall, è necessario aprire la porta richiesta con il comando sudo firewall-cmd --zone = public --add-port = 0000/tcp, dove --zone = pubblico- zona portuale, --add-port = 0000 / tcp- numero di porta e protocollo. Firewall-cmd --list-ports visualizzerà un elenco di porte aperte.
Se hai bisogno di aprire le porte che si trovano nell'intervallo, usa la riga sudo firewall-cmd --zone = public --add-port = 0000-9999 / udp, dove --add-port = 0000-9999 / udp- una gamma di porte e il loro protocollo.
I comandi di cui sopra ti permetteranno solo di testare l'applicazione di tali parametri. Se ha avuto successo, dovresti aggiungere le stesse porte alle impostazioni permanenti, e questo viene fatto inserendo sudo firewall-cmd --zone = public --permanent --add-port = 0000 / tcp o sudo firewall-cmd -- zone = public --permanent --add-port = 0000-9999 / udp. L'elenco delle porte permanenti aperte è visualizzato in questo modo: sudo firewall-cmd --zone = public --permanent --list-ports.
Definizione del servizio
Come puoi vedere, l'aggiunta di porte è semplice, ma la procedura diventa più complicata quando viene utilizzato un numero elevato di applicazioni. Diventa difficile tenere traccia di tutte le porte in uso, motivo per cui sarebbe più corretto definire un servizio:
![](https://i1.wp.com/lumpics.ru/wp-content/uploads/2019/03/Kopirovanie-fajla-nastroek-servisa-faervola-v-CentOS-7.png)
Devi solo scegliere il metodo più appropriato per risolvere il problema con l'accesso al servizio e seguire le istruzioni fornite. Come puoi vedere, tutte le azioni sono abbastanza facili e non dovrebbero sorgere difficoltà.
Creazione di zone personalizzate
Sai già che inizialmente FirewallD ha creato un gran numero di zone diverse con determinate regole. Tuttavia, ci sono situazioni in cui l'amministratore di sistema deve creare una zona personalizzata, come ad esempio "Web Pubblico" per un server web installato, oppure "DNS privato"- per il server DNS. Utilizzando questi due esempi, analizzeremo l'aggiunta di rami:
![](https://i2.wp.com/lumpics.ru/wp-content/uploads/2019/03/Dobavlenie-novyh-polzovatelskih-zon-faervola-CentOS-7.png)
In questo articolo hai appreso come creare zone personalizzate e aggiungere servizi ad esse. Abbiamo già parlato di impostarli di default e assegnare le interfacce, devi solo specificare i nomi corretti. Ricorda di riavviare il firewall dopo aver apportato modifiche permanenti.
Come puoi vedere, il firewall FirewallD è uno strumento abbastanza voluminoso che ti consente di effettuare la configurazione del firewall più flessibile. L'unica cosa che resta da fare è assicurarsi che l'utilità venga avviata insieme al sistema e che le regole specificate inizino a funzionare immediatamente. Fallo con il comando sudo systemctl enable firewalld.
FirewallD è uno strumento di gestione del firewall disponibile per impostazione predefinita sui server CentOS 7. Fondamentalmente, è un wrapper per IPTables e viene fornito con uno strumento grafico di configurazione del firewall e uno strumento da riga di comando firewall-cmd. Con il servizio IPtables, ogni modifica richiede la rimozione delle vecchie regole e la creazione di nuove regole nel ` /etc/sysconfig/iptables`mentre firewalld applica solo le differenze.
Zone FirewallD
FirewallD utilizza servizi e zone invece di regole e catene in iptables. Le seguenti zone sono disponibili per impostazione predefinita:
- gocciolare- Elimina tutti i pacchetti di rete in entrata senza risposta, sono disponibili solo le connessioni di rete in uscita.
- bloccare- Rifiuta tutti i pacchetti di rete in entrata con il messaggio icmp-host-prohibited, sono disponibili solo le connessioni di rete in uscita.
- pubblico- sono accettate solo connessioni in entrata selezionate, per l'utilizzo in luoghi pubblici
- esterno- Per le reti esterne con mascheramento, vengono accettate solo le connessioni in entrata selezionate.
- dmz- zona demilitarizzata DMZ, accessibile al pubblico con accesso limitato alla rete interna, sono accettate solo connessioni in entrata selezionate.
- opera
- casa- Per i computer nella zona di casa, sono accettate solo le connessioni in entrata selezionate.
- interno- Per i computer della rete interna, sono accettate solo le connessioni in entrata selezionate.
- di fiducia- Tutte le connessioni di rete sono accettate.
Per ottenere un elenco di tutte le zone disponibili:
# firewall-cmd --get-zones work drop interno esterno trusted home dmz public block
Per visualizzare l'elenco delle zone predefinite:
# firewall-cmd --get-default-zone public
Per modificare la zona predefinita:
Servizi FirewallD
I servizi FirewallD sono file di configurazione XML contenenti informazioni sui record di servizio per firewalld. Per ottenere un elenco di tutti i servizi disponibili:
# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns registro docker dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replica ftp alta disponibilità http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmproxy sapwebapi pmprivdpproxy sapprprivd proxy pop3 poppc proxy proxy client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks client di trasmissione vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local server xmpp
I file di configurazione XML sono memorizzati nelle directory /usr/lib/firewalld/servizi/ e /etc/firewalld/servizi/.
Configurazione di un firewall con FirewallD
Ad esempio, ecco come è possibile configurare un firewall con FirewallD se si esegue un server Web, SSH sulla porta 7022 e un server di posta.
Innanzitutto, imposteremo la zona predefinita per la DMZ.
# firewall-cmd --set-default-zone = dmz # firewall-cmd --get-default-zone dmz
Per aggiungere regole di servizio persistenti per HTTP e HTTPS nella DMZ, eseguire il comando seguente:
# firewall-cmd --zone = dmz --add-service = http --permanent # firewall-cmd --zone = dmz --add-service = https --permanent
Aprire la porta 25 (SMTP) e la porta 465 (SMTPS):
Firewall-cmd --zone = dmz --add-service = smtp --permanent firewall-cmd --zone = dmz --add-service = smtps --permanent
Porte aperte, IMAP, IMAPS, POP3 e POP3S:
Firewall-cmd --zone = dmz --add-service = imap --permanent firewall-cmd --zone = dmz --add-service = imaps --permanent firewall-cmd --zone = dmz --add-service = pop3 --permanent firewall-cmd --zone = dmz --add-service = pop3s --permanent
Poiché la porta SSH è stata modificata in 7022, rimuoveremo il servizio SSH (porta 22) e apriremo la porta 7022
Firewall-cmd --remove-service = ssh --permanent firewall-cmd --add-port = 7022 / tcp --permanent
Per implementare le modifiche, dobbiamo ricaricare il firewall:
Firewall-cmd --reload
Infine, puoi elencare le regole.
La prima cosa per proteggere il server dalle minacce esterne è un firewall che filtri il traffico in entrata e in uscita. Voglio occuparmi della configurazione di iptables, un caso speciale di un firewall su CentOS in questo articolo, e parlare anche dell'installazione e della disattivazione. La mia guida non sarà esaustiva, prenderò in considerazione solo quegli aspetti che ritengo più importanti e che io stesso utilizzo nel mio lavoro.
Questo articolo fa parte di un'unica serie di articoli sul server.
introduzione
Iptables è attualmente lo standard de facto nelle moderne distribuzioni Linux. Non riesco nemmeno a ricordare subito cos'altro viene utilizzato come firewall. Quindi qualsiasi amministratore Linux deve occuparsi della configurazione di questo firewall nel suo lavoro.
Esistono diversi collegamenti per questo firewall, che vengono utilizzati per una configurazione più "conveniente". Ubuntu ha ufw, in cento - firewalld, non ho familiarità con gli altri. Personalmente, non vedo alcuna convenienza nell'utilizzo di questi strumenti. Sono abituato a configurare un firewall Linux alla vecchia maniera, come ho imparato all'inizio. Mi sembra che questo sia il modo più semplice e conveniente che condividerò con te. La sua essenza si riduce alla creazione di uno script con regole del firewall. Questo script può essere facilmente modificato per soddisfare le tue esigenze e trasferito da un server all'altro.
Disabilitare il firewalld
Ho già toccato il problema della disabilitazione di firewalld nell'argomento su. Prima di tutto, disabilita firewalld, che è presente in centos 7 di default subito dopo l'installazione:
# systemctl stop firewalld
Ora rimuoviamolo dall'avvio in modo che non si riaccenda dopo il riavvio:
# systemctl disabilita firewalld
Successivamente, le impostazioni del firewall sul server diventano completamente aperte. Puoi visualizzare le regole di iptables con il comando:
Installazione di iptables
In effetti, il firewall sul nostro server è già attivo e funzionante, semplicemente non ci sono regole, tutto è aperto. Avremo bisogno di installare utilità di gestione aggiuntive, senza le quali è impossibile configurare iptables. Ad esempio, il firewall non può essere riavviato:
# systemctl restart iptables.service Impossibile emettere la chiamata al metodo: Impossibile caricare l'unità iptables.service: nessun file o directory di questo tipo.
O l'aggiunta all'esecuzione automatica non funzionerà:
# systemctl enable iptables.service Impossibile emettere la chiamata al metodo: nessun file o directory di questo tipo
Per evitare tali errori, installa il pacchetto necessario con le utilità:
# yum -y install iptables-services
Ora puoi aggiungere iptables all'avvio ed eseguire:
# systemctl abilita iptables.service # systemctl avvia iptables.service
Configurazione del firewall
Uso uno script per gestire le regole del firewall. Creiamolo:
# mcedit /etc/iptables.sh
Successivamente, lo riempiremo con le regole necessarie. Analizzerò tutte le parti significative della sceneggiatura e Lo citerò per intero sotto forma di file di testo alla fine dell'articolo... Le regole sono fatte sotto forma di immagini per vietare il copia e incolla. Ciò può portare a errori nel lavoro delle regole, che io stesso ho riscontrato durante la preparazione dell'articolo.
Considereremo una situazione in cui un server è un gateway per Internet per una rete locale.
Prima di tutto, imposteremo tutte le variabili che utilizzeremo nello script. Non è necessario farlo, ma è consigliato perché è conveniente trasferire le impostazioni da un server all'altro. Basterà solo riassegnare le variabili.
Prima di applicare le nuove regole, cancelliamo tutte le catene:
Blocchiamo tutto il traffico che non corrisponde a nessuna delle regole:
Consentiamo tutto il traffico di localhost e localhost:
Consenti ping:
Se non è necessario, non aggiungere regole di autorizzazione per icmp.
Apriamo l'accesso a Internet per il server stesso:
Se desideri aprire tutte le connessioni al server in entrata, aggiungi un'ulteriore regola:
Ora aggiungiamo la protezione contro gli attacchi di rete più comuni. Per prima cosa, scartiamo tutti i pacchetti che non hanno stato:
Blocco di pacchetti nulli:
Ci chiudiamo dagli attacchi syn-flood:
Se non imposti restrizioni all'accesso dalla rete locale, consentiamo a tutti di accedere a Internet:
Successivamente, neghiamo l'accesso da Internet alla rete locale:
Per fare in modo che la nostra rete locale utilizzi Internet, attiva nat:
Per non perdere l'accesso al server, dopo aver applicato le regole, consentiamo le connessioni ssh:
E alla fine, scriviamo le regole in modo che si applichino dopo un riavvio:
Abbiamo compilato una semplice configurazione che blocca tutte le connessioni in entrata tranne ssh e consente l'accesso dalla rete locale a Internet. Lungo la strada, ci siamo difesi da alcuni attacchi di rete.
Salviamo lo script, lo rendiamo eseguibile ed eseguiamo:
# chmod 0740 /etc/iptables.sh # /etc/iptables.sh
Rivediamo le regole e controlliamo se tutte le regole sono a posto:
# iptables -L -v -n
Tieni presente che devi applicare le regole solo se hai accesso alla console del server. Se commetti un errore nelle impostazioni, potresti perdere l'accesso. Assicurati che in caso di emergenza sia possibile disabilitare il firewall e regolare le impostazioni.
Apertura della porta
Ora espandiamo un po' la nostra configurazione e apriamo le porte per alcuni servizi in iptables. Diciamo che abbiamo un server web e dobbiamo aprire l'accesso ad esso da Internet. Aggiungi regole per il traffico web:
È stata aggiunta l'autorizzazione per le connessioni in entrata sulle porte 80 e 443, che il server web utilizza nel suo lavoro.
Se hai installato un server di posta, devi consentire le connessioni in entrata su tutte le porte utilizzate:
Affinché il server DNS funzioni correttamente, è necessario aprire la porta UDP 53
Port forwarding
Consideriamo una situazione in cui è necessario inoltrare porte dall'interfaccia esterna a un computer sulla rete locale. Diciamo che è necessario ottenere l'accesso rdp al computer 10.1.3.50 da Internet. Inoltriamo la porta TCP 3389:
Se non vuoi brillare con una porta nota esterna, puoi reindirizzare da una porta non standard alla porta rdp del computer di destinazione:
Se inoltri la porta dall'esterno all'interno della rete locale, assicurati di commentare la regola che blocca l'accesso dalla rete esterna a quella interna. Nel mio esempio, questa regola è: $ IPT -A FORWARD -i $ WAN -o $ LAN1 -j REJECT
Oppure, prima di questa regola, crea una regola di autorizzazione per l'accesso esterno al servizio interno, ad esempio in questo modo:
$ IPT -A FORWARD -i $ WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPT
Abilitazione dei log
In fase di configurazione è utile abilitare i log per poter monitorare i pacchetti bloccati e scoprire perché non c'è accesso ai servizi necessari che ci sembra di aver già aperto. Invio tutti i pacchetti bloccati a catene separate (block_in, block_out, block_fw) corrispondenti alla direzione del traffico e contrassegno ogni direzione nei log. È più conveniente eseguire il debriefing in questo modo. Aggiungi le seguenti regole alla fine dello script, prima di salvare le impostazioni:
Puoi tenere traccia di tutti i pacchetti bloccati nel file /var/log/messages.
Dopo aver terminato la configurazione, commenta queste righe disabilitando la registrazione. Dovresti assolutamente farlo, poiché i registri crescono molto rapidamente. Personalmente, non vedo alcun senso pratico nella memorizzazione di tali informazioni.
Come disabilitare iptables
Se all'improvviso decidi che non hai più bisogno di un firewall, puoi disabilitarlo come segue:
# systemctl stop iptables.service
Questo comando arresta il firewall. E il prossimo rimuove dall'avvio:
# systemctl disabilita iptables.service
Disabilitando il firewall, abbiamo consentito tutte le connessioni.
Conclusione
Come promesso, sto postando uno script già pronto con il set principale di regole che abbiamo considerato.
Ancora una volta, voglio attirare la tua attenzione sul fatto che quando configuri iptables, devi essere estremamente attento. Non avviare questa attività se non hai accesso alla console del server. Anche mentre scrivevo questo articolo, ho perso l'accesso al server a causa di un ridicolo errore nelle regole. Questo errore è sorto a causa della copia e della perdita di un doppio trattino: è stato sostituito da un singolo trattino.
corso online "Linux Administrator" in OTUS. Il corso non è per principianti, per l'ammissione è necessaria una conoscenza di base del networking e dell'installazione di Linux su una macchina virtuale. La formazione dura 5 mesi, al termine dei quali i diplomati del corso con successo potranno sostenere colloqui con i partner. Cosa ti darà questo corso:
- Conoscenza dell'architettura Linux.
- Padroneggiare metodi e strumenti moderni per l'analisi e l'elaborazione dei dati.
- Possibilità di selezionare una configurazione per le attività necessarie, gestire i processi e garantire la sicurezza del sistema.
- Possesso degli strumenti di lavoro di base dell'amministratore di sistema.
- Comprendere le specifiche dell'implementazione, della configurazione e della manutenzione delle reti basate su Linux.
- La capacità di risolvere rapidamente i problemi emergenti e garantire il funzionamento stabile e ininterrotto del sistema.
zone
Il demone firewalld gestisce gruppi di regole utilizzando le cosiddette zone.
Le zone sono essenzialmente insiemi di regole che regolano il traffico in base al livello di fiducia in una particolare rete. Le zone sono assegnate alle interfacce di rete e controllano il comportamento del firewall.
I computer che spesso si connettono a reti diverse (ad esempio laptop) possono utilizzare le zone per modificare i propri set di regole in base al proprio ambiente. Ad esempio, quando è connesso a una rete Wi-Fi pubblica, il firewall può imporre regole più rigide e ridurre le restrizioni su una rete domestica.
Le seguenti zone esistono in firewalld:
- drop: il livello di fiducia più basso nella rete. Tutto il traffico in entrata viene eliminato senza risposta, sono supportate solo le connessioni in uscita.
- block: questa zona è simile alla precedente, ma le richieste in entrata vengono scartate con il messaggio icmp-host-prohibited o icmp6-adm-prohibited.
- public: questa zona rappresenta una rete pubblica che non può essere considerata attendibile, ma gestisce le connessioni in entrata su base individuale.
- esterno: area reti esterne. Supporta il mascheramento NAT in modo che la rete interna rimanga chiusa ma comunque accessibile.
- interno: il retro della zona esterna, reti interne. I computer in questa zona possono essere considerati attendibili. Servizi aggiuntivi disponibili.
- dmz: utilizzato per i computer situati nella DMZ (computer isolati che non avranno accesso al resto della rete); supporta solo alcune connessioni in entrata.
- lavoro: zona della rete di lavoro. La maggior parte delle macchine sulla rete può essere considerata attendibile. Servizi aggiuntivi disponibili.
- casa: zona della rete domestica. L'ambiente può essere considerato attendibile, ma sono supportate solo le connessioni in entrata definite dall'utente.
- attendibile: tutte le macchine sulla rete possono essere considerate attendibili.
Regole di salvataggio
Le regole del firewall sono permanenti e temporanee. Se una regola viene visualizzata o cambia nel set, il comportamento del firewall corrente cambia immediatamente. Tuttavia, dopo un riavvio, tutte le modifiche andranno perse se non salvate.
La maggior parte dei comandi firewall-cmd può utilizzare il flag --permanent, che salverà la regola e la utilizzerà in modo permanente.
Abilitare il firewalld
Per prima cosa devi abilitare il demone. Il file dell'unità systemd si chiama firewalld.service. Per avviare il demone, inserisci.
sudo systemctl start firewalld.service
Assicurati che il servizio sia in esecuzione:
firewall-cmd --state
in esecuzione
Il firewall è ora attivo e funzionante secondo la configurazione predefinita.
Al momento il servizio è abilitato, ma non si avvierà automaticamente con il server. Per evitare di bloccarti accidentalmente sul tuo server, crea prima una serie di regole e poi configura l'esecuzione automatica.
Regole firewall predefinite
Visualizzazione delle regole predefinite
Per scoprire quale zona viene utilizzata di default, inserire:
firewall-cmd --get-default-zone
pubblico
Al momento firewalld non ha ricevuto alcuna istruzione riguardo ad altre zone, inoltre nessuna interfaccia è associata ad altre zone, quindi ora la zona pubblica è la zona predefinita ed anche l'unica zona attiva.
Per ottenere un elenco di hot spot, inserisci:
pubblico
interfacce: eth0 eth1
Ci sono due interfacce di rete legate alla zona pubblica: eth0 ed eth1. Le interfacce associate a una zona funzionano secondo le regole per quella zona.
Per scoprire quali regole utilizza la zona per impostazione predefinita, inserisci:
firewall-cmd --list-all
pubblico (predefinito, attivo)
interfacce: eth0 eth1
fonti:
servizi: dhcpv6-client ssh
porti:
mascherata: no
avanti-porte:
blocchi icmp:
regole ricche:
Quindi ora sai che:
- public è la zona predefinita e l'unica zona attiva.
- Le interfacce eth0 ed eth1 sono legate ad esso.
- Supporta il traffico DHCP (assegnazione indirizzo IP) e SSH (amministrazione remota).
Altre zone firewall
Ora dovresti familiarizzare con le altre zone.
Per ottenere un elenco di tutte le zone disponibili, inserire:
firewall-cmd --get-zones
Per ottenere le impostazioni per una zona specifica, aggiungi il flag -zone = al comando.
firewall-cmd --zone = home --list-all
casa
interfacce:
fonti:
servizi: dhcpv6-client ipp-client mdns samba-client ssh
porti:
mascherata: no
avanti-porte:
blocchi icmp:
regole ricche:
Per elencare le definizioni di tutte le zone disponibili, aggiungi l'opzione --list-all-zones. Per una visualizzazione più comoda, l'output può essere inviato al cercapersone:
firewall-cmd --list-all-zones | meno
Configurazione delle zone di interfaccia
Inizialmente, tutte le interfacce di rete sono associate alla zona predefinita.
Modifica della zona dell'interfaccia per una sessione
Per trasferire un'interfaccia in una zona diversa per una sessione, utilizzare le opzioni —zone = e —change-interface =.
Ad esempio, per portare eth0 nella zona principale, dovresti digitare:
sudo firewall-cmd --zone = home --change-interface = eth0
successo
Nota Nota: quando si sposta l'interfaccia in un'altra zona, è necessario considerare che ciò potrebbe influire sul funzionamento di alcuni servizi. Ad esempio, la zona principale supporta SSH, quindi le connessioni da questo servizio non verranno interrotte. Ma alcune zone interrompono tutte le connessioni, incluso SSH, e quindi puoi impedirti accidentalmente di accedere al tuo server.
Per assicurarti che l'interfaccia sia associata alla nuova zona, inserisci:
firewall-cmd --get-active-zones
casa
interfacce: eth0
pubblico
interfacce: eth1
Dopo aver riavviato il firewall, l'interfaccia si riassocerà alla zona predefinita.
sudo systemctl restart firewalld.service
firewall-cmd --get-active-zones
pubblico
interfacce: eth0 eth1
Modifica permanente dell'area dell'interfaccia
Se non è specificata nessun'altra zona nelle impostazioni dell'interfaccia, dopo aver riavviato il firewall, l'interfaccia verrà ricollegata alla zona predefinita. Su CentOS, tali configurazioni sono memorizzate nella directory /etc/sysconfig/network-scripts, in file del formato ifcfg-interface.
Per definire una zona per un'interfaccia, aprire il file di configurazione per quell'interfaccia, ad esempio:
Aggiungi la variabile ZONA = alla fine del file e specifica un'altra zona come valore, ad esempio home:
. . .
DNS1 = 2001: 4860: 4860 :: 8844
DNS2 = 2001: 4860: 4860 :: 8888
DNS3 = 8.8.8.8
ZONA = casa
Salva e chiudi il file.
Per aggiornare le impostazioni, riavvia il servizio di rete e il firewall:
sudo systemctl restart network.service
sudo systemctl restart firewalld.service
Dopo il riavvio, eth0 si legherà alla zona di casa.
firewall-cmd --get-active-zones
casa
interfacce: eth0
pubblico
interfacce: eth1
Impostazione della zona predefinita
Puoi anche scegliere una zona predefinita diversa.
Per questo, viene utilizzato il parametro –set-default-zone =. Successivamente, tutte le interfacce saranno associate a un'altra zona:
sudo firewall-cmd --set-default-zone = home
casa
interfacce: eth0 eth1
Creazione di regole per le applicazioni
Aggiunta di un servizio a una zona
Il modo più semplice consiste nell'aggiungere un servizio o una porta alla zona utilizzata dal firewall. Sfoglia i servizi disponibili:
firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client pmmp dns ftp alta disponibilità http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt libvirt-tls mfdns mountd msvmpspms pop3s postgresql proxy-dhcp raggio rpc-bind samba samba-client smtp ssh telnet tftp tftp-client client di trasmissione vnc-server wbem-https
Nota Nota: maggiori informazioni su ogni servizio specifico possono essere trovate nei file .xml nella directory /usr/lib/firewalld/services. Ad esempio, le informazioni su un servizio SSH sono archiviate in /usr/lib/firewalld/services/ssh.xml e hanno questo aspetto:
Per abilitare il supporto del servizio in una particolare zona, utilizzare l'opzione –add-service =. È possibile specificare la zona di destinazione utilizzando l'opzione -zone =. Per impostazione predefinita, queste modifiche funzioneranno per una sessione. Per salvare le modifiche e utilizzarle in modo permanente, aggiungi il flag —permanent.
Ad esempio, per avviare un server Web per gestire il traffico HTTP, devi prima abilitare il supporto per questo traffico nella zona pubblica per una sessione:
sudo firewall-cmd --zone = public --add-service = http
Se il servizio deve essere aggiunto alla zona predefinita, il flag –zone = può essere omesso.
Assicurati che l'operazione sia andata a buon fine:
firewall-cmd --zone = public --list-services
dhcpv6-client http ssh
Testare il servizio e il firewall. Se tutto funziona correttamente, puoi modificare il set di regole permanente e aggiungere una regola per supportare questo servizio.
sudo firewall-cmd --zone = public --permanent --add-service = http
Per visualizzare un elenco di regole persistenti, inserisci:
sudo firewall-cmd --zone = public --permanent --list-services
dhcpv6-client http ssh
La zona pubblica ora supporta HTTP e la porta 80 in modo permanente. Se il server web può servire traffico SSL/TLS, puoi anche aggiungere il servizio https (per una singola sessione o in un insieme di regole persistenti):
sudo firewall-cmd --zone = public --add-service = https
sudo firewall-cmd --zone = public --permanent --add-service = https
E se il servizio che desideri non è disponibile?
Il firewall firewalld include molti dei servizi più comuni per impostazione predefinita. Tuttavia, alcune applicazioni richiedono servizi che firewalld non supporta. In questo caso puoi fare due cose.
Metodo 1: impostazione della porta
Il modo più semplice per farlo è aprire una porta dell'applicazione nella zona richiesta del firewall. Devi solo specificare la porta o l'intervallo di porte e il protocollo.
Ad esempio, un'applicazione che utilizza la porta 5000 e TCP deve essere aggiunta alla zona pubblica. Per abilitare il supporto per l'applicazione per sessione, utilizzare il parametro –add-port = e specificare il protocollo tcp o udp.
sudo firewall-cmd --zone = public --add-port = 5000 / tcp
Assicurati che l'operazione sia andata a buon fine:
firewall-cmd --list-ports
5000 / tcp
È inoltre possibile specificare un intervallo di porte seriali separando la prima e l'ultima porta dell'intervallo con un trattino. Ad esempio, se la tua applicazione utilizza le porte UDP 4990-4999, per aggiungerle alla zona pubblica, dovrai inserire:
sudo firewall-cmd --zone = public --add-port = 4990-4999 / udp
Dopo il test, puoi aggiungere queste regole alle impostazioni permanenti del firewall.
sudo firewall-cmd --zone = public --permanent --add-port = 5000 / tcp
sudo firewall-cmd --zone = public --permanent --add-port = 4990-4999 / udp
sudo firewall-cmd --zone = public --permanent --list-ports
successo
successo
4990-4999 / udp 5000 / tcp
Metodo 2: definire un servizio
L'aggiunta di porte alle zone è facile, ma se disponi di molte di queste applicazioni, può essere difficile individuare a cosa serve una determinata porta. Per evitare questa situazione, puoi definire servizi invece di porte.
I servizi sono semplicemente raccolte di porte con un nome e una descrizione specifici. I servizi semplificano la gestione delle impostazioni, ma sono più complessi da soli rispetto alle porte.
Innanzitutto, è necessario copiare lo script esistente dalla directory /usr/lib/firewalld/services nella directory /etc/firewalld/services (dove il firewall cerca le impostazioni non standard).
Ad esempio, è possibile copiare la definizione del servizio SSH e utilizzarla per definire l'esempio del servizio condizionale. Il nome dello script deve corrispondere al nome del servizio e avere l'estensione .xml.
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
Correggere il file copiato.
sudo nano /etc/firewalld/services/example.xml
Il file contiene la definizione SSH:
La maggior parte della definizione del servizio è costituita da metadati. Puoi modificare il nome breve del servizio nei tag
Torniamo al servizio di esempio; Diciamo che chiede di aprire la porta TCP 7777 e la porta UDP 8888. La definizione sarà simile a questa:
Salva e chiudi il file.
Riavvia il firewall:
sudo firewall-cmd --reload
Il servizio apparirà ora nell'elenco dei servizi disponibili:
firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns esempio ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt libvirt-tls mdfnt mysq ms-w pm pmwebapi pmwebapis pop3s postgresql proxy-dhcp raggio rpc-bind samba samba-client smtp ssh telnet tftp tftp-client trasmissione-client vnc-server wbem-https
Creazione di zone
Il firewall fornisce molte zone predefinite, sufficienti per la maggior parte del lavoro. Tuttavia, in alcune situazioni diventa necessario creare una zona personalizzata.
Ad esempio, è possibile creare una zona Web pubblica per un server Web e una zona DNS privata per un servizio DNS.
Quando si crea una zona, è necessario aggiungerla alle impostazioni permanenti del firewall.
Prova a creare zone publicweb e privateDNS:
sudo firewall-cmd --permanent --new-zone = publicweb
sudo firewall-cmd --permanent --new-zone = privateDNS
Assicurati che le zone esistano:
sudo firewall-cmd --permanent --get-zones
Nella sessione corrente non saranno disponibili nuove zone:
firewall-cmd --get-zones
block dmz drop esterno home interno pubblico lavoro fidato
Per accedere alle nuove zone è necessario riavviare il firewall:
sudo firewall-cmd --reload
firewall-cmd --get-zones
block dmz drop esterno home interno privateDNS pubblico publicweb lavoro fidato
Ora puoi assegnare i servizi e le porte richiesti alle nuove zone. Ad esempio, SSH, HTTP e HTTPS possono essere aggiunti all'area publicweb.
sudo firewall-cmd --zone = publicweb --add-service = ssh
sudo firewall-cmd --zone = publicweb --add-service = http
sudo firewall-cmd --zone = publicweb --add-service = https
firewall-cmd --zone = publicweb --list-all
publicweb
interfacce:
fonti:
servizi: http https ssh
porti:
mascherata: no
avanti-porte:
blocchi icmp:
regole ricche:
Puoi aggiungere DNS alla zona privateDNS:
sudo firewall-cmd --zone = privateDNS --add-service = dns
firewall-cmd --zone = privateDNS --list-all
privateDNS
interfacce:
fonti:
servizi: dns
porti:
mascherata: no
avanti-porte:
blocchi icmp:
regole ricche:
Quindi puoi associare le interfacce di rete a nuove zone:
sudo firewall-cmd --zone = publicweb --change-interface = eth0
sudo firewall-cmd --zone = privateDNS --change-interface = eth1
Ora puoi testare la configurazione. Se tutto funziona correttamente, puoi aggiungere queste regole alle impostazioni permanenti.
sudo firewall-cmd --zone = publicweb --permanent --add-service = ssh
sudo firewall-cmd --zone = publicweb --permanent --add-service = http
sudo firewall-cmd --zone = publicweb --permanent --add-service = https
sudo firewall-cmd --zone = privateDNS --permanent --add-service = dns
È quindi possibile configurare le interfacce di rete per connettersi automaticamente alla zona corretta.
Ad esempio eth0 si legherà a publicweb:
sudo nano / etc / sysconfig / script di rete / ifcfg-eth0
. . .
IPV6_AUTOCONF = no
DNS1 = 2001: 4860: 4860 :: 8844
DNS2 = 2001: 4860: 4860 :: 8888
DNS3 = 8.8.8.8
ZONA = publicweb
E l'interfaccia eth1 sarà associata a privateDNS:
sudo nano / etc / sysconfig / script di rete / ifcfg-eth1
. . .
MASCHERA DI RETE = 255.255.0.0
DEFROUTE = "no"
NM_CONTROLLED = "sì"
ZONA = privateDNS
Riavvia i servizi di rete e il firewall:
sudo systemctl riavvia la rete
sudo systemctl riavvia firewalld
Controlla le zone:
firewall-cmd --get-active-zones
privateDNS
interfacce: eth1
publicweb
interfacce: eth0
Assicurati che i servizi necessari siano in esecuzione nelle zone:
firewall-cmd --zone = publicweb --list-services
http htpps ssh
firewall-cmd --zone = privateDNS --list-services
dns
Le zone personalizzate sono completamente pronte per essere utilizzate. Puoi rendere ognuna di esse la zona predefinita. Ad esempio:
sudo firewall-cmd --set-default-zone = publicweb
Avvio automatico del firewall
Ora che hai controllato tutte le impostazioni e verificato che tutte le regole funzionino come previsto, puoi configurare il firewall per la riproduzione automatica.
Per farlo, inserisci:
sudo systemctl abilita firewalld
Il firewall si avvierà ora con il server.
Conclusione
Il firewall firewalld è uno strumento molto flessibile. Le zone consentono di modificare rapidamente la politica del firewall.
Ora sai come funziona firewalld, hai familiarità con i concetti di base di un firewall, puoi creare zone personalizzate e aggiungere servizi.
tag:,