Herramientas de usuario

Herramientas del sitio


guias:ssh-raspbian

Securizar SSH en Raspbian

Si vas a exponer tu conexión SSH a internet, antes ten en cuenta los siguientes puntos:

Utilizar un puerto no estándar

Hay numerosos bots que escanean todas las IPs (en IPv4) y tratan de conectarse a puertos comunes (22 para SSH, 80 para HTTP, 443 para HTTPS) e intentan conectarse con usuarios y contraseñas comunes, como la que tiene por defecto la Raspberry, y con usuarios y contraseñas filtrados en dumps.

Por ello, a la hora de hacer la redirección, sería conveniente hacerla desde un puerto no estándar (superior a 1024):

  1. Ve a https://random.org, y busca un número aleatorio entre 1024 y 65535.
  2. Redirige el puerto obtenido a tu servidor SSH.

Utilizar un usuario no estándar

Todas las Raspberries que funcionan con Raspbian tienen como usuario por defecto pi. Por tanto, es mejor crear otro usuario y trabajar desde éste:

  1. Consulta los grupos a los que pertenece pi (le dan permisos como por ejemplo ejecutar sudo o acceder a los logs del sistema), con el comando groups pi.
  2. Crea un nuevo usuario: sudo useradd -G GROUP_LIST -m NAME, donde GROUP_LIST son los nombres de los grupos separados por comas y NAME es el nombre de usuario deseado.
  3. Crea una contraseña para el nuevo usuario: sudo passwd NAME.
  4. Si tenías archivos en el usuario pi, muévelos al nuevo usuario: sudo mv /home/pi/* /home/NAME/. && chown NAME:NAME /home/NAME/*. La segunda parte de este comando (después del &&) cambia el propietario de los archivos, para que el nuevo usuario los pueda leer y modificar.

Conexión sin contraseña

Primero, configuraremos nuestro usuario para no tener que introducir la contraseña cada vez:

  1. Genera un par de claves SSH. Según desde donde te conectes, tendrás que consultar las instrucciones de dicho programa. En Linux y macOS, puedes ejecutar ssh-keygen y generarás un par de claves. La clave pública está en ~/.ssh/id_rsa.pub1) y la clave privada está en ~/.ssh/id_rsa. No compartas la clave privada con nadie, ni siquiera otro dispositivo. Cada cliente debe tener su par de claves.
  2. Accede a tu servidor por SSH utilizando tu contraseña.
  3. Comprueba si existe la carpeta .ssh en tu directorio de usuario (ls .ssh al conectarte). Si no, créala (mkdir .ssh). Es una carpeta oculta, así que ls no la mostrará al listar todo el directorio, si quieres verla, usa ls -a o la.
  4. Edita el fichero .ssh/authorized_keys (por ejemplo, con nano o vim) e inserta cada clave pública (una por línea).
  5. Desconéctate del servidor y vuelve a conectarte, esta vez no debería pedirte la contraseña.

Ahora, podemos configurar el servidor para que no permita conexiones con contraseña, solo permitirá conexiones con clave pública/privada:

  1. Entra al servidor y verifica que no te pide contraseña. Si tu clave pública está mal configurada, no podrás acceder al servidor cuando prohibamos el uso de contraseñas.
  2. Edita el archivo de configuración general del servidor SSH (sudo nano /etc/ssh/sshd_config). En este fichero, el caracter # da comienzo a un comentario.
    • Busca la línea que contiene PermitRootLogin y cámbiala a PermitRootLogin no.
    • Busca la línea que contiene PasswordAuthentication y cámbiala a PasswordAuthentication no.
  3. Recarga la configuración del servidor SSH: sudo systemctl reload sshd2).
  4. Antes de cerrar esta consola: comprueba que puedes conectarte (abre otra conexión en paralelo), para verificar que la configuración es correcta. Si no funciona, revierte los cambios en /etc/ssh/sshd_config y haz otro reload.
1)
Donde ~ se refiere a tu carpeta de usuario y .ssh es una carpeta oculta (por empezar por .).
2)
Normalmente utilizamos restart, pero reload nos permite mantener la conexión actual activa, es decir, que en vez de apagar y encender el servicio sshd, le indica que vuelva a leer la configuración.
guias/ssh-raspbian.txt · Última modificación: 2023/09/06 08:10 por Administrador

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki