Sé que el título es simplemente el cebo de "su configuración es insegura", pero permítame explicarlo.
Estoy trabajando en una aplicación que tiene como objetivo permitir a los clientes sincronizar a través de SSH a nuestro servidor. Necesitamos una aplicación web desde la cual podamos crear / rotar claves SSH para nuestros usuarios. Esta aplicación devolverá una clave SSH privada al usuario para su uso futuro y almacenará el archivo authorized_keys del usuario de clave pública.
Al registrarse, tendremos que crear automáticamente el usuario y el directorio y las claves iniciales .ssh.
Estamos en CentOS 5 ahora, pero somos flexibles si hay razones suficientes para migrar. Este servidor ejecutará solo esta aplicación web en Apache (como apache: apache) y no se almacenarán más datos que los datos de usuario sincronizados en el sistema.
He estado pensando en la siguiente solución, pero he tenido problemas:
- Otorgue privilegios de sudo
useraddal usuario de apache para permitirles crear nuevos usuarios - Llame a
sudo useradddesde el script PHP en la aplicación web con una suma de 000 en el directorio de inicio que se acaba de crear. -
chgrpel nuevo directorio de inicio aapachepara que apache pueda crear un nuevo directorio .ssh y escribir las claves. * -
chmodel nuevo directorio de inicio a 770 para que solo el usuario y apache tengan acceso. * -
mkdir .sshen el nuevo directorio de inicio yssh-keygenpara crear la nueva clave, almacenando la clave pública enauthorized_keysy devolviendo la clave privada al cliente que llama.
Los problemas que encuentro son con los puntos * d: parece que, incluso con chmod 777, no puedo chgrp o chmod el directorio, ya que se creó con el propietario y el grupo. Perteneciente al nuevo usuario.
He observado cambiar el grupo predeterminado del usuario a algo que le permita a apache escribir en él, pero no puedo encontrar una manera de hacerlo sin tener que otorgarle a apache usermod sudo privilegios, lo que parece una muy mala idea.
¡Cualquier pensamiento sería apreciado!