# 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=nuova_porta_decisa_da_voi, 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.