Instalación y Configuración de SSH (OpenSSH) en GNU/Linux (modo consola)

En esta parte del taller vamos a instalar un servidor SSH para controlar un equipo de forma remota y segura. Usaremos OpenSSH, ya que es abierto.

Los archivos que intervienen en la configuración se encuentran todos en la ruta /etc/ssh y son los siguientes:
  • ssh_config -- Este es el fichero de configuración del cliente SSH
  • sshd_config -- Fichero de configuración del Servidor SSH
Como directivas mas importantes en la configuración del servidor podemos encontrar:
  • PermitRootLogin [yes/no] -- Indica que el usuario root se puede conectar al servidor
  • RSAAuthentification [yes/no] -- Autenticación RSA activada
  • PubkeyAuthentification -- Si esta permitida la autenticación por clave publica
  • RhostsAuthentification -- Autenticación por rhost , no es seguro
  • HostbasedAuthentification -- Autenticación por host y no por usuario
  • PasswordAuthentification -- Indica si esta habilitada la autenticación normal (por contraseña, en caso de fallo de las demas)
  • X11Forwarding -- Indica si se permite o no ejecutar aplicaciones remotas X windows
  • MaxAuthTries (x) -- Numero máximo de reintentos de conexión
  • Hostkey [ruta/del/archivo] -- Archivo que contiene la clave privada del servidor
  • AllowUsers [user1] [user2] -- Lista de usuarios permitidos que tienen permiso para acceder al servidor

Directivas mas importantes en el cliente:
  • Port -- Indica el puerto a través del cual se comunicara con el servidor (por defecto el 22)
  • Protocol -- Indica el protocolo a usar (versión SSH)
  • PasswordAuthentification -- Indica si el acceso se realizara o no por contraseña
  • PubkeyAuthentification -- Autenticación por clave publica
  • ForwardX11 -- Ejecución de aplicaciones X11 en el cliente


Instalación:
sudo apt-get install openssh-server

Después de instalarlo si miramos en la carpeta /etc/ssh encontraremos los siguientes ficheros:
|
--> ssh_host_rsa_key = Archivo que contiene la clave RSA privada del cliente
|
--> ssh_host_rsa_key.pub = Archivo que contiene la clave RSA publica del cliente
|
--> ssh_host_dsa_key = Clave DSA privada
|
--> ssh_host_dsa_key.pub = Clave DSA publica
|
--> known_hosts = Contiene las claves publicas de otras maquinas

Primera conexión
En algunos casos hay que usar la ruta completa del programa ssh : /usr/bin ssh usuario@ip_del_servidor
Ejemplo:
Citar
Nos pedira la contraseña y después mostrara una pantalla de bienvenida.


Generación de claves Publicas/Privadas
Usamos el comando de abajo:
Citar
ssh-keygen -t RSA
Para generar un par de claves de tipo RSA.

Código:
mad@server:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mad/.ssh/id_rsa):
Created directory '/home/mad/.ssh'. //Nota: La ruta se puede cambiar
Enter passphrase (empty for no passphrase): <clave de paso>
Enter same passphrase again: <clave de paso>
Your identification has been saved in /home/mad/.ssh/id_rsa.
Your public key has been saved in /home/mad/.ssh/id_rsa.pub.
The key fingerprint is:
50:86:f8:ce:88:b1:b3:7b:43:e4:db:f9:ca:b3:44:42 mad@server
The key's randomart image is:
+--[ RSA 2048]----+
| . .o |
| . .o |
| E.. |
| ... .. |
| *.+. S |
| + +oo |
| + o.. |
| . +o+ |
| .o .+=. |
+-----------------+
mad@server:~$
Ese seria el proceso de generación de un par de claves publicas/privadas. La ruta la podemos elegir nosotros, en mi caso la he dejado por defecto.


Arrancar el Servidor
Este paso es opcional si vuestro servidor esta ya arrancado.

sudo /etc/init.d/ssh [start/restart/status/reload]

Bloquear el arranque del servidor
Si por algún motivo de seguridad queremos que nuestro servidor SSH no pueda ser arrancado tenemos que crear el fichero sshd_not_to_be_run en la carpeta /etc/ssh/

touch /etc/ssh/sshd_not_to_be_run 

Activar X11
Para activar el uso de aplicaciones X11 tenemos que editar tanto el fichero de configuracion del servidor (sshd_config) como el del cliente (ssh_config) y descomentar (o añadir) las lineas:


X11Forwarding yes
X11DisplayOffset 10

Ahora si nos conectamos al servidor podremos usar aplicaciones gráficas, podemos probarlo poniendo xeyes en la consola, una vez conectados.

Nota: para cerrar una sesión remota podemos hacerlo con exit o logout


Enviar/Copiar archivos por SSH
El comando para enviar o copiar archivos de forma segura (usando ssh) es scp

Copiar ficheros:

scp usuario@ip_servidor:/fichero/que/quiero/descargar /ruta/mi_pc/cliente
Ejemplo, voy a descargar un fichero de texto llamado notas.txt del servidor y guardarlo en mi escritorio:
Código:
mad@mad-laptop:~$ sudo scp mad@192.168.1.100:/home/notas.txt /home/mad/Escritorio/notas_servidor.txt
[sudo] password for mad:
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
RSA key fingerprint is 86:bf:57:5a:6f:13:6e:c8:6f:52:97:55:5a:86:46:8e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.100' (RSA) to the list of known hosts.
mad@192.168.1.100's password:
notas.txt 100% 24 0.0KB/s 00:00
mad@mad-laptop:~$

Enviar ficheros
El comando es el mismo pero al revés:

scp /ruta/pc/cliente usuario@ip_servidor:/ruta/de/destino
Ejemplo, voy a enviar un archivo en formato .sh al servidor:
Código:
mad@mad-laptop:~$ sudo scp /home/mad/Escritorio/ubucleaner.sh mad@192.168.1.100:/home/mad/
mad@192.168.1.100's password:
ubucleaner.sh 100% 978 1.0KB/s 00:00
mad@mad-laptop:~$
Hay que asegurarse de que tenemos permisos de escritura en la carpeta de destino.


SFTP (FTP Seguro)
El comando es:
:
stfp usuario@ip_servidor
No profundizare mas en este comando, ya que no tiene mucho misterio.


Agente SSH (SSH Agent)
El agente de autenticación permite simplificar el proceso de conexión a un servidor remoto en caso de que se utilice autenticación por clave publica.
Para lanzar el agente hay que usar este comando: eval 'ssh-agent' en nuestro cliente SSH

mad@mad-laptop:~$ eval 'ssh-agent'
SSH_AUTH_SOCK=/tmp/ssh-sSFqBg3130/agent.3130; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3131; export SSH_AGENT_PID;
echo Agent pid 3131;
mad@mad-laptop:~$
Después, editar el archivo de configuración del servidor y buscar la linea #AuthorizedKeysFile , la des comentamos (quitándole la almohadilla) y ponemos la ruta donde se guardaran las claves publicas de los clientes que van a acceder a ese servidor.

La linea mencionada me a quedado así:

AuthorizedKeysFile /home/mad/.ssh/authorized_keys
Si el fichero authorized_keys no esta creado, tenemos que hacerlo nosotros y después darle permisos (755 al menos).

El siguiente paso es enviar nuestra clave publica al servidor:

mad@mad-laptop:~/.ssh$ scp /home/mad/.ssh/id_rsa_mad.pub mad@192.168.1.100:/home/mad
mad@192.168.1.100's password:
id_rsa_mad.pub 100% 1743 1.7KB/s 00:00
mad@mad-laptop:~/.ssh$

Ahora vamos a acceder al servidor y agregar la clave publica del cliente en el fichero con claves del servidor:

root@server:/home/mad# cat /home/mad/id_rsa_mad.pub >> /home/mad/.ssh/authorized_keys 
root@server:/home/mad/.ssh# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0IUnY5PTQvMqTiHtjcLsQtbFIl1uBbj3QMd5YMpMUvU9haudhuDOXW5bsOep7DLONS6oeu8NMUnwm8J6hKy02K89fRqFZ0c17PAPbos5jjl0xGlBcFd8caZINHP3YLfn9OCYT4SY1Cb9ym/jiR/YqWvV7n5GB+2u9SOZYe8ndfDoOVHryxax5O7TeB+hn4kxy6gPqP6ZRxC0GEsn4Dem7UzlDz881QhF7ag2xm4BugAnk8ZAdTE51jJfTUa0mV1YjaRXUe5/FRL7MT+QQyI6AQsx7e2ZOsH5MkM9SWrInCJiDvLEjjOg9BDGacun8Eqj0ag78+Ix3TG20f4N+7oZ6Q== mad@mad-laptop
El siguiente paso es editar el archivo de configuración de nuestro cliente, para que permita el uso del Agente.

mad@mad-laptop:~/.ssh$ sudo nano /etc/ssh/ssh_config
Buscar la linea ForwardAgent, des comentarla y ponerla en yes

ForwardAgent yes
La próxima vez que nos conectemos al servidor ya no nos pedirá contraseña.


Cambiar mensaje de bienvenida
Se trata del mensaje de bienvenida que aparece cuando nos conectamos al servidor.
Hay que editar el fichero de configuración del servidor, buscar la linea #Banner, des comentarla y luego editar el fichero configurado por defecto (/etc/issue.net) y reiniciar el servicio SSH.
Así la próxima vez que nos conectemos al servidor nos aparecerá el mensaje que hemos puesto.



Post Original: Instalación y Configuración de SSH (OpenSSH) en GNU/Linux (modo consola)
Autor: madpitbull_99

Comments