Tutti gli articoli

sicurezza

Come chiudere le porte aperte su Linux che non ti servono

Una guida semplice per trovare le porte aperte su Linux, decidere cosa deve restare raggiungibile e chiudere il resto in sicurezza.

  • sicurezza
  • firewall
  • linux
Un pannello di server Linux invia solo una porta verde approvata attraverso un firewall mentre le porte inutilizzate sono bloccate e chiuse.

Lasciare una porta di rete inutilizzata aperta equivale a dimenticare la serratura di un ingresso secondario: anche se l'accesso non viene notato immediatamente, rappresenta una superficie d'attacco superflua che va eliminata.

In breve: Per chiudere le porte di rete non necessarie su un sistema Linux, occorre prima identificare i socket in ascolto tramite comandi di diagnostica, quindi arrestare il processo associato oppure bloccare il traffico in ingresso mediante un firewall (ufw, firewalld o iptables). Un server di produzione deve mantenere esposte unicamente le porte strettamente necessarie al servizio (tipicamente SSH, HTTP e HTTPS), verificando l'effettiva chiusura con una scansione successiva.

Che cos'è una porta di rete su Linux?

Una porta di rete è un punto finale di comunicazione logica identificato da un numero. Quando un daemon o un servizio applicativo deve ricevere traffico di rete, esegue il bind e si mette in ascolto (LISTEN) su una porta specifica.

Di default, le chiamate HTTP non cifrate utilizzano la porta 80, mentre il traffico HTTPS cifrato utilizza la porta 443. Il protocollo SSH per l'amministrazione remota risponde di norma sulla porta 22. I database engine utilizzano porte dedicate, come la 5432 per PostgreSQL o la 3306 per MySQL.

Una porta in stato "aperto" indica la presenza di un processo pronto ad accettare connessioni in ingresso. Oltre ai servizi web pubblici, una porta aperta può nascondere ambienti di test dimenticati, pannelli di gestione non protetti o database esposti impropriamente su interfacce pubbliche.

L'operazione di chiusura di una porta può essere effettuata tramite due modalità differenti:

  • Arresto del servizio: Interruzione del processo in ascolto, eliminando il socket di rete.
  • Filtraggio tramite Firewall: Intercettazione e blocco dei pacchetti di rete prima che raggiungano il processo in ascolto.

Entrambe le soluzioni sono valide: la disattivazione del servizio elimina il vettore d'attacco alla radice, mentre il firewall applica una regola di segregazione perimetrale.

Quali porte di rete devono rimanere aperte?

Un'infrastruttura server minimizzata deve esporre esclusivamente i servizi destinati al pubblico o all'amministrazione remota.

Per un comune server web, il profilo delle porte pubbliche include:

  • 22 (TCP) per l'accesso SSH (o la porta custom definita nelle direttive di sshd_config).
  • 80 (TCP) per il traffico HTTP, necessaria per l'offloading e la gestione delle challenge di validazione SSL.
  • 443 (TCP) per il traffico HTTPS cifrato.

Tutti gli altri servizi devono essere analizzati valutando la reale necessità di esposizione su interfaccia pubblica.

I database engine, i sistemi di caching in-memory (es. Redis) e gli strumenti di gestione interna non devono mai accettare connessioni dirette da internet; l'accesso a tali risorse deve avvenire tramite il loopback locale (127.0.0.1), reti private dedicate (VPC) o tunnel cifrati.

Per approfondire i concetti di segregazione e sicurezza di rete, consulta la nostra guida su come configurare un firewall sul tuo server.

Procedura per la chiusura sicura delle porte su Linux

La chiusura delle porte deve essere eseguita con un approccio sistematico per evitare il blocco accidentale delle sessioni amministrative.

  1. Identificazione dei socket in ascolto:

Utilizzare l'utility ss per elencare i socket TCP e UDP attivi con i relativi ID di processo (PID):

bashsudo ss -tulpn