Strumenti Utente

Strumenti Sito


tecno:sshnewportsetting

Nuova modalità di modifica porta del demone sshd!


Da qualche tempo, per Debian dalla versione 12, per altre distribuzioni non saprei dirvi, è stato modificato il modo in cui viene avviato il demone ssh.

Non è chiaro per quale motivo siano passati a questa modalità, che non è stata, a mio parere, sufficientemente segnalata, a giudicare dalle richieste di aiuto che si trovano in rete, su questo argomento in particolare.

Il cambio di metodologia, si dice in giro, è stato effettuato perché così il boot sia piu rapido, cosa su cui non sarei molto d'accordo. Praticamente consiste in questo:

  1. viene caricato un servizio sshd.socket che riserva la porta, ma non la attiva finché qualcuno non chiede l'accesso alla porta stessa.
  2. viene avviato successivamente, quando gli tocca, il demone sshd.

Apparentemente sembra una buona cosa, e per questioni di sicurezza che non voglio approfondire qui, lo è, ma se non avvisano il popolo si crea una situazione piuttosto fastidiosa: voi cambiate la porta di ascolto di ssh, riavviate o ricarcaricate il servizio sshd per fargli recepire la nuova porta, e fin qui tutto ok.

Appena riavviate il server, però, vi ritrovate nuovamente ssh in ascolto sulla porta 22 nonostante la vostra direttiva Port=nuovaportadecisadavoi, sia li al suo posto nel file /etc/ssh/sshd_config.

Che sta succedendo? (una volta recepita la novità) semplice: il servizio che si occupa di impegnare le porte per i servizi legge la configurazione da un'altra parte e non da /etc/ssh/sshd_config!! E per questo motivo vi trovate al primo riavvio di nuovo la porta 22 in ascolto per il demone di sshd.

Quindi per risolvere il problema si deve modificare anche il file /lib/systemd/system/ssh.socket che comanda l'assegnazione della porta per il demone sshd.

La versione del file post installazione è la seguente:

[Unit]
Description=OpenBSD Secure Shell server socket
Before=sockets.target
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Socket]
ListenStream=22
Accept=no

[Install]
WantedBy=sockets.target

Come si può notare la direttiva ListenStream è settata a 22 ed è per questo che al riavvio viene riallocata la porta 22 fregandosene bellamente della vostra eventuale impostazione di Port 12352.

Come risolvere il problema?

Ci sono diversi modi:

Primo

Disabilitare il servizio sshd.socket e tornare così alla gestione a cui siamo abituati.

Secondo

Apportare una modifica, nel modo indicato, al file di configurazione del socket di ssh.

Terzo

Apportare una modifica veloce al file di configurazione del socket di ssh. (ma non ho ancora verificato se in questo modo al primo aggiornamento tocca rimetterci le mani.)

Possibili rimedi in base alla lista appena proposta:

Primo

digitiamo il comando systemctl disable ssh.socket : in questo modo disabilitiamo la questione prenotazione della porta in modo permanente e si torna al solito sistema di gestione della porta in sshd.

Secondo

creiamo la carella /etc/systemd/system/ssh.socket.d/ ed in quella creiamo un file port.conf all'interno del quale inseriamo:

[Socket]
ListenStream=
ListenStream=54747

Si lo so c'è una doppia definizione di ListernStream=: pare sia necessaria la prima con il settaggio a vuoto per cancellare quella che prende dal file di configurazione originario, la seconda imposta la porta che vogliamo usare realmente.

Terzo

Soluzione più veloce, ma non ho potuto verificare ancora se un eventuale aggiornamento venga persa la nostra modfica o meno, per cui usatelo con le pinze!!!

Apriamo il file /lib/systemd/system/ssh.socket il cui contenuto è, come detto prima:

[Unit]
Description=OpenBSD Secure Shell server socket
Before=sockets.target
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Socket]
ListenStream=22
Accept=no

[Install]
WantedBy=sockets.target

Modifichiamo direttamente il 22 nella porta che vogliamo usare e riavviamo il servizio con systemctl restart ssh.socket

RIBADISCO: questa soluzione funziona, ma visto che è la più veloce, sono quasi certo che creerà problemi al primo aggiornamento di ssh: probabilmente durante l'aggioranmento verrà ripristinato il valore di default, ossia 22, per la ListenStream. Quindi meglio perdere qualche secondo in più ed usare la soluzione 2 che è quella consigliata da Debian stessa.

tecno/sshnewportsetting.txt · Ultima modifica: 24/03/2024 09:40 da 127.0.0.1