Como podéis ver no me voy a romper mucho la cabeza con el primer post/how-to. No voy a explicar las bases teóricas de la criptografía de clave pública ni del ssh en sí mismo porque ya hay alguien que ya lo ha hecho y, seguro, que mucho mejor de lo que yo lo podría hacer. Lo bueno de tener tanto en el ordenador de tu trabajo como en el de tu casa un servidor ssh bien configurado es que puedes acceder de forma privada/segura tanto a los ficheros como a las aplicaciones del mismo remotamente. Por supuesto la administración de servidores sin el ssh sería completamente imposible. La lista de servidores ssh es extensa pero yo me voy a centrar en OpenSSH.

Para instalarlo solo hay que utilizar algún gestor de paquetes como yum o apt o incluso descargarse una versión portable desde aquí. Una vez instalado, hay que configurarlo a través del archivo /etc/ssh/sshd_config. Debería tener algo como lo que se muestra a continuación:

# Puerto y protocolo
Port 22
Protocol 2
# Claves del servidor
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes

# Opciones de autenticación (conviene desactivar el acceso de root)
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes

#Permitir los passwors vacíos (por favor esto siempre a NO)
PermitEmptyPasswords no

# Estas opciones permiten la tunelación de las X por el ssh
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Subsystem sftp /usr/lib/openssh/sftp-server

#indica que el sistema utilizará PAM
UsePAM yes

Hay más opciones pero estas son las más representativas. Para reiniciar el servidor tan solo hay que teclear la orden como root:

/etc/init.d/ssh restart

Para comprobar que funciona se puede hacer un ssh a nuestra propia máquina:

ssh user@localhost

Para ejecutar un comando sin tener una bash abierta se puede poner:

ssh user@host ‘comando’

Para copiar un fichero tunelado por ssh se utiliza el comando:

scp file.txt user@host:/folder/

¿Algunas recomendaciones extras?

  • Impedir las conexiones ssh sin contraseña.
  • Impedir las conexiones del usuario root. Si hay que utilizar algún comando como root siempre se puede utilizado el comando “sudo” o “su root” una vez logueados.
  • Otro truquito que os puede venir muy bien es el de cambiar el puerto de escucha del 22 (el puerto por defecto para el ssh) al 443 (puerto por defecto para HTTPS), siempre y cuando no estéis utilizando este puerto para el servidor web. Hay reglas de firewall en determinadas organizaciones o empresas (hoteles, aeropuertos, incluso bibliotecas) que impiden las conexiones salientes a otros puertos que no sean el 80 (puerto por defecto para HTTP) o el 443. Otro día con algo más de tiempo os explicaré cómo crear unas reglas en iptables para la redirección de puertos.

En futuros posts pondré más información sobre cómo sacar el máximo partido a un servidor ssh pero, por supuesto, lo primero es la correcta configuración del mismo.

Un saludo