Modifica della porta SSH | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Modifica della porta SSH

La modifica della porta SSH predefinita (22) riduce l'esposizione alle scansioni automatizzate e ai semplici attacchi brute-force, ma non sostituisce le corrette misure di sicurezza.

Warning

Prima di apportare qualsiasi modifica, assicurati di avere una sessione SSH attiva aperta. Non chiuderla finché non avrai verificato che la nuova porta funzioni. In caso di problemi, perderesti l'accesso al server.

Scegliere un numero di porta

Scegli un numero di porta superiore a 1024. Le porte nell'intervallo 49152–65535 hanno meno probabilità di entrare in conflitto con altri servizi conosciuti. Evita alternative comunemente utilizzate come 2222 o 22222, poiché sono spesso prese di mira dagli scanner automatizzati. In questa guida viene utilizzata 22777 come esempio.

Eseguire il backup del file di configurazione

Prima di apportare qualsiasi modifica, crea una copia di backup del file di configurazione SSH:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Cambiare la porta SSH su Ubuntu e Debian

A partire da Debian 12 e da alcune versioni più recenti di Ubuntu (22.04+), SSH può utilizzare per impostazione predefinita l'attivazione dei socket systemd. In questo caso, modificare solamente la direttiva Port in sshd_config spesso non è sufficiente.

Per prima cosa, verifica se l'attivazione tramite socket è attiva:

systemctl is-active ssh.socket

Se il comando restituisce active, configura il socket SSH affinché utilizzi la nuova porta.

Crea un override systemd per il socket SSH:

systemctl edit ssh.socket

Aggiungi il seguente contenuto:

[Socket] ListenStream= ListenStream=22777

La riga vuota ListenStream= rimuove la porta predefinita (22). Senza di essa, SSH potrebbe rimanere in ascolto sia sulla porta 22 sia sulla nuova porta.

Per una maggiore affidabilità, imposta la porta anche nella configurazione SSH. Questo aiuta il generatore systemd e mantiene l'impostazione anche dopo gli aggiornamenti di OpenSSH:

mkdir -p /etc/ssh/sshd_config.d echo "Port 22777" | tee /etc/ssh/sshd_config.d/10-port.conf

Info

Per una migliore compatibilità, puoi specificare esplicitamente anche gli indirizzi:

[Socket] ListenStream= ListenStream=0.0.0.0:22777 ListenStream=[::]:22777

Salva la configurazione e applica le modifiche:

systemctl daemon-reload systemctl restart ssh.socket systemctl restart ssh

Verifica che il servizio sia in esecuzione:

systemctl status ssh.socket

Info

Su alcuni sistemi più recenti, come Ubuntu 24.04+, il generatore systemd può leggere automaticamente la porta da sshd_config. In questo caso, potrebbe essere sufficiente modificare direttamente Port ed eseguire systemctl daemon-reload seguito da systemctl restart ssh.socket. Il metodo con override descritto sopra funziona su tutte le versioni.

Versioni precedenti di Ubuntu e Debian

Nelle versioni di Ubuntu precedenti alla 22.04 e nelle versioni di Debian precedenti alla 12, SSH non è gestito tramite l'attivazione dei socket. Apri il file di configurazione SSH:

nano /etc/ssh/sshd_config

Trova la seguente riga:

Port 22

Rimuovi il commento e sostituisci 22 con il numero di porta scelto:

Port 22777

Salva il file e verifica la configurazione:

sshd -t

Se il comando non viene trovato, utilizza:

/usr/sbin/sshd -t

Se il comando non restituisce alcun output, la configurazione è valida. Riavvia il servizio SSH:

systemctl restart ssh

Disabilitare l'attivazione tramite socket

Se preferisci gestire SSH tramite il servizio tradizionale anziché tramite il socket, puoi disabilitare l'attivazione dei socket:

systemctl disable --now ssh.socket systemctl enable --now ssh

Dopodiché modifica sshd_config come descritto sopra e riavvia SSH con:

systemctl restart ssh

Cambiare la porta SSH su AlmaLinux, Rocky Linux e CentOS

Modificare il file di configurazione SSH

Apri il file di configurazione SSH:

nano /etc/ssh/sshd_config

Trova la seguente riga:

Port 22

Rimuovi il commento e sostituisci 22 con il numero di porta scelto:

Port 22777

Salva il file e verifica la configurazione:

/usr/sbin/sshd -t

Se il comando non restituisce alcun output, la configurazione è valida. Riavvia il servizio SSH:

systemctl restart sshd

Verifica che il servizio sia in esecuzione:

systemctl status sshd

Consentire la porta in SELinux

Sui sistemi con SELinux abilitato, devi consentire la nuova porta anche nella policy di SELinux. Per verificare quali porte sono attualmente consentite per SSH, esegui:

semanage port -l | grep ssh

Quindi aggiungi o modifica la nuova porta:

semanage port -a -t ssh_port_t -p tcp 22777 || semanage port -m -t ssh_port_t -p tcp 22777

Se semanage non è installato, installa il pacchetto necessario:

dnf install policycoreutils-python-utils

Configurare il firewall

Consenti sempre la nuova porta nel firewall prima di riavviare SSH. Se riavvii prima SSH, potresti perdere l'accesso al server.

UFW

ufw allow 22777/tcp ufw reload ufw status

firewalld

firewall-cmd --permanent --zone=public --add-port=22777/tcp firewall-cmd --reload

iptables

iptables -I INPUT -p tcp --dport 22777 -j ACCEPT iptables-save > /etc/iptables/rules.v4

Info

Il comando iptables-save salva le regole in un file solo se iptables-persistent è installato e configurato sul sistema. Per installarlo, esegui:

apt install -y iptables-persistent

Verifica che la tua distribuzione utilizzi questo file prima di affidarti ad esso per la persistenza. Tieni presente che i sistemi moderni possono utilizzare nftables al posto di iptables. Se utilizzi nftables, aggiungi una regola che consenta la nuova porta nella configurazione di nftables.

Configurare Fail2Ban

Se Fail2Ban è configurato sul server, aggiorna la porta SSH nella relativa configurazione. Apri /etc/fail2ban/jail.local oppure il file appropriato in /etc/fail2ban/jail.d/ e imposta:

port = 22777

Dopo aver aggiornato la configurazione, riavvia Fail2Ban:

systemctl restart fail2ban

Verificare la nuova porta

Verifica che SSH sia in ascolto sulla nuova porta:

ss -tlnp | grep :22777

In alternativa, puoi elencare tutti i listener relativi a SSH:

ss -tlnp | grep ssh

Sui sistemi meno recenti, utilizza invece netstat:

netstat -tlnp | grep :22777

Puoi anche verificare direttamente lo stato del servizio.

Su Ubuntu e Debian:

systemctl status ssh.socket

Su AlmaLinux, Rocky Linux e CentOS:

systemctl status sshd

Senza chiudere la sessione SSH corrente, apri una nuova finestra del terminale e connettiti utilizzando la nuova porta:

ssh root@YOUR_SERVER_IP -p 22777

Se la connessione ha esito positivo, puoi chiudere la sessione precedente. Quindi rimuovi la porta 22 dalle regole del firewall se non è più necessaria.

Per UFW:

ufw delete allow 22/tcp ufw reload

Per firewalld:

firewall-cmd --permanent --zone=public --remove-port=22/tcp firewall-cmd --reload

Warning

Non rimuovere la porta 22 dal firewall prima di aver verificato che la nuova porta funzioni. Se la nuova connessione non riesce, utilizza la sessione SSH aperta per risolvere il problema o ripristinare le modifiche:

systemctl revert ssh.socket cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config rm -f /etc/ssh/sshd_config.d/10-port.conf systemctl daemon-reload systemctl restart ssh.socket

Se l'attivazione tramite socket è disabilitata, sostituisci gli ultimi due comandi con:

systemctl restart ssh

Conclusione

Cambiare la porta SSH predefinita da 22 a una porta personalizzata può ridurre l'esposizione alle scansioni automatizzate e ai tentativi di brute-force di base. Tuttavia, la modifica della porta deve essere considerata una misura di sicurezza aggiuntiva e non un sostituto di una corretta protezione di SSH.

Mantieni sempre aperta la sessione SSH corrente finché non ti sei connesso correttamente utilizzando la nuova porta. Dopo aver verificato la nuova connessione, puoi chiudere in sicurezza la vecchia sessione e rimuovere la porta 22 dal firewall se non è più necessaria.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA