Mostrando entradas con la etiqueta SSH. Mostrar todas las entradas
Mostrando entradas con la etiqueta SSH. Mostrar todas las entradas

07 agosto 2013

Mejores Prácticas de Seguridad para OpenSSH

OpenSSH es una implementación del protocolo SSH, es recomendado para login remoto, hacer backups, transferencia de archivos vía scp o sftp y mucho más. SSH es perfecto para mantener la confidencialidad y la integridad de los datos intercambiados dentro de una red o sistema. Ahora bien, es necesario seguir algunos lineamientos para mejorar la seguridad de un servidor OpenSSH. Aquí les voy a enumerar las más importantes.

1- Solo use el Protocolo SSH versión 2

La versión 1 del protocolo SSH tiene un problema de vulnerabilidades de Seguridad. SSH-1 ya está obsoleto y debemos evitarlo. Para asegurarnos que estamos corriendo la versión 2 lo verificamos el archivo sshd_config.
# vi /etc/ssh/sshd_config
Y verificamos que este la siguiente línea, si no está lo agregamos.
Protocol 2

2- Limite el acceso de usuarios vía SSH

Por Defecto todos los usuarios creados en un sistema linux pueden loguearse vía SSH usando sus contraseñas o llave pública. A veces creamos cuentas de usuarios para ftp, email u otro propósito, sin embargo estos usuarios también se pueden loguear al sistema vía ssh lo que es una gran vulnerabilidad de seguridad. Estos usuarios tendrán acceso a herramientas del sistema y la capacidad de correr scripts ya sea para abrir puertos o hacer cualquier cosa. Así que la mejor recomendación seria de limitar quien tiene acceso o no vía SSH.
Para esto accesamos al archivo sshd_config
# vi /etc/ssh/sshd_config
Si solo queremos que se loguee vía ssh root, usuario1 y usuario2 modificamos lo siguiente en sshd_config
AllowUsers root usuario1 usuario2
Si solo quiero bloquear los usuarios usuario3 y usuario4
DenyUsers usuario3 usuario4
Estas directivas están en sshd_config, si no están lo pueden agregar.

3- Configure el LogOut por tiempo de inactividad

Es recomendable configurar esta directiva para evitar sesiones SSH desatendidas. Esto se configurar por igual en el archivo sshd_config.
# vi /etc/ssh/sshd_config
Y modificamos o agregamos lo siguiente
ClientAliveInterval 300
Aquí le estoy diciendo que pasado los 300 segundos sin entrada que desconecte el usuario.

4- Cambie el puerto por Defecto de SSH y Limite las conexiones por IP

Por Defecto SSH conecta desde todas las interfaces de Red y Direcciones ip del sistema. Limite las direcciones por donde conecta y cambie el puerto por defecto de SSH (22). Por lo general los ataques de fuerza bruta intentan conectarse por el puerto 22. Para configurar esto accesamos a sshd_config y modificamos o agregamos lo siguiente:
# vi /etc/ssh/sshd_config
port 2022
ListenAddress 192.168.3.1
ListenAddress 100.88.21.2
Aquí le estoy diciendo que solo permita conexiones por las direcciones 192.168.3.1, 100.88.21.2 y por el puerto 2022

5- Utilice contraseñas complejas

Es de vital importancia el uso de contraseñas complejas ya que los ataques de fuerza bruta utilizan claves basadas en diccionario.

6- Utilice Autenticación basada en llaves públicas

Más adelante publicare un post hablando exclusivamente de esto y cómo podemos configurarlo.

 7- Deshabilite la autenticación basada en Host

Para deshabilitar este método de autenticación, modificamos o agregamos lo siguiente en sshd_config.
# vi /etc/ssh/sshd_config
HostbasedAuthentication no

8- Filtrar las conexiones

Por defecto SSH permite conexiones desde cualquier dirección ip. Lo mejor es definir algunas reglas en Iptables para limitar las conexiones a una ip o segmento de red especifico. En este caso usare el puerto por defecto de SSH (22) o si configuramos otro pues utilizamos ese. Para permitir la conexión SSH desde un segmento de red especifico y bloquear las otras conexiones hacemos lo siguiente como root:
# iptables -A INPUT -p tcp -m tcp -s 192.168.3.0/24 –dport 22 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp -s 0.0.0.0 –dport 22 -j DROP
Siguiendo estas recomendaciones tendremos un servidor mucho mas seguro.

06 agosto 2013

OpenSSH, Instalación y Configuración

Secure Shell (SSH) es un protocolo de red que nos permite ejecutar un shell en una maquina remota mediante un canal seguro. Hoy veremos como instalar OpenSSH que es una implementación del protocolo SSH de código abierto, que nos permite la comunicación encriptada a un host remoto mediante una red. Esto tipo de conexiones es vital para los administradores de sistema ya que nos ayuda a realizar cualquier tarea administrativa dentro del servidor desde una ubicación remota. Si queremos configurar el acceso SSH en un servidor o maquina en linux podemos instalar OpenSSH.

Para instalar OpenSSH  ejecutamos los siguientes comandos.

#yum -y install openssh-server openssh-clients

o

#apt-get install openssh-server

Ahora subimos el servicio

#service sshd start

Si queremos que el servicio inicie automáticamente cuando linux suba ejecutamos lo siguiente:

#chkconfig –level 235 sshd on

Con este comando el servicio subirá automaticamente en los Runlevel que especificamos.

Ya en este punto, pueden conectarse a la maquina remotamente por el puerto 22, usando un cliente SSH como putty por ejemplo.

Ahora por cuestiones de Seguridad es necesario que cambiemos algunas configuraciones. Para esto podemos modificar el archivo de configuración de sshd el cual se encuentra en la ruta/etc/ssh/sshd_config.

Vamos a ver algunos de las opciones que pueden modificar y como accesar al archivo para modificarlo.

Ejecutamos el comando,

#vi /etc/ssh/sshd_config

Aquí tenemos el archivo listo para modificarlo, las opciones que nos interesaría modificar serian las siguientes. Cuando este listo para modificar, presionamos la tecla i para poner a vi en modo insertar.

port 22 ( por defecto, sshd escucha por el puerto 22. Cambiandolo a otro puerto (ej: 2022)  es posible que podamos evitar ataques dirigidos a nuestro servidor por los hackers usando este puerto)

ListenAddress ( Si nuestra maquina linux tiene mas de una interface de red, y queremos especificar a que interface sshd se debe unir, podemos usar esta opción. Esto nos permitirá mejorar la seguridad limitando las conexiones SSH por una interfaz especifica.

PermitRootLogin no ( Esta opción permite o no que el usuario root se loguee por ssh )

AllowUsers ( Aqui podemos permitir el acceso via SSH a usuarios particulares. Si vamos a especificar multiples usuarios lo separamos por coma.

Una vez finalicemos de configurar el archivo, le damos esc, :,  wq y enter.

Procedemos a reiniciar el servicio.

#service sshd restart

Ya tenemos nuestro servicio ssh corriendo y permitiendo conexiones.

En un proximo post les voy a mostrar cuales son las mejores prácticas de seguridad para OpenSSH.