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
- 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:
Código:
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:~$
Arrancar el Servidor
Este paso es opcional si vuestro servidor esta ya arrancado.
Código:
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/
Código:
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:
Código:
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:
Código:
scp usuario@ip_servidor:/fichero/que/quiero/descargar /ruta/mi_pc/cliente
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:
Código:
scp /ruta/pc/cliente usuario@ip_servidor:/ruta/de/destino
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:~$
SFTP (FTP Seguro)
El comando es:
Código:
stfp usuario@ip_servidor
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
Código:
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:~$
La linea mencionada me a quedado así:
Código:
AuthorizedKeysFile /home/mad/.ssh/authorized_keys
El siguiente paso es enviar nuestra clave publica al servidor:
Código:
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:
Código:
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
Citar
mad@mad-laptop:~/.ssh$ sudo nano /etc/ssh/ssh_config
Buscar la linea ForwardAgent, des comentarla y ponerla en yesCódigo:
ForwardAgent yes
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.