SSH o Protocolo de shell seguro se ha ganado su nombre como un protocolo de red criptográfico seguro, respetable y confiable, que se utiliza para acceder a máquinas y servidores remotos a través de redes no seguras.
El propósito/características principales de SSH Por tanto, se puede resumir en una conexión segura y un acceso remoto. Cuando tiene una máquina remota o un servidor configurado de forma personalizada según sus preferencias, por ejemplo, compartir o descargar archivos, a veces es importante que los usuarios de SSH autenticados y autorizados que acceden a su sistema remoto cumplan con ciertas reglas y regulaciones.
Por ejemplo, tal vez no desee que el SSH usuarios para navegar a otras ubicaciones de directorios o carpetas en su sistema. Para lograr este objetivo, puede limitar la cantidad de comandos que dichos usuarios deben ejecutar una vez que hayan accedido con éxito a la máquina/servidor Linux remoto.
Este artículo se centrará en cómo restringir que los usuarios de SSH ejecuten ciertos comandos una vez que inicien sesión con éxito en una máquina/servidor Linux remoto.
Tabla de Contenidos
Instalar OpenSSH en Linux
Tenga en cuenta que SSH es un protocolo de conexión y acceso a la red. Para usarlo, necesitamos la ayuda de un paquete de aplicaciones que admita su uso. Instalar OpenSSH en máquinas Linux locales y remotas a través de la siguiente referencia de instalación para diferentes distribuciones del sistema operativo Linux.
$ sudo apt install openssh-server [On Debian, Ubuntu and Mint] $ sudo yum install openssh [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a net-misc/openssh [On Gentoo Linux] $ sudo pacman -S openssh [On Arch Linux] $ sudo zypper install openssh [On OpenSUSE]
Restringir comandos para usuarios de SSH en Linux
Con OpenSSH instalado en máquinas Linux remotas y locales, el siguiente paso es configurar la autenticación basada en clave SSH. En la máquina local, genere un par de claves SSH con el siguiente comando:
$ ssh-keygen
De la captura de pantalla anterior, podemos ver que una clave pública (/home/dnyce/.ssh/id_rsa.pub) ha sido generado. Necesitamos copiar esta clave pública en el servidor/máquina remota a la que accederemos. Usaremos el ssh-copia-id utilidad para esta tarea ya que viene preempaquetado bajo OpenSSH.
Su sintaxis es:
$ ssh-copy-id [email protected]_host_ip
Su implementación será similar a la siguiente:
Ahora debería poder iniciar sesión en el servidor remoto sin que se le solicite una contraseña:
$ ssh [email protected]_host_ip
En el servidor/máquina Linux remoto, llaves_autorizadas los archivos deben crearse dentro de la ruta del directorio ~/.ssh. Si abrimos este archivo, deberíamos ver la clave pública copiada que permite que esta máquina/servidor remoto se comunique con nuestra máquina local.
$ cd ~/.ssh $ sudo nano authorized_keys
Para restringir a un usuario a usar solo el ls comando en este servidor/máquina remota, podemos modificar este archivo de la siguiente manera.
from = "192.168.100.3",command="/usr/bin/ls" ssh-rsa [email protected]
La entrada desde=”192.168.100.3″ apunta a la dirección IP de la máquina local y comando=”/usr/bin/ls” especifica el único comando a ejecutar.
Si salimos del servidor y tratamos de iniciar sesión de nuevo a través de SSH, el ls comando se ejecutará y se cerrará la conexión con el servidor.
$ ssh [email protected]_host_ip
Restrinja a los usuarios de SSH a comandos específicos usando Bash Script
Con el método anterior, estamos limitados a un solo uso de comando (comando=”/usr/bin/ls”). Para especificar múltiples comandos limitados para ser ejecutados por un usuario de SSH, podríamos usar un script bash creado en /usr/local/bin y añade su camino a la llaves_autorizadas expediente.
$ sudo nano /usr/local/bin/limited_commands.sh
Agregue las siguientes líneas de código.
#!/bin/bash echo "1. ls" echo "2. ping google.com -c 5" echo "3. top" read -p 'Choice: ' choice # Read the choice from user case $choice in 1) ls ;; 2) ping google.com -c 5 ;; 3) top ;; *) exit ;; esac
Haga que este script bash sea ejecutable.
$ sudo chmod +x /usr/local/bin/limited_commands.sh
A continuación, agregue esta ruta de archivo a la llaves_autorizadas expediente.
from = "192.168.100.3",command="/usr/local/bin/limited_commands.sh" ssh-rsa [email protected]
Intentemos volver a acceder al servidor con SSH.
$ ssh [email protected]
Dependiendo de los comandos limitados que definió para el usuario de SSH, puede ingresar una opción de comando:
Hemos cubierto con éxito cómo restringir a los usuarios de SSH para que ejecuten comandos limitados después de iniciar sesión en una distribución de sistema operativo Linux.