verifica la configurazione di sshd


19

Come posso verificare la configurazione di sshd?

Ad esempio, voglio assicurarmi che queste impostazioni siano impostate e applicate:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

L'unico modo è verificare manualmente il contenuto del file sshd_configo posso verificare se sono sshdsicuro?


2
Cosa intendi per verifica? Stai chiedendo come essere sicuro che una modifica della configurazione che hai apportato sia valida? Stai chiedendo se esiste uno strumento come lanugine che controllerà una configurazione valida?
Zoredache,

2
Non penso che la domanda non sia chiara: non c'è proprio alcun modo per verificare quale valore sia per un'opzione di configurazione. Se vedi #UseLogin nonel tuo file ssd_config, significa che UseLogin è sì o UseLogin è no? Devi quindi fare riferimento al manuale per trovare il valore predefinito, che può essere stato modificato durante la compilazione. Così lontano da una domanda inutile ...
Xorax,

Risposte:


27

Esiste una modalità di test estesa, invocata con l'opzione della riga di comando -T, che fa ciò. Per esempio:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

L'opzione esiste in Portable OpenSSH dal 2008, cfr. commit e7140f2 . Questo è stato rilasciato con 5.1p1, realizzato a luglio 2008, cfr. note di rilascio per 5.1 , quindi esiste praticamente in tutte le installazioni di server OpenSSH supportate oggi.


3
Si noti tuttavia che questo mostrerà le impostazioni predefinite + le impostazioni dal /etc/ssh/sshd_configfile. Le impostazioni del file potrebbero non essere ancora attive, fino a quando non le saranno state sshdricaricate con qualcosa di simile /etc/init.d/ssh reloado equivalente sul sistema.
martedì

2
@mivk buon punto, ma è praticamente alla pari per il corso, perché è tipico che usiamo questo tipo di comandi esattamente dopo aver apportato le modifiche, ma prima di applicarli effettivamente, perché vogliamo verificare cosa accadrà. Ad esempio, apache2ctl -Ssi comporta allo stesso modo.
Josip Rodin,

4

Anche se questo non scaricare tutte le definizioni di server, è possibile provare la connessione al server con una bandiera di debug verbose: ssh -v user@server. Questo ti darà molte informazioni che rifletteranno le opzioni abilitate nella configurazione di sshd.

Ad esempio, dai un'occhiata all'output di questa connessione con l' opzione -v (firme chiave, indirizzi di dominio e IP appositamente mascherati):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.

Da ciò puoi vedere che i metodi di autenticazione consentiti sono: chiave pubblica, password, tastiera interattiva. Puoi anche vedere che il roaming non è consentito da questo server e che l'utente claudio potrebbe connettersi usando la sua chiave pubblica.

È possibile aumentare il livello di output delle informazioni specificando più lettere "v", ma è possibile ottenere molte più informazioni di basso livello di quanto si desideri.


3

la configurazione di sshd si trova in genere nel seguente file: /etc/ssh/sshd_config.

Per eseguire una query sulla configurazione di runtime, è possibile utilizzare la modalità test estesa sshd -Tche consente anche di testare la corrispondenza delle impostazioni del client.


1
Non credo che questo risponda alla domanda che sta ponendo, ma la sua domanda non è del tutto chiara.
Zoredache,

1
Sembra che stia chiedendo come verificare la configurazione. Per quanto ne so, non c'è modo di interrogare la configurazione di sshd in fase di esecuzione. Pertanto, la configurazione può essere trovata solo nel file che ho citato.
gparent

Come hai detto, la domanda non ha senso, quindi ho pensato che forse l'OP non sapeva dove fosse il file o il suo nome esatto.
gparent

Se hai intenzione di sottovalutarmi per nessun motivo valido dopo 4 anni, usa il tuo buon senso e controlla la cronologia delle domande, quindi suggerisci una modifica.
gparent

@gparent la domanda originale era alquanto vaga e aveva un refuso nel percorso del file di configurazione, quindi avresti dovuto usare la funzione di modifica per correggere quella stringa nella domanda; e in entrambi i casi, la risposta per la domanda di verifica è ora mostrata sopra
Josip Rodin,

2

non esiste alcun modo noto per interrogare la configurazione di un'istanza sshd in esecuzione, penso, se si fa riferimento al server openssh. a seconda di ciò che si desidera fare, è possibile utilizzare il flag -t per testare un file di configurazione per assicurarsi che sia valido prima di riavviare il server, in modo da non essere espulso, esp. se non si dispone di alcun accesso fuori banda al server.


2

Il problema con l'esame del file / etc / ssh / sshd_config come suggerito da altre risposte è che non contiene necessariamente l'intera configurazione. Questo file contiene i valori di tutte le variabili di configurazione che si desidera impostare per sovrascrivere i valori predefiniti e, come forniti, contiene come commenti i valori predefiniti incorporati in sshd.

Se viene installato un file di configurazione personalizzato al posto della versione fornita, si perdono di vista i valori predefiniti compilati in sshd e se si tratta di una build personalizzata, i valori predefiniti potrebbero non corrispondere ai commenti nel sshd_config che sono visibili.

Inoltre, è perfettamente possibile eseguire sshd con un file di configurazione alternativo con l'opzione -f, quindi quello memorizzato in / etc / ssh / sshd_config potrebbe non riflettere le impostazioni correnti.

Ciò rende la domanda abbastanza valida e, per quanto ne so, incapace di rispondere con certezza.


Tutto ciò è vero, ma non si applica al 99% dei server che eseguiranno sshd installato da un pacchetto in cui è stata compilata la configurazione predefinita.
Andrew Schulman,

La tua risposta è utile, ma è sicuramente possibile rispondere alla domanda con certezza, è da un po 'di tempo ormai, per favore vedi la mia risposta qui sotto.
Josip Rodin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.