Configuración de ssh
Configuración segura
Para mayor seguridad cambiamos el puerto, reducimos el tiempo de login y no permitimos conexiones de root
# vi /etc/ssh/sshd_config
Port xxxx LoginGraceTime 45 PermitRootLogin no
Solo permitimos acceder por ssh a los usuarios indicados en el fichero /etc/loginusers
# vi /etc/pam.d/sshd
#auth required pam_env.so # [1] auth required pam_listfile.so sense=allow onerr=fail item=user file=/etc/loginusers
Creamos el fichero /etc/loginusers con los usuarios autorizados:
# vi /etc/loginusers
guimi
Como usuario (’guimi’ en el ejemplo) generamos las claves dsa y asignamos una passphrase
$ ssh-keygen -t dsa
Para cambiar (o des/asignar) una passphrase
$ ssh-keygen -p -f .ssh/id_dsa
Se recomienda cambiar la passphrase regularmente.
Autorizamos la clave publica
$ cat .ssh/id_dsa.pub > .ssh/authorized_keys
Ajustamos los permisos:
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/*
$ chmod g-w ~/
La clave privada (id_dsa) se tiene que copiar en los clientes de ssh a través de algún medio seguro. Por ejemplo en un lapiz USB, pero NO a través de correo-e normal.
En este momento es posible conectarse desde otra maquina utilizando login y contraseña como siempre ($ ssh usuario@maquina -p xxxx) o usando el fichero de clave privada y conociendo la passphrase ($ ssh usuario@maquina -p xxxx -i id_dsa_copiada).
Para permitir solo el uso de certificados reconfiguramos sshd desautorizando las autentificaciones por contraseña
# vi /etc/ssh/sshd_config
PasswordAuthentication no
Reiniciamos el servicio
# /etc/init.d/ssh restart
Uso de scp
Recordemos que también se puede usar ssh para copiar ficheros de forma segura, tanto para copiar un fichero remoto al cliente:
$ scp -P xxxx -i id_dsa_copiada usuario@maquina:/ruta/fichero .
Como para copiar un fichero local al equipo remoto:
$ scp -P xxxx -i id_dsa_copiada /ruta/fichero usuario@maquina:/ruta/
Túneles SSH
Recordemos que podemos usar SSH para generar túneles seguros. Por ejemplo si queremos conectar a un servicio del equipo en el puerto 5432 (el puerto habitual de PostgreSQL) podemos hacer:
$ ssh usuario@servidor -p xxxx -i id_dsa_copiada -L 5432:localhost:5555
Esto indica que en la máquina cliente, desde la que ejecutamos ssh, el puerto 5555 se dirige al puerto 5432 de la máquina que el servidor de SSH conoce como “localhost”, es decir la máquina servidor.
Así también podríamos hacer un túnel ssh a una máquina vecinas del servidor (-L 5432:vecina:555).
Una vez conectado el túnel, en la máquina cliente (la que lanza el ssh) puedo utilizar un cliente de postgres y decirle que se conecte al puerto local 5555 y en realidad estaré conectando al servidor Postgres remoto de forma segura.
Cliente PuTTY para Windows
Para usar la clave en PuTTY (Windows):
- Copiamos la clave al equipo
- Usamos PuTTYGen para importar la clave y guardarla como .ppk
- Conversions->Import key
- Introducir la passphrase
- Pulsar “Save private key” y guardarla con extensión .ppk
- Al hacer la conexión, en el menú SSH->Auth seleccionamos nuestro fichero .ppk
- Si al conectar muestra el error “Key is of wrong type (PuTTY SSH2 private key)“, seleccionar en PuTTY Connections->SSH el protocolo “2″.


