Solo permita la autenticación de contraseña al servidor SSH desde la red interna

22

Tengo un servidor OpenSSH 5.9p1 que se ejecuta en Ubuntu Precise 12.04 que acepta conexiones tanto de la red interna como de Internet. Me gustaría exigir la autenticación de clave pública para las conexiones de Internet, pero aceptar la autenticación de clave pública o contraseña para las conexiones de la red interna. ¿Puedo configurar OpenSSH para implementar esto?

mgorven
fuente

Respuestas:

34

La Matchdirectiva en le /etc/ssh/sshd_configpermite aplicar selectivamente las directivas de configuración. Uno de los criterios de coincidencia disponibles es la dirección de origen de la conexión, por lo que puede usarse para implementar lo que desea. Puede deshabilitar la autenticación de contraseña de forma predeterminada y luego habilitarla para conexiones desde rangos de IP de red interna. (Tenga en cuenta que también desea deshabilitar ChallengeResponseAuthenticationpara evitar el uso de contraseñas). Este ejemplo permite la autenticación de contraseña de todos los rangos de IP privados RFC1918. Consulte la página de manual de sshd_config para obtener más detalles.

PasswordAuthentication no
ChallengeResponseAuthentication no

Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

Tenga en cuenta que el bloque de coincidencia debe agregarse al final del archivo; de lo contrario, todo lo que sigue se emparejará hasta el siguiente bloque de coincidencia. El mal posicionamiento del bloque Match puede causar la imposibilidad de conectarse.

mgorven
fuente
3
Tenga en cuenta: si hace esto y reenvía SSH desde una máquina de acceso público (jumphost) a una máquina con la configuración anterior (host interno), aún podría abrirse para el ataque, ya que la IP de origen del jumphost sería una dirección RFC1918 y permitir la autenticación de contraseña a su host interno.
c4urself