androide

Come impostare un firewall con firewalld su centos 7

SI3.4 Configurare un firewall Fortinet Fortigate

SI3.4 Configurare un firewall Fortinet Fortigate

Sommario:

Anonim

Un firewall correttamente configurato è uno degli aspetti più importanti della sicurezza generale del sistema.

FirewallD è una soluzione firewall completa che gestisce le regole iptables del sistema e fornisce un'interfaccia D-Bus per operare su di esse. A partire da CentOS 7, FirewallD sostituisce iptables come strumento di gestione firewall predefinito.

In questo tutorial, ti mostriamo come impostare un firewall con FirewallD sul tuo sistema CentOS 7 e ti spieghiamo i concetti di base di FirewallD.

Prerequisiti

Prima di iniziare con questa esercitazione, assicurarsi di aver effettuato l'accesso al server con un account utente con privilegi sudo o con l'utente root. La migliore pratica è eseguire comandi amministrativi come utente sudo anziché root. Se non hai un utente sudo sul tuo sistema CentOS, puoi crearne uno seguendo queste istruzioni.

Concetti di base di Firewalld

FirewallD utilizza i concetti di zone e servizi, anziché di catena e regole di iptables. In base alle zone e ai servizi che configurerai, puoi controllare quale traffico è consentito o non consentito da e verso il sistema.

FirewallD può essere configurato e gestito utilizzando l'utilità della riga di comando firewall-cmd .

Zone Firewalld

Le zone sono insiemi predefiniti di regole che specificano a quale traffico deve essere consentito in base al livello di attendibilità sulle reti a cui è connesso il computer. È possibile assegnare interfacce e fonti di rete a una zona.

Di seguito sono elencate le zone fornite da FirewallD ordinate in base al livello di attendibilità della zona da non attendibile a attendibile:

  • drop: tutte le connessioni in entrata vengono eliminate senza alcuna notifica. Sono consentite solo connessioni in uscita. blocco: tutte le connessioni in entrata vengono rifiutate con un messaggio icmp-host-prohibited da icmp-host-prohibited per IPv4 e icmp6-adm-prohibited per IPv6n. Sono consentite solo connessioni in uscita. pubblico: per l'uso in aree pubbliche non attendibili. Non ti fidi di altri computer sulla rete, ma puoi consentire connessioni in entrata selezionate. esterno: per l'uso su reti esterne con mascheramento NAT abilitato quando il sistema funge da gateway o router. Sono consentite solo le connessioni in entrata selezionate. interno: da utilizzare su reti interne quando il sistema funge da gateway o router. Altri sistemi sulla rete sono generalmente affidabili. Sono consentite solo le connessioni in entrata selezionate. dmz: utilizzato per computer situati nella zona smilitarizzata che hanno accesso limitato al resto della rete. Sono consentite solo le connessioni in entrata selezionate. lavoro: usato per macchine da lavoro. Altri computer sulla rete sono generalmente affidabili. Sono consentite solo le connessioni in entrata selezionate. home: utilizzato per macchine domestiche. Altri computer sulla rete sono generalmente affidabili. Sono consentite solo le connessioni in entrata selezionate. trusted: sono accettate tutte le connessioni di rete. Fidati di tutti i computer della rete.

Servizi firewall

I servizi Firewall sono regole predefinite che si applicano all'interno di una zona e definiscono le impostazioni necessarie per consentire il traffico in entrata per un servizio specifico.

Firewalld Runtime e impostazioni permanenti

Firewalld utilizza due set di configurazione separati, runtime e configurazione permanente.

La configurazione di runtime è l'effettiva configurazione in esecuzione e non è persistente al riavvio. All'avvio del servizio Firewalld, carica la configurazione permanente, che diventa la configurazione di runtime.

Per impostazione predefinita, quando si apportano modifiche alla configurazione di Firewalld utilizzando l'utilità firewall-cmd , le modifiche vengono applicate alla configurazione di runtime. Per rendere permanenti le modifiche è necessario utilizzare l'opzione --permanent .

