Herramientas de usuario

Herramientas del sitio


informatica:certificaciones:lpic:lpic-2:212_system_security:212.3_secure_shell_ssh

¡Esta es una revisión vieja del documento!


212.3 Secure shell (SSH)

Pertenece a Topic 212: System Security

  • Weight: 4
  • Description: Candidates should be able to configure and secure an SSH daemon. This objective includes managing keys and configuring SSH for users. Candidates should also be able to forward an application protocol over SSH and manage the SSH login.
  • Key Knowledge Areas:
    • OpenSSH configuration files, tools and utilities
    • Login restrictions for the superuser and the normal users
    • Managing and using server and client keys to login with and without password
    • Usage of multiple connections from multiple hosts to guard against loss of connection to remote host following configuration changes
  • Terms and Utilities:
    • ssh
    • sshd
    • /etc/ssh/sshd_config
    • /etc/ssh/
    • Private and public key files
    • PermitRootLogin, PubKeyAuthentication, AllowUsers, PasswordAuthentication, Protocol.

OpenSSH

El protocolo SSH fue diseñado para proporcionar servicios de autentificación y de confidencialidad al intercambio de datos entre un cliente y un servidor.

La implementación open source del protocolo SSH es OpenSSH.

El daemon del servicio es /etc/init.d/sshd

El fichero de configuración /etc/ssh/sshd_config

Configuración

Directivas de configuración de /etc/ssh/sshd_config:

Directiva Descripción
Port Número de puerto de escucha del servicio (default 22).
Protocol Versión del protocolo utilizada (1, más inseguro, o 2).
ListenAddress IPs por las que escucha el servicio (default *)
PermitRootLogin Autoriza las conexiones del usuario root (default yes, aunque en debian es al revés)
PubKeyAuthentication Autoriza las conexiones con llave pública (default yes).
PasswodAuthentication Autoriza las conexiones con contraseña (default yes).
AllowUsers Indica usuario/usuarios que tienen permitido el acceso.
AllowGroups Indica grupo/grupos que tienen permitido el acceso.
AllowTcpForwarding Autoriza la creación de túneles SSH (default yes).
X11Forwarding Autoriza el reenvío de sesiones X a través de SSH (default yes).

Conexiones desde el cliente SSH

Tenemos dos métodos para conectarnos a un servidor SSH:

  • Autenticación por contraseña
  • Autenticación por claves

Autenticación con contraseña

Para evitar cualquier tipo de riesgo de falsificación del servidor, el cliente realiza una comprobación de la identidad del servidor en la primera conexión creando y validando una huella digital del servidor.

La huella se guarda en un archivo llamado known_hosts, alojado en el directorio oculto .ssh en el directorio personal del usuario.

En las posteriores conexiones se contrastará esa huella digital para verificar que se trata del mismo servidor y que nadie ha hecho un cambio en el servidor de destino.

linux:~$ cat .ssh/known_hosts
|1|LPx02U8nHnkSb0czyqVrdXPcW04=|jS0/QdS0HydzPZj8QXxHXC4j6EM= ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAv+kXth0/RSAroNfqeV+IkEMetdWRWYBvbNOqUDDSL/
fLylBip9le40xfTe1j
FXuYqAWR+mQMo8Pg37/PUWeetlBCvG4F486UbqUn2Ol5B/1GZqzG7nvbOLcp7CDr6vmqgr
k2QZvUZcohWc4L9S6z
zvk3EmQ1AMa+BKo4m+FCG9E1mK4bFtvchVqL1amzGg1jd2QuTzMGNibTdrEi9gSr2TrJ5S
e9AhNQkIzZPvrqvVAD
itiggcYNetxaNkPKfW8DdClq+qOVVAQuWnZiO63Mp/0+b+JEutFgNsX8mkt9nx34Yws7s3
BnIuT7oU+shxnuy/vj
5But4uUry5tFaTxXCw==

