Conexiones remotas (Parte 1: SSH)

  El servidor SSH (Secure Shell) es un servicio que se suele utilizar en Linux para servir el protocolo SSH, que es un protocolo que cifra toda la información que se transmite, lo que incluye las contraseñas de autentificación de usuario, basado en el paquete Openssh y que se utiliza en conexiones remotas entre equipos.
  Normalmente, un sistema operativo Linux tiene predeterminadamente instalado el software cliente de SSH [aunque se puede instalar con el comando apt-get install openssh-client (con sudo delante si no se es superusuario), o el adecuado según la distribución, si no es así], pero no es así con el servidor SSH, que se instalará con el comando apt-get install openssh-server (con sudo delante si no se es administrador) en distribuciones tipo debian (o el comando apropiado para la distribución  de Linux que se emplee).
  El servidor SSH debe estar funcionando en el sistema para poder recibir peticiones remotas de conexión (puede comprobarse con el comando /etc/init.d/ssh status, por ejemplo). Si servidor y cliente, aunque en máquinas diferentes, están en la misma red, no es necesario configurar nada más para poder realizar la conexión remota desde el segundo al primero, pero si no es así, se debe configurar el puerto 22 (o el que esté en contacto por SSH con el servidor) en el cliente para que esté abierto y redirigido a la dirección IP de la máquina a administrar.
  Para hacer la conexión remota desde el cliente al servidor SSH, se debe abrir un terminal y utilizar el comando ssh (usuario de la máquina remota)@(dirección IP de la máquina remota). Hecho esto, todos los comandos realizados dentro de dicha conexión se estarán ejecutando realmente en la máquina remota del servidor SSH, por lo que hay que tener cuidado cuando se ejecutan comandos que afectan a la conexión de la máquina para evitar cortar la conexión con el servidor SSH. Para desconectarse sólo hay que introducir exit.
  El funcionamiento básico del protocolo SSH puede resumirse en la siguiente imagen.
  El comando ssh también puede ser empleado por otros comandos y aplicaciones para abrir conexiones con máquinas remotas. Por otra parte, también permite abrir aplicaciones gráficas de equipos remotos usando el entorno gráfico de la máquina cliente desde un terminal.

CONFIGURACIÓN DEL SERVIDOR SSH

    La mayoría de las configuraciones de un servidor SSH en Linux se hacen en el archivo "sshd_config", que se encuentra en la ruta "/etc/ssh/" (asimismo, la configuración del cliente SSH se realiza en el archivo "ssh_config" en la ruta "/etc/ssh/" de la máquina cliente). Las configuraciones del servidor en dicho archivo más relevantes son:
  •  Restricción de interfaces de conexión: Se define en qué dirección IP escuchará el servidor. Hay que cambiar la directiva "ListenAddress" modificando la dirección IP predeterminada por la deseada.
  • Restricción de usuarios: Se utilizan las directivas "AllowUsers" para permitir la conexión de usuarios, y "DenyUsers" para impedir la conexión de usuarios. La sintaxis es "AllowUsers (nombre de usuario de la máquina remota)@(dirección IP del usuario de la máquina remota)" (cada nuevo usuario se pone igual que el anterior dejando un espacio con el último); en lugar de una dirección IP concreta, puede ponerse un rango de direcciones IP poniendo un "*" en lugar del último número de la dirección (ejemplo: 192.168.17.*). Además, se puede poner sólo el nombre del usuario a secas para permitirle conectarse desde cualquier parte. Por otra parte, es recomendable cambiar a "no" el valor de la directiva "PermitRootLogin" por motivos de seguridad.
  • Cambiar el puerto predeterminado: Para cambiar el puerto 22 por otro sólo hay que cambiar el valor de la directiva "Port". Mas luego hay que editar también el archivo "services" (en el directorio "etc") y cambiar el número del puerto allí también en las líneas "ssh". Para acceder al servidor por el nuevo puerto, hay que utilizar el parámetro "-p (puerto nuevo)" al hacer la conexión; por ejemplo, si el nuevo puerto fuera "5039", el comando a utilizar sería ssh -p 5039 uadmin@192.168.17.100.
  • Cambiar el tiempo establecido para introducir el nombre de usuario y la contraseña: Se cambia el valor, expresado en segundos, de la directiva "LoginGraceTime", que suele ser de 120, por el valor deseado (normalmente 20 ó 30).
  • Cambiar el número de intentos fallidos de autentificación: Para esto se cambia el valor de la directiva "MaxAuthTries" (o se añade dicha directiva con su valor si no existe ya). El valor indica el número de veces en que se puede intentar escribir la contraseña correcta.
  • Cambiar el número de conexiones concurrentes no autentificadas: El modo de hacer esto es cambiar el valor de la directiva "MaxStartUps" (o añadir esta directiva junto con su valor). El valor de dicha directiva muestra el número de conexiones que puede tener el servidor SSH a la vez.
  • Permitir administración gráfica: Siempre que la máquina del servidor tenga instalado un entorno gráfico de escritorio, se deben modificar los valores de las directivas "ForwardX11" o "X11Forwarding" (según la versión) a "yes". Para que esto funcione también hay que cambiar al valor "yes" las directivas "ForwardAgent", "ForwardX11" y "ForwardX11Trusted" del archivo "ssh_config" (ruta "/etc/ssh/") de la máquina cliente. Para conectarse de este modo se empleará el parámetro "-X" entre el comando ssh y (nombre de usuario de máquina remota)@(dirección IP de máquina remota).
  Tras editar y cambiar el archivo "sshd_config" debe reiniciarse el servicio SSH con alguno de los comandos que hay para ello, como service ssh restart, por ejemplo.
  Además del archivo "sshd_config", el servidor SSH puede configurarse también mediante los archivos del sistema "hosts.deny" y "hosts.allow", que están en el directorio "etc". Con el primero se impide el acceso a los anfitriones ("hosts", en inglés), mientras que con el segundo se especifica qué anfitriones tienen acceso.
  Editando estos archivos con un editor de texto y añadiendo, modificando o eliminado líneas en su interior se especifican las direcciones IP (o los rangos de estas) de los anfitriones que se pretenden regular. En el caso de un servidor SSH, la línea debe tener la sintaxis "sshd: (dirección IP/rango de direcciones IP)". Además, si se pretende negar o permitir el acceso a toda una red, se utilizará la línea "ALL: ALL".
  El protocolo SSH es un método fundamentalmente de Linux, pero es posible conectarse también remotamente con él desde una máquina cliente con Windows. El método más tradicional de hacer esto es usar la aplicación "PuTTY", pero ese tema se tratará más adelante con profundidad.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.