Installazione e abilitazione di FirewallD

  1. Firewalld è installato di default su CentOS 7, ma se non è installato sul tuo sistema, puoi installare il pacchetto digitando:

    sudo yum install firewalld

    Il servizio Firewalld è disabilitato per impostazione predefinita. Puoi controllare lo stato del firewall con:

    sudo firewall-cmd --state

    Per avviare il servizio FirewallD e abilitarlo al tipo di avvio:

    sudo systemctl start firewalld sudo systemctl enable firewalld

Lavorare con le zone di Firewalld

Dopo aver abilitato il servizio FirewallD per la prima volta, la zona public è impostata come zona predefinita. È possibile visualizzare la zona predefinita digitando:

sudo firewall-cmd --get-default-zone

public

Per ottenere un elenco di tutte le zone disponibili, digitare:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

Per impostazione predefinita, a tutte le interfacce di rete viene assegnata la zona predefinita. Per verificare quali zone sono utilizzate dal tuo tipo di interfaccia di rete:

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

L'output sopra ci dice che entrambe le interfacce eth0 ed eth1 sono assegnate alla zona pubblica.

È possibile stampare le impostazioni di configurazione della zona con:

sudo firewall-cmd --zone=public --list-all

public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Dall'output sopra, possiamo vedere che la zona pubblica è attiva e impostata come predefinita, usata da entrambe le interfacce eth0 ed eth1 . Inoltre, sono consentite le connessioni relative al client DHCP e SSH.

sudo firewall-cmd --list-all-zones

Il comando stampa un enorme elenco con le impostazioni di tutte le zone disponibili.

Modifica della zona di un'interfaccia

Puoi facilmente cambiare la zona di interfaccia usando l'opzione --zone in combinazione con l'opzione --change-interface . Il comando seguente assegnerà l'interfaccia eth1 alla zona di lavoro:

sudo firewall-cmd --zone=work --change-interface=eth1

Verifica le modifiche digitando:

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

Modifica della zona predefinita

Per cambiare la zona predefinita, usa l'opzione --set-default-zone seguita dal nome della zona che vuoi rendere predefinita.

Ad esempio, per modificare la zona predefinita in home è necessario eseguire il comando seguente:

sudo firewall-cmd --set-default-zone=home

Verifica le modifiche con:

sudo firewall-cmd --get-default-zone

home

Apertura di un porto o servizio

Con FirewallD puoi consentire il traffico per porte specifiche in base a regole predefinite chiamate servizi.

Per ottenere un elenco di tutti i servizi disponibili predefiniti digitare:

sudo firewall-cmd --get-services

Puoi trovare maggiori informazioni su ciascun servizio aprendo il file.xml associato nella /usr/lib/firewalld/services . Ad esempio, il servizio HTTP è definito in questo modo:

/usr/lib/firewalld/services/http.xml

WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages. WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.

Per consentire il traffico HTTP in entrata (porta 80) per le interfacce nell'area pubblica, solo per la sessione corrente (configurazione runtime) digitare:

sudo firewall-cmd --zone=public --add-service=http Se si sta modificando la zona predefinita, è possibile escludere l'opzione --zone .

Per verificare che il servizio sia stato aggiunto correttamente utilizzare l'opzione --list-services :

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

sudo firewall-cmd --permanent --zone=public --add-service=http

Usa --list-services insieme all'opzione --permanent per verificare le tue modifiche:

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

La sintassi per la rimozione del servizio è la stessa di quando si aggiunge un servizio. Basta usare --remove-service invece --add-service :

sudo firewall-cmd --zone=public --remove-service=http --permanent

Il comando sopra rimuove il servizio http dalla configurazione permanente della zona pubblica.

Cosa succede se si esegue un'applicazione come Plex Media Server per la quale non è disponibile un servizio appropriato?

In situazioni come queste, hai due opzioni. È possibile aprire le porte appropriate o definire un nuovo servizio FirewallD.

Ad esempio, il server Plex è in ascolto sulla porta 32400 e utilizza TCP, per aprire la porta nell'area pubblica per la sessione corrente utilizzare l' --add-port= :