Autenticación por claves

Un método más fiable para autenticar conexiones SSH consiste en utilizar claves de autenticación almacenadas localmente en el disco del usuario. La autenticación por claves no exime de la obligación de utilizar una contraseña, pero garantiza al usuario que la máquina remota es con la que se quiere trabajar, y no una falsificación.

Se basa en el cifrado asimétrico (claves públicas y privadas).

Creación de claves en el cliente:

ssh-keygen -t <algoritmo>

algoritmo representa el algoritmo usado para la generación de las claves del cliente. RSA y DSA son dos algoritmos de cifrado asimétricos que se usan a menudo para autenticar. Si no se especifica un algoritmo, se usa el valor por defecto: RSA.

Ejemplo:

ssh-keygen -t RSA

Se crearán los ficheros:

  • .ssh/id_rsa: clave privada
  • .ssh/id_rsa.pub: clave pública

El cliente deberá copiar su clave pública al servidor en el fichero .ssh/authorized_keys. En cada conexión, el servidor mira en el directorio local del usuario que se intenta conectar para ver si existe el directorio .ssh/authorized_keys y si contiene la clave pública del cliente. Si este es el caso, la autenticación del servidor la puede realizar el cliente.

La clave privada no puede salir de nuestra máquina. Solo se comparte la clave pública.

En cada conexión, el servidor comprueba en dicho fichero del directorio del usuario que contiene la clave pública del cliente.

Conexiones SSH

Apertura de sesión desde el cliente:

ssh usuario@servidor
  • usuario: La cuenta de usuario existente en el servidor con la que se realiza la conexión.
  • servidor: La dirección IP (o dominio) del servidor con el que se realiza la conexión.

Apertura de sesiones con X11 desde el cliente:

ssh -X usuario@servidor

Copias remotas de archivos con ssh:

scp <archivo_local> <usuario>@<servidor>:</path/archivo_remoto>
  • archivo_local: Ruta relativa o absoluta del archivo local que debe copiarse.
  • archivo_remoto: Ruta absoluta del archivo remoto que debe copiarse.
  • usuario: Cuenta de usuario existente en el servidor utilizada para realizar la copia.
  • servidor: Dirección IP (o dominio) del servidor que alberga el servicio SSH.

Creación de Tuneles SSH

Una de las opciones más interesantes de OpenSSH es crear un túnel seguro a través del cual podremos redirigir el tráfico de otros protocolos.

Podemos crear un túnel entre un cliente y un servidor con el siguiente comando:

ssh -L <puerto>:<destino_tráfico>:<puerto_destino> <usuario>@<servidor>
  • -L: reenvía un puerto local a un servidor SSH (establecimiento del túnel)
  • puerto: el puerto local que se reenviará.
  • destino_tráfico: dirección IP o nombre de la máquina destino del tráfico.
  • puerto_destino: puerto al que se reenviará el tráfico en la máquina destino
  • usuario: cuenta de usuario en el servidor usada para desplegar el túnel.
  • servidor: dirección IP o nombre del servidor que será el extremo del túnel.

Ejemplo:

ssh -L 80:192.168.0.99:80 usuario@myserver.com

En la imagen nosotros estamos en una workstation y a través de Internet tenemos acceso al servidor SSH de myserver.com y queremos acceder al servidor web que hay en la red local 192.168.0.99. Esa máquina no podemos verla directamente desde Internet. Creando un túnel desde el puerto 80 del equipo local al puerto 80 del equipo 192.168.0.99 mediante el servidor SSH que hay en myserver.com (que es público) lo podremos lograr. Mientras dure la conexión SSH, podremos consultar a través de nuestro puerto 80 lo que sirve el servidor web en 192.168.0.99 por su puerto 80.

informatica/certificaciones/lpic/lpic-2/212_system_security/212.3_secure_shell_ssh.1619165342.txt.gz · Última modificación: por tempwin