Tengo una gran variedad de usuarios que solo necesitan subir archivos a sus homedirs establecidos. Creo que sftp sería suficiente, pero no quiero que inicien sesión a través de shell. Entonces, ¿es posible? Mi plataforma es centos 7, los homedires del usuario están almacenados, digamos / personal / $ user
Creé un usuario con esta configuración
useradd -m -d /personal/user1 -s /sbin/nologin
asignado al usuario una contraseña, luego, cuando uso sftp para iniciar sesión en la máquina, dice que no se puede conectar.
Respuestas:
Edite su
/etc/ssh/sshd_config
para contener:Reiniciar
sshd
. Si tiene varios usuarios, póngalos todos en la línea de usuario del partido separados por comas de esta manera:La clave para configurar
sftp
para no permitir el acceso de shell es limitar a los usuarios a través de laForceCommand
opción.fuente
Match User [SFTP user]
ForceCommand internal-sftp
solo, sin hacer chrooting.chroot
los usuarios para que no puedan navegar hacia arriba y fuera de su "cárcel" definidaMe gusta la siguiente configuración para administrar el acceso SSH, que uso en el trabajo para administrar un grupo de usuarios en una pequeña flota de servidores. La seguridad y la facilidad de administración ocupan un lugar destacado en la lista de mis prioridades.
Sus características clave son administrar fácilmente los derechos SSH a través de la membresía de grupo Unix, tener permisos bien definidos y ser seguros de forma predeterminada.
Configuración
Instalar software (opcional pero útil):
Agregar grupos:
En
/etc/ssh/sshd_config
, asegúrese de que la siguiente configuración seaNo
:Y al final de
/etc/ssh/sshd_config
, agregue estas dos estrofas:(no olvide reiniciar SSH después de editar el archivo)
Explicación
Entonces, ¿qué hace todo esto?
allowssh
grupo.sftponly
grupo no pueden obtener un shell a través de SSH, solo SFTP.La administración de quién tiene acceso se realiza simplemente administrando la membresía del grupo (estos cambios entran en vigencia inmediatamente, no se requiere reiniciar SSH):
Tenga en cuenta que los usuarios de sftp deben ser miembros de ambos
sftponly
(para asegurarse de que no obtendrán un shell) y deallowssh
(para permitir el inicio de sesión en primer lugar).Más información
Tenga en cuenta que esta configuración no permite inicios de sesión de contraseña ; Todas las cuentas deben usar la autenticación de clave pública. Esta es probablemente la mayor ganancia de seguridad que puede obtener con SSH, por lo que creo que vale la pena el esfuerzo, incluso si tiene que comenzar ahora.
Si realmente no quieres esto, agrega también
PasswordAuthentication yes
a laMatch Group allowssh
estrofa. Esto permitirá la autenticación de clave pública y contraseña para losallowssh
usuarios.Esta configuración limita a cualquier
sftponly
usuario a su directorio de inicio. Si no quiere eso, elimine laChrootDirectory %h
directiva.Si no desea que el cambiar la raíz de trabajo, es importante que el directorio personal del usuario (y cualquier directorio por encima de ella) es propiedad de
root:root
y no puede ser escrito por grupo / otros. Está bien que los subdirectorios del directorio de inicio sean propiedad del usuario y / o se puedan escribir.Sí, el directorio de inicio del usuario debe ser propiedad de la raíz y no debe poder escribirse para el usuario. Lamentablemente, hay buenas razones para esta limitación. Dependiendo de su situación,
ChrootDirectory /home
podría ser una buena alternativa.Configurar el shell de los
sftponly
usuarios/sbin/nologin
no es necesario ni perjudicial para esta solución, ya que SSHForceCommand internal-sftp
anula el shell del usuario.Sin
/sbin/nologin
embargo, el uso puede ser útil para evitar que inicien sesión de otras maneras (consola física, samba, etc.).Esta configuración no permite
root
inicios de sesión directos a través de SSH; Esto forma una capa adicional de seguridad. Si realmente no necesita conexiones de root directos, cambiar laPermitRootLogin
directiva. Considere configurarlo enforced-commands-only
,prohibit-password
y (como último recurso)yes
.Para obtener puntos de bonificación, eche un vistazo a restringir quién puede
su
rootear; añadir un grupo sistema llamadowheel
, y añadir / activarauth required pam_wheel.so
en/etc/pam.d/su
.fuente
chown root:root
ychmod og-w
simplemente cambie su shell predeterminado a / sbin / nologin. Asumiendo la mayoría de las variedades de Linux:
fuente
Subsystem sftp internal-sftp
) (o tal vezForceCommand internal-sftp
). Si hay algo comúnSubsystem sftp /path/to/sftp-server
,nologin
evitará incluso SFTP.puedes usar tftp. cualquier cosa sobre ssh requerirá alguna autenticación (clave | paso).
Si bien tftp se puede asegurar, puede valer la pena revisar la decisión de proporcionar acceso a cualquier cosa sin autenticación.
http://manpages.ubuntu.com/manpages/bionic/man1/tftp.1.html
fuente