sudo firewall-cmd --zone=public --add-port=32400/tcp I protocolli possono essere tcp o udp .

Per verificare che la porta sia stata aggiunta correttamente utilizzare l'opzione --list-ports :

sudo firewall-cmd --zone=public --list-ports

32400/tcp

Per mantenere aperta la porta 32400 dopo un riavvio, aggiungere la regola alle impostazioni permanenti eseguendo lo stesso comando utilizzando l'opzione --permanent .

La sintassi per la rimozione di una porta è la stessa di quando si aggiunge una porta. Basta usare --remove-port invece --add-port .

sudo firewall-cmd --zone=public --remove-port=32400/tcp

Creazione di un nuovo servizio FirewallD

Come abbiamo già detto, i servizi predefiniti sono memorizzati nella /usr/lib/firewalld/services . Il modo più semplice per creare un nuovo servizio è copiare un file di servizio esistente nella directory /etc/firewalld/services , che è la posizione dei servizi creati dall'utente e modificare le impostazioni del file.

Ad esempio, per creare una definizione di servizio per Plex Media Server possiamo usare il file di servizio SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Aprire il file plexmediaserver.xml appena creato e modificare il nome breve e la descrizione per il servizio all'interno di e tag. Il tag più importante che è necessario modificare è il tag port , che definisce il numero di porta e il protocollo che si desidera aprire.

Nel seguente esempio, stiamo aprendo le porte 1900 UDP e 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere. plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.

Salvare il file e ricaricare il servizio FirewallD:

sudo firewall-cmd --reload

Ora puoi utilizzare il servizio plexmediaserver nelle tue zone come qualsiasi altro servizio.

Porta di inoltro con Firewalld

Per inoltrare il traffico da una porta a un'altra porta o indirizzo, abilitare innanzitutto il mascheramento per la zona desiderata utilizzando l' --add-masquerade . Ad esempio per abilitare il mascheramento per il tipo di zona external :

sudo firewall-cmd --zone=external --add-masquerade

  • Inoltra il traffico da una porta all'altra sullo stesso server

Nel seguente esempio stiamo inoltrando il traffico dalla porta 80 alla porta 8080 sullo stesso server:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

  • Inoltra il traffico a un altro server

Nel seguente esempio stiamo inoltrando il traffico dalla porta 80 alla porta 80 su un server con IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

  • Inoltra il traffico a un altro server su una porta diversa

Nel seguente esempio stiamo inoltrando il traffico dalla porta 80 alla porta 8080 su un server con IP 10.10.10.2 :

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

Creazione di un set di regole con FirewallD

Nel seguente esempio, mostreremo come configurare il firewall se si eseguiva un server Web. Supponiamo che il tuo server abbia una sola interfaccia eth0 e tu desideri consentire il traffico in entrata solo su porte SSH, HTTP e

  1. Cambia la zona predefinita in dmz

    Useremo la zona dmz (demilitarizzata) perché di default consente solo il traffico SSH. Per modificare la zona predefinita in dmz e assegnarla all'interfaccia eth0 , eseguire i comandi seguenti:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    Apri le porte HTTP e

    Per aprire le porte HTTP e HTTPS aggiungere regole di servizio permanenti alla zona dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    Rendi effettive le modifiche immediatamente ricaricando il firewall:

    sudo firewall-cmd --reload

    Verifica le modifiche

    Per verificare il tipo di impostazioni di configurazione della zona dmz:

    sudo firewall-cmd --zone=dmz --list-all

    dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    L'output sopra ci dice che il dmz è la zona predefinita, è applicato all'interfaccia eth0 e le porte ssh (22) http (80) e https (443) sono aperte.

Conclusione

Hai imparato a configurare e gestire il servizio FirewallD sul tuo sistema CentOS.

Assicurarsi di consentire tutte le connessioni in entrata necessarie per il corretto funzionamento del sistema, limitando al contempo tutte le connessioni non necessarie.

firewalld firewall iptables centos security