Passa al contenuto principale

Firewall

NethServer 8 include un firewall integrato semplice.

  • L'interfaccia di rete VPN del cluster wg0 fa parte di una zona fidata in cui tutto il traffico è consentito.
  • Tutte le altre interfacce di rete fanno parte di una zona pubblica in cui sono aperte solo porte specifiche.

Per impostazione predefinita, un nodo NS8 ha le seguenti porte aperte:

Le applicazioni che richiedono porte aperte pubblicamente, come il server di posta, configureranno automaticamente il firewall.

Verifica delle impostazioni del firewall​

Nella pagina Impostazioni, cliccare sulla scheda Firewall e selezionare un nodo del cluster.

  • Per il nodo selezionato, una tabella riassume i servizi in esecuzione sul nodo e le relative porte TCP e UDP aperte. Se una porta non è elencata qui, è chiusa per le connessioni dalla zona pubblica.
  • Sotto la tabella dei servizi e delle porte aperte, è presente un elenco delle interfacce di rete del nodo.

La stessa pagina è accessibile dalla pagina Nodi selezionando l'azione Firewall dal menu a tre punti della scheda di ciascun nodo.

Gestire le porte manualmente​

Per consentire le connessioni alla porta in ascolto di un servizio di terze parti, utilizzare firewall-cmd. Ad esempio, il seguente comando apre la porta TCP 9000:

firewall-cmd --add-port=9000/tcp

Per chiudere la stessa porta, utilizzare:

firewall-cmd --remove-port=9000/tcp

Le modifiche alla configurazione del firewall vengono perse dopo un riavvio del firewall o del sistema, a meno che lo stesso comando non venga eseguito una seconda volta con l'opzione --permanent. Fare riferimento alla pagina del manuale di firewall-cmd per ulteriori informazioni.

Per visualizzare l'elenco dei servizi e delle porte consentiti, eseguire:

firewall-cmd --list-all

Gestire il reindirizzamento della porta SSH​

Quando un nodo è accessibile pubblicamente, come un VPS cloud, è consigliabile modificare la porta SSH predefinita 22 con una porta personalizzata. Tuttavia, cambiare la porta a livello di configurazione di sshd presenta due svantaggi:

  1. È necessario modificare la policy predefinita di SELinux.
  2. Il requisito di supporto remoto della Subscription non funziona, poiché sshd deve continuare ad accettare connessioni locali sulla porta 22.

Poiché in ogni caso è necessario modificare la configurazione di Firewalld, l'approccio preferito è configurare solo Firewalld con un port forward (o reindirizzamento di porta) e lasciare sshd invariato.

I seguenti comandi aprono la porta 2222 e limitano l'accesso alla porta 22 alle interfacce fidate:

firewall-cmd --permanent --add-forward-port=port=2222:proto=tcp:toport=22
firewall-cmd --permanent --service=ssh --add-port=2222/tcp
firewall-cmd --permanent --service=ssh --remove-port=22/tcp
firewall-cmd --reload

Se successivamente si decide di cambiare porta (ad esempio, da 2222 a 2019), è necessario prima rimuovere il vecchio reindirizzamento di porta. La procedura è la seguente:

firewall-cmd --permanent --add-forward-port=port=2019:proto=tcp:toport=22
firewall-cmd --permanent --service=ssh --add-port=2019/tcp
firewall-cmd --permanent --remove-forward-port=port=2222:proto=tcp:toport=22
firewall-cmd --permanent --service=ssh --remove-port=2222/tcp
firewall-cmd --reload

Limitare l'accesso SSH per indirizzo IP di origine​

Per accettare connessioni SSH solo da indirizzi IP specifici, sostituire il servizio ssh con una regola avanzata (rich rule) per ogni indirizzo consentito. Ad esempio, per consentire solo 203.0.113.7:

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=203.0.113.7 port port=22 protocol=tcp accept'
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

Se SSH usa una porta reindirizzata, come descritto nella sezione precedente, il reindirizzamento accetta connessioni da qualsiasi indirizzo. Sostituirlo con una regola avanzata per ogni indirizzo consentito:

firewall-cmd --permanent --remove-forward-port=port=2222:proto=tcp:toport=22
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=203.0.113.7 forward-port port=2222 protocol=tcp to-port=22'
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

Per consentire un altro indirizzo, eseguire di nuovo il comando --add-rich-rule con il nuovo indirizzo, quindi ricaricare. L'indirizzo può anche essere una rete, ad esempio 203.0.113.0/24. Per gli indirizzi IPv6, usare family=ipv6. Per revocare un indirizzo, eseguire --remove-rich-rule con lo stesso testo della regola.

La stessa procedura vale per qualsiasi altro servizio TCP, come Cockpit: sostituire ssh con il nome del servizio di firewalld e 22 con la porta del servizio.

La pagina Firewall non mostra le regole avanzate, quindi il servizio limitato scompare dal suo elenco. Per vedere le regole, eseguire firewall-cmd --list-all.

avviso

Mantenere aperta la sessione SSH corrente e verificare di poter aprire una nuova connessione prima di chiuderla. Una regola errata può impedire l'accesso al nodo.

NethServer 8