Vai al contenuto

4 Configurazione Del Firewall

Nel corso di questo capitolo, è necessario essere l'utente root o essere in grado di eseguire con i privilegi di root con sudo.

Come per qualsiasi server, è necessario assicurarsi che sia sicuro dal mondo esterno e dalla LAN. Il server di esempio ha solo un'interfaccia LAN, ma è possibile avere due interfacce, ciascuna rivolta verso le reti LAN e WAN.

Impostazione del Firewall – firewalld

Per le regole del firewalld, è necessario utilizzare questa procedura di base o avere familiarità con questi concetti. I presupposti sono una rete LAN di 192.168.1.0/24 e un bridge chiamato incusbr0. Per essere chiari, si possono avere molte interfacce sul server Incus, di cui una rivolta verso la WAN. Verrà inoltre creata una zona per le reti bridged e local. Questo solo per chiarezza di zona. Gli altri nomi di zona non si applicano. Questa procedura presuppone che si conoscano già le basi di firewalld.

firewall-cmd --new-zone=bridge --permanent

È necessario ricaricare il firewall dopo aver aggiunto una zona:

firewall-cmd --reload

Si vuole consentire tutto il traffico dal bridge. È sufficiente aggiungere l'interfaccia e modificare il target da “default” a “ACCEPT”:

Attenzione

La modifica del target di una zona `firewalld' deve essere fatta con l'opzione `--permanent', quindi è meglio inserire questo flag negli altri comandi e rinunciare all'opzione `--runtime-to-permanent'.

Nota

Se si deve creare una zona in cui si desidera consentire tutti gli accessi all'interfaccia o alla sorgente, ma non si vuole specificare alcun protocollo o servizio, è necessario modificare l'obiettivo da “default” ad “ACCEPT”. Lo stesso vale per “DROP” e “REJECT” per un particolare blocco IP per il quale si dispone di zone personalizzate. La zona “drop” se ne occuperà finché non si utilizza una zona personalizzata.
firewall-cmd --zone=bridge --add-interface=incusbr0 --permanent
firewall-cmd --zone=bridge --set-target=ACCEPT --permanent

Supponendo che non ci siano errori e che tutto funzioni ancora, riavviare il sistema:

firewall-cmd --reload

Se ora si elencano le regole con firewall-cmd --zone=bridge --list-all si vedrà:

bridge (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: incusbr0
  sources:
  services:
  ports:
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Si noti che si desidera consentire anche l'interfaccia locale. Anche in questo caso, le zone incluse non hanno un nome appropriato. Creare una zona e utilizzare l'intervallo IP di origine per l'interfaccia locale per garantire l'accesso:

firewall-cmd --new-zone=local --permanent
firewall-cmd --reload

Aggiungere gli IP di origine per l'interfaccia locale e modificare la destinazione in "ACCEPT":

firewall-cmd --zone=local --add-source=127.0.0.1/8 --permanent
firewall-cmd --zone=local --set-target=ACCEPT --permanent
firewall-cmd --reload

Procedere con l'elenco della “local” zone per assicurarsi che le regole siano presenti con `firewall-cmd --zone=local --list che mostrerà:

local (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces:
  sources: 127.0.0.1/8
  services:
  ports:
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Si vuole consentire SSH dalla nostra rete fidata. A tal fine, consentire agli IP di origine di utilizzare la zona “trusted” integrata. Per impostazione predefinita, l'obiettivo di questa zona è “ACCEPT”.

firewall-cmd --zone=trusted --add-source=192.168.1.0/24

Aggiungere il servizio alla zona:

firewall-cmd --zone=trusted --add-service=ssh

Se tutto funziona, spostare le regole su permanente e ricaricarle:

firewall-cmd --runtime-to-permanent
firewall-cmd --reload

L'elenco della zona "fidata" visualizzerà:

trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces:
  sources: 192.168.1.0/24
  services: ssh
  ports:
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

La zona “public” è abilitata per impostazione predefinita e l'SSH è consentito. Per motivi di sicurezza, non si vuole che SSH sia consentito nella zona "pubblica". Assicurarsi che le zone siano corrette e che l'accesso al server avvenga tramite uno degli IP della LAN (nel nostro esempio). Se non lo verificate prima di continuare, potreste rimanere bloccati fuori dal server. Quando si è sicuri di avere accesso dall'interfaccia corretta, rimuovere SSH dalla zona "pubblica":

firewall-cmd --zone=public --remove-service=ssh

Verificate l'accesso e assicuratevi di non essere bloccati. In caso contrario, spostare le regole su permanenti, ricaricare ed eliminare la zona "pubblica" per garantire la rimozione di SSH:

firewall-cmd --runtime-to-permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-all

Potrebbero esserci altre interfacce da considerare sul vostro server. È possibile utilizzare le zone integrate, ove opportuno, ma se i nomi non sembrano sufficienti, è possibile aggiungere zone. Ricordate che se non ci sono servizi o protocolli che dovete consentire o rifiutare in modo specifico, dovrete cambiare il target di zona. È possibile farlo se funziona l'uso delle interfacce, come nel caso del bridge. Se avete bisogno di un accesso più granulare ai servizi, utilizzate invece gli IP di origine.

Author: Spencer Steven

Contributors: Ezequiel Bruni, Ganna Zhyrnova