Skip to content

Latest commit

 

History

History
83 lines (53 loc) · 13.2 KB

File metadata and controls

83 lines (53 loc) · 13.2 KB

Gestione sicurezza di rete

Gestione firewall del server

Concetti di Architettura del firewall

Il kernel Linux fornisce il framework netfilter per operazioni sul traffico di rete come il filtraggio dei pacchetti, la traduzione degli indirizzi di rete e la traduzione delle porte.
Il framework netfilter include hook per i moduli del kernel per interagire con i pacchetti di rete mentre attraversano lo stack di rete del sistema. Fondamentalmente, gli hook di netfilter sono routine del kernel che intercettano eventi (ad esempio, un pacchetto che entra in un'interfaccia) ed eseguono altre routine correlate (ad esempio, regole del firewall).

Il framework nftables

Il framework di classificazione dei pacchetti nftables si basa su netfilter per applicare regole firewall al traffico di rete e, in Red Hat Enterprise Linux 9, sostituisce il framework iptables, ormai deprecato.

nftables offre vantaggi come una maggiore usabilità e set di regole più efficienti.
A differenza di iptables, che richiedeva una regola separata per ciascun protocollo, nftables consente di gestire traffico IPv4 e IPv6 contemporaneamente tramite l'unico strumento nft.
Per convertire le configurazioni iptables in nftables, utilizzare le utilità iptables-translate e ip6tables-translate.

Il servizio firewalld

Il servizio firewalld è un gestore firewall dinamico per Linux Enterprise Red Hat 9 e funziona come interfaccia per nftables.
Facilita la gestione classificando il traffico di rete in zone, assegnando pacchetti in base all'indirizzo IP o all'interfaccia di rete. Ogni zona ha una lista di porte e servizi aperti o chiusi.
Per dispositivi mobili, NetworkManager può regolare automaticamente la zona firewall a seconda della rete connessa.
Se un pacchetto non ha una zona specifica, viene utilizzata la zona dell'interfaccia di rete o quella predefinita.
La zona trusted consente tutto il traffico, a differenza delle altre, che lo bloccano se non soddisfa criteri specifici.

Zone predefinite

nome ZonaConfigurazione di default
trustedConsente tutto il traffico entrante
homeRifiuta il traffico in entrata a meno che non sia correlato al traffico in uscita o corrispondente ai servizi predefiniti ssh, mdns, ipp-client, samba-client o dhcpv6-client.
internalRifiuta il traffico in entrata a meno che non sia correlato al traffico in uscita o corrispondente ai servizi predefiniti ssh, mdns, ipp-client, samba-client or dhcpv6-client (come la zona home iniziale).
workRifiuta il traffico in entrata a meno che non sia correlato al traffico in uscita o coincida con i servizi predefiniti ssh, ipp-client o dhcpv6-client.
publicRifiuta il traffico in entrata a meno che non sia correlato al traffico in uscita o coincida con i servizi predefiniti ssh o dhcpv6-client.
Zona predefinita per interfacce di rete aggiunte piú recentemente.
externalRifiuta il traffico in entrata a meno che non sia correlato al traffico in uscita o coincida con i servizi predefiniti ssh.
Il traffico IPv4 in uscita che viene inoltrato attraverso questa zona viene mascherato in modo da sembrare proveniente dall'indirizzo IPv4 dell'interfaccia di rete in uscita.
dmzRifiuta il traffico in entrata a meno che non sia correlato al traffico in uscita o coincida con i servizi predefiniti ssh.
blockRifiuta il traffico in entrata a meno che non sia correlato al traffico in uscita.
dropElimina tutto il traffico in entrata a meno che non sia correlato al traffico in uscita (non rispond nemmeno con errori ICMP).

Servizi predefiniti

Il servizio firewalld include configurazioni predefinite per servizi comuni, semplificando l'impostazione delle regole del firewall.
Ad esempio, invece di cercare le porte rilevanti per un server NFS, è possibile usare la configurazione predefinita nfs per creare regole appropriate.
La tabella seguente elenca alcune configurazioni di servizio predefinite che potrebbero essere attive nella tua zona firewalld predefinita.

Nome ServizioConfigurazione
sshServer locale SSH.
Traffico in 22/tcp.
dhcpv6-clientClient locale DHCPv6.
Traffico in 546/udp su rete IPv6 fe80::/64.
ipp-clientStampa locale IPP.
Traffico verso 631/udp.
samba-clientFile locali Windows e client di condivisione stampanti.
Traffico verso 137/udp e 138/udp.
mdnsRisoluzione nomi local-link Multicast DNS (mDNS).
Traffico verso 5353/udp agli indirizzi multicast 224.0.0.251 (IPv4) o ff02::fb (IPv6).
cockpitInterfaccia web Red Hat Enterprise Linux per la gestione e il monitoraggio del sistema locale e remoto.
Traffico verso la porta 9090.
# ELENCO CONFIGURAZIONI DI SERVIZIO PREDEFINITE fw
[root@host ~]\# firewall-cmd --get-services
RH-Satellite-6 RH-Satellite-6-capsule 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 collectd
...output omitted...

Configurazione demone firewalld

L'elenco seguente mostra due modi comuni che gli amministratori di sistema utilizzano per interagire con il servizio firewalld:

  • GUI console web.
  • lo strumento da riga di comando firewall-cmd.

GUI

Con gli adeguati provilegi per accedervi, fai clic sull'opzione Networking nel menu di navigazione a sinistra per visualizzare la sezione Firewall nella pagina principale di networking. Fai clic sul pulsante Edit rules and zone per navigare alla pagina Firewall.

firewall-cmd CLI

comandi firewall-cmdSpiegazione
--get-default-zoneMostra la zona di default corrente.
--set-default-zone=ZONEImposta la zona di default.
La zona di default cambia sia al runtime che nella configurazione permanente.
--get-zonesMostra tutte le zone disponibili.
--get-active-zonesMostra tutte le zone in uso (con un'interfaccia o una fonte ad essi collegata), insieme alle informazioni relative alla loro interfaccia e fonte.
--add-source=CIDR [--zone=ZONE]Instrada tutto il traffico dall'indirizzo IP o dalla rete/maschera di rete alla zona specificata.
Se non viene fornita l'opzione --zone=, verrà utilizzata la zona predefinita..
--remove-source=CIDR [--zone=ZONE]Rimuovi la regola che instrada tutto il traffico dalla zona che proviene dall'indirizzo IP o dalla rete.
Se non viene fornita l'opzione --zone=, viene utilizzata la zona predefinita..
--add-interface=INTERFACE [--zone=ZONE]Reindirizza tutto il traffico dall'INTERFACE alla zona specificata.
Se non viene fornita l'opzione --zone=, verrà utilizzata la zona predefinita..
--change-interface=INTERFACE [--zone=ZONE]Associa l'interfaccia con una ZONA invece della sua zona attuale. Se non viene fornita l'opzione --zone=, verrà utilizzata la zona predefinita..
--list-all [--zone=ZONE]Elenca tutte le interfacce configurate, le fonti, i servizi e le porte per ZONE.
Se non viene fornita l'opzione --zone=, viene utilizzata la zona predefinita.
--list-all-zonesQuesto comando recupererà e mostrerà tutte le configurazioni e i dettagli pertinenti per ogni zona configurata.
--add-service=SERVICE [--zone=ZONE]Consenti il traffico verso SERVICE.
Se non viene fornita l'opzione --zone=, verrà utilizzata la zona predefinita.
--add-port=PORT/PROTOCOL [--zone=ZONE]Consenti il traffico verso le porte PORT/PROTOCOL.
Se non viene fornita l'opzione --zone=, verrà utilizzata la zona predefinita.
--remove-service=SERVICE [--zone=ZONE]Rimuovere SERVICE dall'elenco consentito per la zona.
Se non viene fornita l'opzione --zone=, viene utilizzata la zona predefinita.
--remove-port=PORT/PROTOCOL [--zone=ZONE]Rimuovi le porte PORT/PROTOCOL dall'elenco consentito per la zona.
Se non viene fornita l'opzione --zone=, viene utilizzata la zona predefinita.
--reloadElimina la configurazione runtime e applica la configurazione persistente.

L'esempio seguente imposta la zona predefinita su dmz, assegna tutto il traffico proveniente dalla rete 192.168.0.0/24 alla zona internal e apre le porte di rete per il servizio mysql nella zona internal :

[root@host ~]\# firewall-cmd --set-default-zone=dmz
[root@host ~]\# firewall-cmd --permanent --zone=internal --add-source=192.168.0.0/24
[root@host ~]\# firewall-cmd --permanent --zone=internal --add-service=mysql
[root@host ~]\# firewall-cmd --reload

per aggiungere tutto il traffico entrante proveniente dall'indirizzo IPv4 singolo 172.25.25.11 alla zona public :

[root@host ~]\# firewall-cmd --permanent --zone=public --add-source=172.25.25.11/32
[root@host ~]\# firewall-cmd --reload