Amministratore Linux - Configurazione firewall
firewalld è il controller front-end predefinito per iptables su CentOS. Il front-end firewalld ha due vantaggi principali rispetto a iptables non elaborati:
Utilizza zone facili da configurare e implementare per astrarre catene e regole.
I set di regole sono dinamici, il che significa che le connessioni stateful non vengono interrotte quando le impostazioni vengono modificate e / o modificate.
Ricorda, firewalld è il wrapper per iptables, non un sostituto. Sebbene i comandi iptables personalizzati possano essere utilizzati con firewalld , si consiglia di utilizzare firewalld per non interrompere la funzionalità del firewall.
Innanzitutto, assicuriamoci che firewalld sia avviato e abilitato.
[root@CentOS rdc]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago
Docs: man:firewalld(1)
Main PID: 712 (firewalld)
Memory: 34.7M
CGroup: /system.slice/firewalld.service
└─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Possiamo vedere, firewalld è sia attivo (per l'avvio all'avvio) che attualmente in esecuzione. Se inattivo o non avviato possiamo utilizzare -
systemctl start firewalld && systemctl enable firewalld
Ora che abbiamo configurato il nostro servizio firewalld, assicuriamoci che sia operativo.
[root@CentOS]# firewall-cmd --state
running
[root@CentOS]#
Possiamo vedere, il servizio firewalld è completamente funzionante.
Firewalld lavora sul concetto di zone . Una zona viene applicata alle interfacce di rete tramite Network Manager. Ne discuteremo nella configurazione della rete . Ma per ora, per impostazione predefinita, la modifica della zona predefinita cambierà tutti gli adattatori di rete rimasti nello stato predefinito di "Zona predefinita".
Diamo una rapida occhiata a ciascuna zona pronta all'uso con firewalld .
Sr.No. | Zona e descrizione |
---|---|
1 | drop Livello di fiducia basso. Tutte le connessioni in entrata e i pacchetti vengono interrotti e solo le connessioni in uscita sono possibili tramite statefullness |
2 | block Alle connessioni in entrata viene risposto con un messaggio icmp che informa l'iniziatore che la richiesta è vietata |
3 | public Tutte le reti sono limitate. Tuttavia, le connessioni in entrata selezionate possono essere autorizzate esplicitamente |
4 | external Configura firewalld per NAT. La rete interna rimane privata ma raggiungibile |
5 | dmz Sono consentite solo alcune connessioni in entrata. Utilizzato per sistemi in isolamento DMZ |
6 | work Per impostazione predefinita, fidarsi di più computer sulla rete assumendo che il sistema si trovi in un ambiente di lavoro protetto |
7 | hone Per impostazione predefinita, più servizi non sono filtrati. Supponendo che un sistema si trovi su una rete domestica in cui verranno utilizzati servizi come NFS, SAMBA e SSDP |
8 | trusted Tutte le macchine sulla rete sono affidabili. La maggior parte delle connessioni in entrata sono consentite senza restrizioni.This is not meant for interfaces exposed to the Internet |
Le zone più comuni da utilizzare sono: pubblica, drop, lavoro e casa.
Alcuni scenari in cui verrà utilizzata ciascuna zona comune sono:
public- È la zona più comune utilizzata da un amministratore. Ti consentirà di applicare le impostazioni personalizzate e di rispettare le specifiche RFC per le operazioni su una LAN.
drop- Un buon esempio di quando utilizzare drop è in una conferenza sulla sicurezza, su una rete Wi-Fi pubblica o su un'interfaccia collegata direttamente a Internet. drop presume che tutte le richieste non richieste siano dannose, inclusi i probe ICMP. Quindi qualsiasi richiesta fuori dallo stato non riceverà risposta. Lo svantaggio del drop è che può interrompere la funzionalità delle applicazioni in determinate situazioni che richiedono una rigorosa conformità RFC.
work- Sei su una LAN aziendale semi-sicura. Dove tutto il traffico può essere considerato moderatamente sicuro. Ciò significa che non è WiFi e forse abbiamo IDS, IPS e sicurezza fisica o 802.1x. Dovremmo anche avere familiarità con le persone che utilizzano la LAN.
home- Sei su una LAN domestica. Sei personalmente responsabile per ogni sistema e utente sulla LAN. Conosci ogni macchina sulla LAN e che nessuna è stata compromessa. Spesso vengono proposti nuovi servizi per la condivisione di file multimediali tra persone fidate e non è necessario dedicare tempo extra per motivi di sicurezza.
Le zone e le interfacce di rete funzionano su un livello da uno a molti. Un'interfaccia di rete può avere solo una singola zona applicata alla volta. Mentre, una zona può essere applicata a molte interfacce contemporaneamente.
Vediamo quali zone sono disponibili e quali sono le zone attualmente applicate.
[root@CentOS]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Pronto per aggiungere alcune regole personalizzate in firewalld?
Per prima cosa, vediamo come appare la nostra scatola, a un portscanner dall'esterno.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00046s latency).
Not shown: 1023 filtered ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds
bash-3.2#
Consentiamo alle richieste in arrivo sulla porta 80.
Innanzitutto, controlla per vedere quale zona è applicata come predefinita.
[root@CentOs]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Quindi, impostare la regola che consente la porta 80 sulla zona predefinita corrente.
[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp
success
[root@CentOS]#
Ora, controlliamo la nostra casella dopo aver consentito le connessioni alla porta 80.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00053s latency).
Not shown: 1022 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds
bash-3.2#
Ora consente il traffico non richiesto a 80.
Mettiamo la zona predefinita da eliminare e vediamo cosa succede alla scansione delle porte.
[root@CentOS]# firewall-cmd --set-default-zone=drop
success
[root@CentOS]# firewall-cmd --get-default-zone
drop
[root@CentOs]#
Ora scansioniamo l'host con l'interfaccia di rete in una zona più sicura.
bash-3.2# nmap -sS -p 1-1024 -T 5 10.211.55.1
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST
Nmap scan report for centos.shared (10.211.55.1)
Host is up (0.00094s latency).
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered
Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds
bash-3.2#
Ora tutto è filtrato dall'esterno.
Come dimostrato di seguito, l'host non risponderà nemmeno alle richieste di ping ICMP quando è in caduta .
bash-3.2# ping 10.211.55.1
PING 10.211.55.1 (10.211.55.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Impostiamo nuovamente la zona predefinita su pubblica .
[root@CentOs]# firewall-cmd --set-default-zone=public
success
[root@CentOS]# firewall-cmd --get-default-zone
public
[root@CentOS]#
Ora controlliamo le nostre attuali regole di filtraggio in pubblico .
[root@CentOS]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s5
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
[root@CentOS rdc]#
Come configurato, la nostra regola di filtro della porta 80 è solo nel contesto della configurazione in esecuzione. Ciò significa che una volta che il sistema viene riavviato o il servizio firewalld viene riavviato, la nostra regola verrà ignorata.
Presto configureremo un demone httpd , quindi rendiamo le nostre modifiche persistenti -
[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@CentOS]# systemctl restart firewalld
[root@CentOS]#
Ora la nostra regola della porta 80 nella zona pubblica è persistente durante i riavvii e i riavvii del servizio.
Di seguito sono riportati i comandi firewalld comuni applicati con firewall-cmd .
Comando | Azione |
---|---|
firewall-cmd --get-zone | Elenca tutte le zone che possono essere applicate a un'interfaccia |
firewall-cmd: stato | Restituisce lo stato corrente del servizio firewalld |
firewall-cmd --get-default-zone | Ottiene la zona predefinita corrente |
firewall-cmd --set-default-zone = <zone> | Imposta la zona predefinita nel contesto corrente |
firewall-cmd --get-active-zone | Ottiene le zone correnti nel contesto applicato a un'interfaccia |
firewall-cmd --zone = <zone> --list-all | Elenca la configurazione della zona fornita |
firewall-cmd --zone = <zone> --addport = <protocollo di porta / trasporto> | Applica una regola di porta al filtro di zona |
--permanente | Rende persistenti le modifiche alla zona. Il flag viene utilizzato in linea con i comandi di modifica |
Questi sono i concetti di base dell'amministrazione e della configurazione di firewalld .
La configurazione dei servizi firewall basati su host in CentOS può essere un'attività complessa in scenari di rete più sofisticati. L'utilizzo avanzato e la configurazione di firewalld e iptables in CentOS possono richiedere un intero tutorial. Tuttavia, abbiamo presentato le basi che dovrebbero essere sufficienti per completare la maggior parte delle attività quotidiane.