verificar la configuración de sshd


19

¿Cómo puedo verificar la configuración de sshd?

Por ejemplo, quiero asegurarme de que estas configuraciones estén establecidas y aplicadas:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

¿Es la única forma de verificar manualmente el contenido del archivo sshd_configo puedo investigar sshdpara asegurarme?


2
¿Qué quieres decir con verificar? ¿Está preguntando cómo asegurarse de que un cambio de configuración que realizó sea válido? ¿Está preguntando si hay alguna herramienta como lint que verificará una configuración válida?
Zoredache

2
No creo que la pregunta no esté clara: simplemente no hay forma de verificar qué valor tiene una opción de configuración. Si ve #UseLogin noen su archivo ssd_config, ¿significa que UseLogin es sí o UseLogin es no? Debe consultar el manual para encontrar el valor predeterminado, que puede haber cambiado durante la compilación. Tan lejos de ser una pregunta inútil ...
Xorax

Respuestas:


27

Hay un modo de prueba extendido, invocado con la opción de línea de comando -T, que hace esto. Por ejemplo:

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

La opción ha existido en Portable OpenSSH desde 2008, cf. cometer e7140f2 . Esto fue lanzado con 5.1p1, realizado en julio de 2008, cf. Notas de la versión 5.1 , por lo que existe en casi todas las instalaciones de servidores OpenSSH compatibles hoy.


3
Sin embargo, tenga en cuenta que esto mostrará la configuración predeterminada + la configuración del /etc/ssh/sshd_configarchivo. Es posible que la configuración del archivo aún no esté activa, hasta que los sshdhaya recargado con algo similar /etc/init.d/ssh reloado equivalente en su sistema.
mivk

2
@mivk buen punto, pero eso es bastante normal para el curso, porque es típico que usemos este tipo de comandos exactamente después de hacer cambios, pero antes de aplicarlos, porque queremos verificar qué va a suceder. Por ejemplo, se apache2ctl -Scomporta de la misma manera.
Josip Rodin

4

Si bien esto no va a volcar todos sus definiciones de servidor, puede intentar conectar con el servidor con una bandera de depuración detallada: ssh -v user@server. Eso le dará mucha información que reflejará las opciones habilitadas en la configuración de sshd.

Por ejemplo, eche un vistazo a la salida de esta conexión con el modificador -v (firmas clave, dominio y direcciones IP disfrazadas a propósito):

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.

A partir de eso, puede ver que los métodos de autenticación permitidos son: clave pública, contraseña, teclado interactivo. También puede ver que este servidor no permite el roaming y que el usuario claudio podría conectarse usando su clave pública.

Puede aumentar el nivel de salida de información especificando más letras "v", pero luego puede obtener más información de bajo nivel de la que probablemente desee.


3

configuración de sshd se encuentra típicamente en el siguiente archivo: /etc/ssh/sshd_config.

Para consultar la configuración de tiempo de ejecución, puede usar el modo de prueba extendida sshd -Tque también le permite probar la coincidencia de configuraciones del cliente.


1
No creo que esto responda la pregunta que está haciendo, pero su pregunta no está del todo clara.
Zoredache

1
Parece que está preguntando cómo verificar la configuración. Que yo sepa, no hay forma de consultar la configuración de sshd en tiempo de ejecución. Por lo tanto, la configuración solo se puede encontrar en el archivo que mencioné.
gparent

Como dijiste, la pregunta no tiene sentido, así que pensé que tal vez el OP no sabía dónde estaba el archivo o su nombre exacto.
gparent

Si me va a rechazar sin ninguna razón válida después de 4 años, use su sentido común y verifique el historial de preguntas, luego sugiera una edición.
gparent

@gparent la pregunta original era algo vaga y tenía un error tipográfico en la ruta del archivo de configuración, por lo que debería haber utilizado la función de edición para corregir esa cadena en la pregunta; y de cualquier manera, la respuesta para la pregunta de verificación ahora se muestra arriba
Josip Rodin,

2

No hay forma conocida de consultar la configuración de una instancia de sshd en ejecución, creo, si se refiere al servidor openssh. dependiendo de lo que desee hacer, puede usar el indicador -t para probar un archivo de configuración para asegurarse de que sea válido antes de reiniciar el servidor, de modo que no sea expulsado, especialmente. si no tiene acceso fuera de banda al servidor.


2

El problema con mirar el archivo / etc / ssh / sshd_config como lo sugieren otras respuestas es que no necesariamente contiene toda la configuración. Este archivo contiene los valores de cualquier variable de configuración que desee establecer para anular los valores predeterminados, y tal como se envía contiene como comentarios los valores predeterminados que están integrados en sshd.

Si se instala un archivo de configuración personalizado en lugar de la versión enviada, pierde de vista los valores predeterminados que se compilan en sshd, y si se trata de una compilación personalizada, es posible que los valores predeterminados no coincidan con los comentarios en sshd_config que están visibles.

Además, es perfectamente posible ejecutar sshd con un archivo de configuración alternativo con la opción -f, por lo que el almacenado en / etc / ssh / sshd_config puede no reflejar la configuración actual.

Esto hace que la pregunta sea bastante válida y, que yo sepa, no puede ser respondida con certeza.


Todo eso es cierto, pero no se aplica al 99% de los servidores que ejecutarán sshd instalado desde un paquete que tiene la configuración predeterminada compilada.
Andrew Schulman

Su respuesta es útil, pero la pregunta se puede responder con certeza, lo ha sido durante bastante tiempo, vea mi respuesta a continuación.
Josip Rodin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.