SSH con certificados

Apache HTTPHace un tiempo, escribí como acceder de un servidor a otro mediante certificados por SSH, para automatizar tareas que requieran de una conexión SSH entre servidores, evitando así tener que introducir el password. Aquí el post original.

Sin embargo, en ocasiones, el SSH no está configurado para aceptar conexiones con password, y no podemos por lo tanto, usar el comando «ssh-copy-id». Para estas ocasiones, podemos seguir el procedimiento descrito a continuación:

Continuar leyendo «SSH con certificados»

Sincronización de carpetas con rsync

Rsync es una herramienta muy útil para sincronizar dos directorios, ya sean de diferentes máquinas o de la misma máquina. Su sintaxis es la siguiente:

Pull: rsync [OPTION…] [USER@]HOST:SRC… [DEST]
Push: rsync [OPTION…] SRC… [USER@]HOST:DEST

Así pues, si se quiere sincronizar dos directorios, con un servidor remoto, y además de forma automatizada, mediante SSH, podríamos primero copiar la clave pública de una máquina a la otra, para conectar por certificado y evitar así tener que introducir un password para la conexión SSH. Aquí (con autentificación con password) o aquí (sin autentificación con password) el cómo hacerlo.

Continuar leyendo «Sincronización de carpetas con rsync»

Cómo hacer SSH más seguro

Apache HTTPHay muchos posts en Internet hablando sobre cómo configurar SSH de forma correcta, para tener un entorno seguro; éste es otro de ellos.

La configuración de ssh en la máquina a la que queremos conectar, en entornos tipo Red Hat, se encuenta en /etc/ssh/sshd_conf. En este fichero de configuración, podremos realizar varias modificaciones para intentar tener un entorno SSH más seguro, como por ejemplo las que se describen a continuación:

Cambiar el puerto de acceso por defecto

Por defecto SSH usa el puerto 22, cambiando el puerto por otro conseguimos añadir una traba extra para alguien que quiere acceder a nuestro server a través de SSH, puesto que el puerto por defecto no responderá. Se recomienda usar uno mayor al 1024, por estar del 1 al 1024 reservados.

Port 12503

Continuar leyendo «Cómo hacer SSH más seguro»

Jaulas SFTP

Jail FTPBuscando la forma de configurar un servidor SFTP (Secure FTP) para la transferencia de ficheros segura, me he encontrado que el propio OpenSSH que viene en la mayoría de versiones, ya proporciona el servicio de servidor sftp.

Mirando la configuración de OpenSSH vemos como efectivamente, se define el servicio sftp:

# cat /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server

Así pues, por defecto, ya se dispone de un método para transferencia de ficheros sobre SSH gracias a OpenSSH.

Sin embargo, este método permite a un usuario, conectarse por SFTP y poder navegar por cualquier directorio del sistema al que tenga acceso, que por defecto, son la mayoría de ellos. Si se quiere «enjaular» al usuario en un directorio concreto, para que pueda trabajar únicamente con los ficheros y directorios de un directorio determinado, la cosa se complica.

Continuar leyendo «Jaulas SFTP»

Registrar actividad en sesión ssh

spy
Imaginemos que queremos un método para registrar todo lo que un determinado usuario realiza durante su sesión ssh. Por lo tanto, lo que se busca es guardar el log de la actividad del usuario en el propio equipo al que se conecta, y por supuesto, no se quiere que el usuario pueda modificar o eliminar este archivo de log.

Opción 1

Una primera opción, es complicarse la vida, montando este entorno a mano.

Continuar leyendo «Registrar actividad en sesión ssh»

Configurar claves ssh

SSH keyImaginemos que queremos conectar desde un servidor A, usando el usuario «user», con otro servidor B, por ssh, pero sin tener que estar introduciendo el password a cada nueva conexión (por ejemplo, si queremos poder conectar automáticamente por ssh por necesidades de un script en un cron). En este caso, podremos seguir el proceso descrito a continuación:

  • En el servidor A, si «user» no tiene ya una clave ssh creada (se podrá ver si existe en $HOME/.ssh/ un archivo .pub), se podrá generar dicha clave, estando logueados con el usuario «user», ejecutando:

ssh-keygen -t dsa

  • Una vez creada la clave ssh, deberemos ir al servidor B y crear un usuario «user» (en este caso querremos conectar desde A, a user@B). Podemos usar «useradd user» y posteriormente «passwd user» para crear al usuario.
  • Ahora desde A, podremos conectar con B mediante:

ssh user@B

  • De nuevo desde A, podremos copiar la clave pública de user (de A) a la home del usuario user (de B) con el comando:

ssh-copy-id -i ~/.ssh/id_dsa.pub user@B

  • Desde este momento, ya se podrá conectar desde A a user@B sin necesidad de introducir el password del usuario «user» en el servidor B.

Fuentes: