Servidor bastión: cree usuarios con la capacidad únicamente de enviar ssh al servidor de destino

Servidor bastión: cree usuarios con la capacidad únicamente de enviar ssh al servidor de destino

Contamos con servidor bastión. Deberíamos tener algunos usuarios que necesiten SSH desde local a través de bastión a C, usando proxyCammand y clave privada.

Quiero crear usuarios y grupos que deberían tener acceso SÓLO a ssh desde el host de Bastion (sucede a través de proxyCommand). Tampoco necesitan leer archivos.

¿Cómo puedo hacer eso? ¿Hay alguna manera?

La otra alternativa, si lo anterior no es posible, es tener solo acceso de lectura para los archivos permitidos, excepto los archivos restringidos (predeterminados por el sistema operativo) que tienen acceso de lectura solo para sus grupos.

Respuesta1

Así es como permitir que un usuario determinado solo use algunos comandos específicos:

  1. Cambie el shell de usuario a bash restringido:

    chsh -s /bin/rbash <username>
    
  2. Cree un directorio bin en el directorio de inicio del usuario:

    sudo mkdir /home/<username>/bin
    sudo chmod 755 /home/<username>/bin
    
  3. Cambie la RUTA predeterminada del usuario a este directorio bin:

    echo "PATH=$HOME/bin" >> /home/<username>/.bashrc
    echo "export PATH >> /home/<username>/.bashrc
    
  4. Cree enlaces simbólicos para los comandos que el usuario requiere:

    sudo ln -s /bin/<command> /home/<username>/bin/
    
  5. Restrinja el cambio del usuario ~/.bashrchaciéndolo inmutable:

    chattr +i /home/<username>/.bashrc
    

De esta manera, solo crea enlaces simbólicos a los comandos que desea permitir.

Para hacer lo mismo para más de un usuario, puede crear un script bash que contenga estos comandos y que tenga el nombre del usuario como parámetro.

EDITAR: En CentOS, es posible que rbash no se implemente directamente y que sea necesario crear un enlace simbólico, y de manera similar en algunas otras versiones de GNU/Linux como Red Hat:

# cd /bin
# ln -s bash rbash

fuente

Editar2:

Si rbash es demasiado restrictivo, entonces el bash normal podría funcionar también, pero esto supone más trabajo: deberá impedir la ejecución de casi todos los comandos /binusando setfacl -m u:user1:r /bin/sufor suy otros comandos que no desee utilizar, para que se vuelvan leídos. sólo para el usuario y especialmente no son ejecutables.

Veresta respuesta para más detalles.

Respuesta2

Tráfico de red

Puedes usariptablespara limitar el tráfico de la red:

# Allow port 22 traffic to a specific IP/hostname for a specific user
iptables -A OUTPUT -p tcp --dport 22 -d allowed_host -m owner --uid-owner username -j ACCEPT 
# Block all other outgoing port 22 (SSH) traffic
iptables -A OUTPUT -p tcp --dport 22 -d 0.0.0.0/0 -j REJECT

Acceso al sistema de archivos

Para restringir el acceso al sistema de archivos puede utilizarPermisos del sistema de archivos

Tampoco necesitan leer archivos.

Para poder iniciar sesión necesitan poder leer algunos archivos:

  • El directorio de inicio de los usuarios.
  • El ejecutable y todas las bibliotecas del shell de los usuarios.

Para no permitir el acceso de lectura a un usuario normal, puede eliminar el indicador de lectura mundial de un archivo propiedad de root, o eliminar el indicador de lectura mundial y ejecutable de un directorio propiedad de root:

# chmod o-r secret-file
# ls -l secret-file
-rw-r-----  1 root  root  0 Mar 27 13:23 secret-file

# chmod o-rx secret-dir/
# ls -ld secret-dir/
drwxr-x---  2 root  root  64 Mar 27 13:24 secret-dir/

información relacionada