Protege tu servidor casero de ataques externos.

En el día de hoy, les daré algunos tips de como tener un servidor casero (o un poco mas grande) más seguro. Pero antes de que me descuarticen vivo.

NADA ES TOTALMENTE SEGURO

Con esta salvedad bien definida, prosigo.

Voy ir por partes y no voy a explicar muy detenidamente cada proceso. Solo lo mencionaré y aclararé una que otra cosilla, así podrán ir a Googlear con una  idea más clara de lo que buscan.

Antes y durante la instalación

  • Es bastante recomendado que el servidor sea instalado lo mas “minimal” posible. Así prevenimos que estén corriendo servicios que ni siquiera sabemos que están allí, ni para que sirven. Esto asegura que toda la configuración corra por cuenta propia.
  • Se recomienda que el servidor no sea usado como estación de trabajo cotidiana. (Con la que estas leyendo este post. Por ejemplo)
  • Ojalá el server no tenga un entorno gráfico

Particionado.

  • Se recomienda que las carpetas que son usadas por el usuario como “/home/” “/tmp/” “/var/tmp/” “/opt/” sean asignadas a una partición diferente a la del sistema.
  • Carpetas criticas como “/var/log” (Donde se guardan todos los logs del sistema) se ponga en una partición distinta.
  • Ahora bien, dependiendo del tipo de servidor, si por ejemplo es un servidor de correo. La carpeta “/var/mail y/o /var/spool/mail” debería ser una partición aparte.

La contraseña.

Para nadie es un secreto que la contraseña de los usuarios del sistema y/u otros tipos de servicios que las usen, deben ser seguras.

Las recomendaciones son:

  • Que no contenga: Tu nombre, Nombre de tu mascota, Nombre de parientes, Fechas especiales, Lugares, etc. En conclusión. La contraseña no debe tener nada relacionado contigo, o cualquier cosa que te rodee o sea de tu vida cotidiana, tampoco nada relacionado con la cuenta en si.  Ejemplo: twitter#123 .
  • La contraseña también debe cumplir con parámetros como: Combinar mayúsculas, minúsculas, números y caracteres especiales.  Ejemplo: DiAFsd·$354″

Luego de tener instalado el sistema

  • Es algo personal. Pero me gusta eliminar el usuario ROOT y asignarle todos los privilegios a otro usuario, así me evito ataques a ese usuario. Siendo muy común.
Debe editarse el fichero /etc/sudoers. Allí añadimos el usuario que queremos que sea ROOT y luego eliminamos nuestro antiguo Super Usuario (ROOT)
  • Es muy practico suscribirse a una lista de correo donde anuncien bugs de seguridad de la distribución que uses. Además de blogs, bugzilla u otras instancias que te puedan advertir de posibles Bugs.
  • Como siempre, se recomienda una constante actualización del sistema así como de sus componentes.
  • Algunas personas recomiendan también asegurar el Grub o LILO y nuestra BIOS con una contraseña.
  • Hay herramientas como “chage” que permite obligar a los usuarios a cambiar la contraseña cada X tiempo, además del tiempo mínimo que deben esperar para hacerlo y otras opciones.

Hay muchísimas formas de asegurar nuestro PC. Todo lo anterior fue antes de instalar siguiera un servicio.  Y solo mencione algunas cosas.

Existen manuales bastante extensos que vale la pena leer.  para aprender sobre este inmenso mar de posibilidades..  Con el tiempo vas aprendiendo una que otra cosilla. Y te darás cuenta que siempre falta.. Siempre…

Ahora bien vamos asegurar un poco más los SERVICIOS. Mi primera recomendación siempre es: “NO DEJAR LAS CONFIGURACIONES POR DEFECTO”. Siempre entra a el archivo de configuración del servicio, lee un poco sobre que hace cada parámetro y no lo dejes tal cual se instala. Siempre trae problemas consigo.

Ahora bien:

SSH   (/etc/ssh/sshd_config)

En el SSH podemos hacer muchas cosas para que no sea tan fácil de vulnerar.

Por ejemplo:

-No permitir el login del ROOT(En caso que no lo hayas cambiado):

"PermitRootLogin no"

-No dejar que las contraseñas sean en blanco.

"PermitEmptyPasswords no"

-Cambiar el puerto por donde escucha.

"Port 666oListenAddress 192.168.0.1:666"

-Autorizar únicamente a ciertos usuarios.

"AllowUsers alex ref me@somewhere"   El me@somewhere es para obligar a que se conecte siempre desde una misma ip ese usuario.

-Autorizar grupos específicos.

"AllowGroups wheel admin"

Consejos.

  • Es bastante seguro y además casi obligatorio enjaular los usuarios de ssh por medio de  chroot.
  • Puedes también deshabilitar la transferencia de archivos.
  • Limitar el numero de intentos de login fallidos.

Herramientas casi esenciales.

Fail2ban: Esta herramienta que está en repos, nos permite limitar el numero de accesos a muchos tipos de servicios “ftp, ssh, apache.. etc” banneando a las ip que excedan el limite de intentos.

Endurecedores: Son herramientas que nos permiten “endurecer” o mas bien armar nuestra instalación con Cortafuegos y/u otras  instancias. Entre ellos “Harden y Bastille Linux

Detectores de intrusos: Existen muchos NIDS, HIDS y otras herramientas que permiten prevenir y protegernos de ataques, mediante de logs y alertas. Entre muchas otras herramientas. Existe “OSSEC

Para concluir. Este no era un manual de seguridad, mas bien eran una serie de items a tener en cuenta para tener un servidor medianamente seguro.

Como consejo personal.  Lean mucho de como ver y analizar LOGS, Y volvámonos unos nerds de Iptables. Además, entre mas Software se le instale al servidor mas vulnerable se hace, por ejemplo un CMS debe ser bien administrado, actualizándolo y mirando muy bien que clase de plugins le añadimos.

Mas adelante quiero enviar post de como asegurar algo especifico. Allí si podre dar mas detalles y hacer la practica.