Estoy en el proceso de configurar un servidor en la nube para ejecutar la siguiente pila: Ruby, Passenger, Apache; bajo Ubuntu 10.04 (Lucid Lynx).
En el proceso de querer hacer que el servidor sea más fácil de administrar, configuro las claves RSA root
y www-data
así puedo ssh
ingresar al servidor. Lo que no me gustó fue www-data
el .ssh
directorio de ese en el /var/www
que está la configuración de directorio predeterminada para apache. Mi preocupación es que si apache no está configurado correctamente, entonces el .ssh
directorio puede quedar expuesto.
Me encontré con la solución para mover el ~/.ssh/authorized_keys
archivo en una ubicación central mediante el cambio AuthorizedKeysFile
en /etc/ssh/sshd_config
. Esto viene con 2 ventajas: una ubicación única para las claves y no tener que preocuparse por una mala configuración de apache. La única desventaja que se me ocurre es que ahora todos los usuarios están disponibles para iniciar sesión en el servidor (claramente una espada de doble filo del archivo de clave central).
¿Hay algo que me haya perdido en esta configuración? ¿Me he expuesto en exceso o es una solución mejor que los authorized_keys
archivos individuales ?
Soy ecológico cuando se trata de la administración del servidor, pero estoy totalmente listo para ser llamado malos nombres por hacer cosas malas. :RE
fuente
id_rsa
archivo~/.ssh
y logran leerlo)Respuestas:
Todos los archivos de claves se pueden centralizar en el mismo directorio y no mezclar en el mismo archivo.
Simplemente configure el
sshd_config
archivo así:En tu servidor:
/etc/ssh/authorized_keys/www-data
/etc/ssh/authorized_keys/root
En cuanto a los derechos de acceso, sshd acepta estas configuraciones:
/etc/ssh/authorized_keys
es propiedadroot:root
y tiene el modo 755. Los archivos clave son propiedadroot:root
y tienen el modo 644.Otros modos pueden funcionar pero no los he probado.
fuente
En general, no haría lo que estás sugiriendo. Rompe suposiciones comunes (como
~/.ssh/authorized_keys
trabajar para sus usuarios e introduce problemas que ya ha mencionado en su pregunta. Si ve problemas evidentes antes de la implementación, significa que su solución no es ideal.En cuanto a la seguridad, también creo que es una idea TERRIBLE que todos compartan una cuenta de servicio: en este momento solo eres tú y sabes que eres el que está haciendo los cambios. En 5 años, cuando tenga 5 administradores, querrá saber quién cambió qué y buscar en los registros de auditoría para ver quién usó qué clave cuando es un dolor real.
Es mejor que la gente inicie sesión como ellos mismos y use
sudo
o algo similar para escalar sus privilegios y hacer lo que sea necesario.Si aún desea centralizar las claves SSH, le sugiero que busque en un sistema de implementación como Puppet o radmind para administrar / distribuir los
authorized_keys
archivos a los~user/.ssh/
directorios apropiados (o piratear una solución interna que los coloque en su lugar).A medida que se expande a varios servidores, es posible que desee consultar el parche de clave pública LDAP para versiones anteriores de OpenSSH (o la
AuthorizedKeysCommand
directiva y un script apropiado en la versión más reciente de OpenSSH) para poder centralizar a sus usuarios y no tener que distribuir sus claves en toda su red, pero es probable que esté bastante lejos para usted.fuente
root
niwww-data
accesible a través de una clave ssh, ¿es correcto?~www-data/.ssh
directorio no es algo terrible (con los permisos apropiados no es un riesgo sustancial), pero si va a usarlo~www-data/.ssh
, probablemente sea mejor no tener su raíz web~www-data
(mover la raíz web o moverwww-data
el directorio de inicio). La diferenciación de los usuarios es el argumento más importante en mi humilde opinión: sé que si veo eljsmith
inicio de sesión, sé que es John Smith. Si veo elwww-data
inicio de sesión, necesito cavar más para averiguar quién era.AuthorizedKeysFile
por/etc/ssh/sshd_config
defecto%h/.ssh/authorized_keys
. Aquí%h
hay un marcador de posición para el directorio de inicio. Lo que le impide configurarlo/some/folder/ssh_keys_by_user/%h/
o incluso/root/ssh_keys/%u
. Incluso podría darle al usuario respectivo acceso de escritura a su archivo individual allí (y solo el suyo) para vincular el archivo a la ubicación estándar (conln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys
) y no romper los supuestos antes mencionados.