GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo restringir a un usuario de SSH para que solo permita el túnel SSH?

En el lado del servidor, puede restringir esto configurando su shell de usuario en /bin/true . Esto les permitirá autenticarse, pero en realidad no ejecutar nada, ya que no obtienen un shell para ejecutarlo. Esto significa que estarán limitados a cualquier subconjunto de cosas que SSH pueda ofrecerles. Si ofrece reenvío de puertos, aún podrán hacerlo.

En el lado del cliente, probablemente querrá conectarse con el -N . Esto evita que el cliente PIDA un comando remoto como un shell, solo se detiene después de que se completa la parte de autenticación. Gracias a los comentaristas por señalar esto.


Lo siguiente tiene la ventaja de que los reenvíos de sockets de agentes X11 y SSH tampoco están permitidos, lo que aún podría estar permitido en la forma de Calebs. Otra ventaja es que, si el usuario puede cambiar su shell predeterminado de cualquier otra forma, seguirá restringiendo su acceso SSH solo a reenvíos TCP.

Pon lo siguiente en tu /etc/ssh/sshd_config :

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

para permitir al usuario that-restricted-guy para reenviar cualquier conexión TCP a través de su máquina habilitada para SSH (conexión a esta máquina, también a localhost e incluso conexión desde esta máquina a otras máquinas).

Si lo quieres aún más restrictivo (lo cual es una buena idea), también puedes hacer lo siguiente:

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

Esto permitirá al usuario even-more-restricted-guy para reenviar únicamente las conexiones al puerto TCP 127.0.0.1 12345 (como se ve a través de su máquina habilitada para SSH).

Cuando el usuario se conecta normalmente, ahora se desconectará instantáneamente porque el /bin/false se activará el comando que no hace más que salir instantáneamente con un código de 1. Si desea evitar esto y mantener abierta su conexión de reenvío, agregue el -N bandera al ssh dominio. Esto no intentará ejecutar ningún comando, pero aún permite configurar los reenvíos de TCP.

Un ejemplo de un comando de reenvío que debería funcionar en la última configuración:

ssh -L 12345:127.0.0.1:12345 -N [email protected]

Puede controlar lo que las personas pueden hacer en ssh haciendo coincidir grupos, suponiendo que su versión de ssh sea lo suficientemente nueva como para admitirlo (openssh 5.x+).

Básicamente, los tratamos como si fueran usuarios de sftp, pero permitimos el reenvío de tcp y opcionalmente especificar los destinos a los que pueden reenviar. Si les proporciona un directorio de inicio pero no crea ningún directorio debajo de él, no podrán transferir ningún archivo porque no tendrán permiso para hacerlo.

Match Group                     nicepeople
    PubkeyAuthentication        yes
    PasswordAuthentication      yes
    PermitEmptyPasswords        no
    GatewayPorts                no
    ChrootDirectory             /opt/dummy_location/%u
    ForceCommand                internal-sftp
    AllowTcpForwarding          yes
        PermitOpen              192.168.0.8:22
        PermitOpen              192.168.0.5:8080
    # Or leave out the PermitOpen to allow forwarding to anywhere.
    HostbasedAuthentication     no
    RhostsRSAAuthentication     no
    AllowAgentForwarding        no
    Banner                      none

Puede repetir estos grupos de coincidencia Bloques para cada grupo al que desee proporcionar un comportamiento o restricciones diferentes.

Puede controlar aún más a dónde puede ir esta persona en la red usando iptables

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

Esto supone que el GID del grupo "buena gente" es 500.

Algunas de las opciones de ssh anteriores están disponibles en las versiones anteriores de openssh, pero no en la sección Match Group. Match Group está muy limitado en OpenSSH 4.x y versiones anteriores.


Linux
  1. Cómo restringir el acceso SSH para usuarios con LShell (Shell limitado)

  2. Cómo deshabilitar el inicio de sesión del usuario raíz a través de SSH

  3. Ssh:¿restringir un usuario de Ssh/scp/sftp a un directorio?

  4. Restrinja el inicio de sesión SSH a una IP o host específico

  5. Cómo configurar claves SSH en Debian

Cómo permitir o denegar el acceso SSH a un usuario o grupo en particular en Linux

Cómo deshabilitar el inicio de sesión SSH para un usuario específico en Linux

Cómo restringir el acceso SSH a ciertos usuarios en Linux

Cómo permitir el acceso remoto al servidor de base de datos MySQL

Acceso solo a tunelización ssh

¿Cómo permitir ssh al usuario root solo desde la red local?