Mostrando entradas con la etiqueta Tutoriales. Mostrar todas las entradas
Mostrando entradas con la etiqueta Tutoriales. 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.

04 agosto 2013

Buscando vulnerabilidades en Linux con Lynis

     

 
Hoy quiero iniciar con un poco de seguridad en Linux, y este es solo una de las muchas publicaciones que veremos referente a seguridad en Linux.

Ya sea que somos administrador de sistemas Linux, Auditor de seguridad o auditor de Sistemas, nuestra responsabilidad incluye tareas como:  Instalación de parches de Seguridad o Software, Escaneo de Malware, Verificación de la integridad de los archivos, auditoría de seguridad, verificación de errores en la configuración y muchas tareas mas. Si contamos con herramientas capaz de buscar vulnerabilidades automáticamente  nos puede ayudar bastante al momento en que estemos verificando nuestro sistema por fallas de seguridad.

Una de esas herramientas es Lynis que nos ayuda a detectar problemas de configuración que pueden ser aprovechadas para atacar nuestro sistema. Esta herramienta es soportada por multiples plataformas incluyendo CentOS, Debian, Fedora, FreeBSD, MacOS, Ubuntu, OpenSolaris, Red Hat entre otros.

Cuando escaneamos nuestro sistema con Lynis, este realizará una auditoría en varias categorías, tales como:

  • Herramientas del Sistema
  • Booteo y Servicios
  • Kernel
  • Procesos y memoria
  • Usuarios, Grupos y metodos de autenticación
  • Shells
  • Sistema de Archivos
  • Almacenamiento
  • Sistemas de Archivos en la Red, NFS
  • Aplicaciones
  • Servicios de Nombre: DNS, Bind
  • Puertos
  • Paquetes
  • Servicios de Red
  • Servicios de Impresión
  • Correo y mensajería
  • Servicios de Red: Nginx, Apache
  • SSH
  • SNMP
  • Base de Datos: MySQL, Oracle, MariaDB
  • LDAP
  • PHP
  • Squid
  • Archivos y Logging
  • Servicios Inseguros: Inetd
  • Tareas Programadas: Cron, atd
  • Criptografía
  • Virtualización
  • Integridad de los archivos
  • Malware
  • Directorios
  • y mas.

El reporte de auditoría nos dara avisos de vulneraribilidades encontradas en nuestro sistema. Tambien nos dará sugerencia para reforzar la seguridad  de este,

Para instalar esta valiosa herramienta solo tenemos que seguir estos pasos.

Entramos a una terminal en nuestro sistema linux y ejecutamos los siguientes comandos como root, entramos a una carpeta temporal o a donde queremos instalar la herramienta, en este caso creare una carpeta dentro de /tmp llamado Lynis

# cd /tmp

Creamos la Carpeta Lynis

# mkdir lynis

Accedemos a la carpeta

# cd /lynis

Descargamos lynis

# wget http://www.rootkit.nl/files/lynis-1.3.0.tar.gz

Finalmente extraemos los archivos.

# tar xvfvz lynis-1.3.0.tar.gz

Para correr la herramienta simplemente ejecutamos el siguiente comando.

# /tmp/lynis/lynis-1.3.0/lynis –check-all -Q

Una vez la Herramienta termine de escanear, este guardará su reporte de auditoría a la ruta /var/log/lynis.log 

Aqui les muestro un fragmento del log de Lynis para que visualicen como detecta una vulnerabilidad y la sugerencia para solucionarlo.

[15:51:37] Info: performing tests from categories:

[15:51:37] ===—————————————————————===

[15:51:37] Performing test ID BOOT-5121 (Check for GRUB boot loader presence)

[15:51:37] Test: Checking for presence GRUB conf file (/boot/grub/grub.conf or /boot/grub/menu.lst)…

[15:51:37] Found file /boot/grub/grub.conf, proceeding with tests.

[15:51:37] Result: Didn’t find MD5 hashed password line in GRUB boot file!

[15:51:37] Risk: user can switch to single user mode by editing current menu items or bypassing them.

[15:51:37] Additional information: Do NOT use a plaintext password, since the grub.conf or menu.lst file is most likely to be world readable!

[15:51:37] If an unsecured OS like DOS is used, add ‘lock’ below that entry and setup a password with the password option, to prevent direct system access.

[15:51:37] Warning: No password set on GRUB bootloader [test:BOOT-5121] [impact:M]

[15:51:37] Suggestion: Run grub-md5-crypt and create a hashed password. Add a line below the line timeout=<value>, add: password –md5 <password hash> [test:BOOT-5121]

[15:51:37] Hardening: assigned 0 hardening points (max for this item: 2), current: 0, total: 2

[15:51:37] ===—————————————————————===