Tutoriales

Cómo restringir a los usuarios de SSH para ejecutar comandos limitados

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.

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:

LEER  Cómo jugar juegos de Play Station 2 en Linux. Instalación y demostración de PCSX2 en Debian 10 Buster.
$ ssh-keygen
Crear un par de claves SSH en Linux

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:

Copie la clave SSH a Linux remoto
Copie la clave SSH a Linux remoto

Ahora debería poder iniciar sesión en el servidor remoto sin que se le solicite una contraseña:

$ ssh [email protected]_host_ip
Inicio de sesión de Linux sin contraseña SSH
Inicio de sesión de Linux sin contraseña SSH

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 
Ver claves autorizadas de SSH
Ver claves autorizadas de SSH

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]
Restringir comandos al usuario de SSH
Restringir comandos al usuario de SSH

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
Conexión SSH cerrada
Conexión SSH cerrada

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]
Lista de comandos de usuario de SSH
Lista de comandos de usuario de SSH

Dependiendo de los comandos limitados que definió para el usuario de SSH, puede ingresar una opción de comando:

Ejecutar opción de comandos SSH
Ejecutar opción de comandos SSH

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.

LEER  Cómo reunir e instalar Nginx desde la fuente con el módulo PageSpeed ​​(ngx_pagespeed) - Tutoriales de Debian

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba