Mi proyecto necesita que desactive sftp para algunos usuarios, pero esos usuarios aún necesitan conectarse a través de ssh. ¿Alguien sabe cómo implementar esto?
He visto sugerencias para cambiar el archivo en /etc/ssh/sshd_config
, pero no estoy seguro de qué cambiar.
owner
para acceso saliente. Esto supone que un equipo rojo te hará una prueba de la pluma. Si todos los que acceden a su sistema siempre obedecen las reglas y nunca tienen malas intenciones, entonces mi enfoque sería duro y excesivamente complejo.Respuestas:
En general, hacer esto es una mala práctica de seguridad por razones que otros han enumerado. Sin embargo, el punto de su tarea, creo, es enseñarle que puede tener secciones de configuración condicionales basadas en varios criterios.
La forma de hacerlo es usando un
Match
bloque condicional *.Consulte
sshd_config(5)
en laMatch
sección para obtener más información y hacer coincidirGroup
.* Hay más de una forma de hacerlo.
fuente
Esto no tiene ningún sentido, es seguridad a través de la oscuridad inútil. Cualquier usuario que pueda usar SSH podrá transferir cualquier archivo que pueda leer a través de la sesión SSH. También podrá escribir, si tiene permisos para hacerlo.
Como ejemplo, puede descargar / etc / passwd a través de ssh utilizando el siguiente método (no se requiere sesión scp / sftp): ssh [email protected] "cat / etc / passwd"> passwdcopy
Si puede verlo en su pantalla a través de SSH, puede copiarlo fácilmente como un archivo.
La única forma en que esto tendría sentido es si tiene un shell restringido personalizado que aplica una política de seguridad.
Sin embargo, lo inverso de esto tiene sentido (deshabilitar ssh shell pero dejando scp / sftp habilitado) porque no puede ejecutar comandos arbitrarios a través de sftp / scp que puede hacerlo a través de un ssh shell.
PD: Supongo que el shell SSH que está otorgando es un shell estándar que permite la ejecución arbitraria. Si este no es el caso, vea esto: ¿Cómo deshabilitar el subsistema sftp para un usuario o grupo específico? y eche un vistazo a la opción de configuración del subsistema de sshd_config.
fuente
Prefiero usar un grupo para esto.
Es útil en combinación con usuarios que tienen shells restringidos. A veces le doy acceso ssh a un cliente para que pueda acceder a un volcado de sql de su base de datos configurando su shell en un script que descarga sus datos. Separarlos de scp también parece ser una idea inteligente. No tienen acceso a la ejecución
cat
para transferir un archivo a través de ssh.fuente
Directive 'Subsystem' is not allowed within a Match block
Es posible habilitar SFTP globalmente y deshabilitar SFTP solo para algunos usuarios.
Esto no funciona si desea que su usuario obtenga un indicador de shell normal. Tampoco tiene sentido, ya que podría eludir la mayoría de las cosas si tiene acceso de shell. Solo funcionará si solo desea dar acceso a un programa específico.
Personalmente necesito esto porque quiero dar acceso a algunos repositorios git a través de SSH, y me gusta deshabilitar los sistemas que no son necesarios. En ese caso, no se necesita SFTP.
Pareo
Para hacer coincidir un conjunto de usuarios, puede configurar SSH con la
Match
palabra clave. Delsshd_config(5)
manual:Un par de ejemplos:
Match User eva
coincide con el usuario "eva"Match User stephen,maria
coincide con los usuarios "stephen" y "maria"Match Group wheel,adams,simpsons
coincide con los grupos "rueda", "adams", "simpsons"Si desea más información, hay cargas en el
sshd_config(5)
manual.Comando forzado
Normalmente obtiene el shell de inicio de sesión del usuario cuando se conecta a través de SSH, pero SSH se puede configurar para forzar un determinado comando. El comando es forzado para cualquier conexión SSH, incluido SFTP, y por lo tanto puede tener la opción de forzar el comando que desee.
El comando forzar se puede configurar con la
ForceCommand
palabra clave. Delsshd_config(5)
manual:Entonces puede forzar el comando restringido que desea usar
ForceCommand <your command>
. Por ejemplo:Ejemplo
En mi caso donde quiero dar acceso a git, solo necesito que el usuario tenga acceso
git-shell
. Esta es la sección que deshabilita SFTP para mis usuarios de git, junto con algunas opciones de seguridad:fuente
Probado y trabajando en CentOS 6.6. Tenga en cuenta que Subsystem no está permitido con Match al menos en las versiones más recientes de CentOS. La página de manual de sshd_config enumera las palabras clave limitadas que están permitidas con la condición Match.
fuente
Puede mirar scponly para hacer lo contrario, permitir solo scp / sftp pero no acceso de shell.
Estoy de acuerdo con @Nathan arriba, esto no tiene mucho sentido. Si no está configurado, intente editar su archivo / etc / ssh / sshd_config y elimine / comente la siguiente línea:
Subsistema sftp / usr / libexec / openssh / sftp-server
fuente
no dar directorio de inicio para el usuario
Cambie el Subsistema sftp / usr / libexec / openssh / sftp-server en el archivo / etc / ssh / sshd_config a Subsystem sftp / dev / null / usr / libexec / openssh / sftp-server
Luego reinicie el ssh
A mí me funciona, Debian.
fuente
En
~/authorized_key
configurar la clave de usuario de la siguiente manera:fuente