Cargando



Guia para proteger un servidor VPS con Linux

Proteger un servidor o una red es muy importante para tener seguros nuestros datos, veamos algunos consejos para mejorar la seguridad.


ene 26 2016 14:17
Profesional
ene 28 2016 23:54

Un servidor VPS (Servidor Privado Virtual), es una partición lógica de un disco duro mediante una maquina virtual, un vps nos brinda más control sobre la administración de recursos en comparación con el servicio de servidor compartido.

 

Un VPS es ideal para quienes quieran utilizar profesionalmente un servidor pero a un menor costo que un dedicado y también para quienes quieran iniciarse y hacer pruebas en la administración de servidores, pero no están seguros acerca de los aspectos técnicos, el servidor VPS es una buena opción para comenzar. Se puede utilizar para probar herramientas y habilidades sin tener que invertir demasiado dinero y poner en riesgo un servidor en producción.

 

Podemos crear un VPS como se vio en el tutorial:

 

O bien utilizar algunos pagos hay muchas empresas que ofrecen servidor VPS por mes o por días como por ejemplo DigitalOcean, para probar configuraciones en un ambiente real.

 

panta01.jpg

 

Lo más importante cuando debemos administrar un servidor es decidir cuales serán necesarias las medidas de seguridad que adoptaremos. Aunque existen muchas medidas y herramientas de seguridad también pueden ser contraproducentes ya que consumen recursos y pueden no dejar funcionar bien algunas aplicaciones por eso debemos ser conscientes de los riesgos, las necesidades para poder decidir sobre el equilibrio entre la facilidad, el rendimiento del servidor y la seguridad.

 

En este tutorial brindaré una serie de configuraciones recomendadas para un VPS seguro

 

Bloqueo de acceso con servidores de seguridad (Firewalls)

Los firewalls actúan como una barrera entre el tráfico general de Internet y el servidor. Es importante para revisor, filtrar y bloquear el tráfico interno y externo.

 

Mediante un conjunto de reglas que están configurados por el administrador, un servidor sólo va a utilizar unos puertos específicos de redes para servicios autorizados. El resto de los puertos no han sido utilizados, y debe ser protegido de manera segura detrás de un firewall, para denegar todo el tráfico destinado a estos lugares.

 

Para este tutorial supondremos que administramos un servidor VPS Linux para adoptar medidas de seguridad. Para establecer reglas básicas de firewall debemos primero rastrear que puertos tenemos abiertos para ello utilizamos el comando:

ifconfig
Determinamos la ip:
nmap -sT -O 192.168.0.11

panta02.jpg

 

Esto le permite saber que puertos escuchan y condicionar el uso de los servicios en algunos casos. Configurar bien las reglas de nuestro firewall es una buena base para la seguridad de del servidor y de la red.

 

Existen muchos firewall disponibles, algunos son:

 

El firewall más utilizado es Iptables que ya viene con Linux, pero no tiene interfaz gráfica, desde la ventana de terminal (conectados vía SSH) podemos utilizar los siguientes comandos:

 

Bloquear una IP de entrada determinada:

sudo iptables -A INPUT -s 190.160.45.60 -j DROP
Bloquear una IP de entrada y un puerto por interface de red ethernet o red cableada:
iptables -A INPUT -i eth0 -s 190.160.45.60 --destination-port 25 -j DROP
Bloqueo una IP de entrada pero por WiFi:
iptables -A INPUT -i wlan0 -s 190.160.45.60 -j DROP
Si quito el parámetro -s IP y dejo el puerto entonces bloqueo el puerto para cualquier IP

 

Iptables es la herramienta que se utiliza para administrar el firewall netfilter incluido en el kernel de Linux. La ventaja de Iptables es que ha sido sometido a auditorías de seguridad muy profundas para garantizar que funcione y sea util.

 

Otro aspecto interesante es que podemos crear script o una interface para definir las reglas para iptables, aunque ya hay muchas disponibles que pueden permitir configurar con conjuntos de reglas de manera muy flexible.

 

Utilizar SSH con seguridad para administración en forma remota

Cuando debemos administrar un servidor que no tenemos acceso local, deberemos hacerlo de forma remota. Para ello se utiliza el servicio a través de un protocolo denominado SSH, siglas de Secure Shell, que permite administrar por completo el servidor mediante un intérprete de comandos,

 

SSH brinda la capacidad para crear y mantener un túnel de tráfico entre el ordenador y el servidor de manera que se establezca una conexión segura ya que el túnel trasmite datos en una conexión cifrada.

 

Mientras que el protocolo en sí es muy seguro y ha sido ampliamente analizado y sometido a pruebas de seguridad, podemos añadir algunas opciones de configuración para hacerlo más seguro, como puede ser cambiar el puerto ya que por defecto el puerto de conexión SSH es el puerto 22, para ello nos conectamos vía SSH y luego editamos el archivo:

/etc/ssh/sshd_config
Nos conectamos mediante el siguiente comando:
ssh usuario@ip

panta03.jpg

 

A continuación editamos el archivo y cambiamos el puerto por otro a nuestro gusto que no interfiera con ningún servicio por ejemplo 9200:

nano /etc/ssh/sshd_config

panta04.jpg

 

Grabamos y reiniciamos SSH para que adopte la nueva configuración, según la distro linux:

 

Fedora, Centos

sbin/service sshd restart
Debian, Ubuntu
/etc/init.d/sshd restart
A continuación deberemos volver a acceder, lo haremos de la siguiente manera:
ssh usuario@ip -p 9200
A continuación bloqueamos el puerto 22 de esta manera no podrán escanearnos e intentar un ataque por fuerza bruta.
iptables -A OUTPUT -p tcp --dport 22 -j DROP
Instalar un IPS o sistema de prevención de intrusos

Un sistema de prevención de intrusos es un software que permite monitorear y controlar el acceso en una red informática para proteger los recursos o un servidor de ataques e intrusiones. La tecnología de prevención de intrusos es un complemento vital junto a un sistema de detección de intrusos (IDS), mientras un IPS funciona como un firewall mientras que un IDS analiza qué tipo de tráfico circula en la red, sino que también revisa el contenido y lo que hace ese contenido.

 

Un ejemplo es Fail2Ban es una aplicación desarrollada bajo Python para la prevención de intrusos, es un IPS, que actúa automáticamente analizando y bloqueando las conexiones remotas que intentan accesos por fuerza bruta.

 

Fail2ban no solo utiliza su propio registro de intentos de acceso, además utiliza los registros de otros software como iptables, que se especifiquen las reglas para poder aplicar un bloqueo.

 

Puede utilizar reglas creadas por el administrador o crear nuevas según la configuración propia, por ejemplo bloquear un IP que haya fallado 3 veces en acceder.

 

Podemos desde una ventana SSH o descargarlo desde su pagina oficial, si viene en los repositorios de nuestra distro lo instalamos.

apt-get install fail2ban
Luego lo configuramos editando el siguiente archivo:
nano /etc/fail2ban/jail.conf

panta05.jpg

 

Aquí editamos algunos de los parámetros mas importantes

  • ignoreip: ip que nunca se bloquearán.
  • bantime: tiempo en segundos que durará el bloqueo de la ip.
  • maxretry: cantidad máxima de intentos fallidos de intentos de acceso antes de ser bloqueado.

 

Luego podemos crear filtros para distintas aplicaciones que podemos encontrar en el directorio:

cd /etc/fail2ban/filter.d

panta06.jpg

 

Este sistema de prevención de intrusos nos permitirá mitigar muchos ataques y así incrementar la seguridad general de la configuración de nuestro VPS.

 

Fail2ban es un servicio que monitorea los archivos de registro con el fin de determinar si un acceso es es un usuario legítimo y sino bloquear temporalmente el tráfico a partir de la dirección IP asociada al usuario que pretende acceder a algunas servicio sea ftp, ssh, email, web, etc.

 

Esta es una manera fácil de obstaculizar los métodos de fuerza bruta de modo automático, ya que tendrá que al bloquearlo el ataque dejará de funcionar durante el tiempo que indiquemos. Esto por lo general es suficiente para desalentar nuevos intentos de fuerza bruta.

 

Implementar un sistema de detección de intrusiones o IDS

Un sistema de detección de intrusos o IDS, es el complemento obligatorio de un sistema de prevención de intrusos. Un IDS detecta modificaciones de registros o archivos ejecutando comparaciones contra estos estados previamente registrados para saber si los archivos han sido cambiados o alguna configuración se ha modificado y registrar que usuario lo ha realizado.

 

Existen muchos IDS como Snort, el cual vimos en el tutorial:

Suricata que vimos en el tutorial:Tripwire que vimos en el tutorial:

 

Estas herramientas utilizan una base de datos de los archivos del sistema y protegen los archivos de configuración. Mediante la configuración de reglas y excepciones se definen que archivos proteger y que se debe informar, para que cuando comience a monitorizar el sistema revise ejecuciones y cualquier modificación de los archivos que se supervisa.

 

Todas las herramientas se pueden configurar para que haga una revisión automática con cronjob cada cierto tiempo e incluso implementar notificaciones por correo electrónico en caso de actividad inusual.

 

Si tomamos por ejemplo Snort lo instalamos desde los repositorios:

apt-get install snort

panta061.jpg

 

Luego vamos al directorio donde se encuentran los archivos de reglas:

cd /etc/snort/rules

panta07.jpg

 

Por ejemplo veamos el archivo mysql.rules

nano mysql.rules
Donde vemos especificado que deberá ser informado cualquier acceso externo o del usuario root al servicio MySQL.

 

panta08.jpg

 

Otro ejemplo es por ejemplo monitorizar programas de chat tanto desde el servidor o desde algún ordenador de la red o desde algún ordenador externo que utilice nuestro servidor.

nano chat.rules

panta09.jpg

 

También podemos configurar cada archivo de reglas para detectar descargas desde un navegador o accesos a un servicio, modificación de un archivo o pagina web determinada.

 

Suricata es mas moderno que Snort y Tripwire, ya que funciona como un motor de sniffer para analizar el tráfico de entrada y salida de un sistema de red. Sin embargo, consume muchos recursos para analizar y detectar intrusiones al hacer un doble trabajo como IDS y IPS.

 

También posee plugins para asignar reglas y analizar muchas aplicaciones y programas. Suricata trabaja en todas las capas del modelo OSI.

 

Comprobar virus y malware con Linux Malware Detect o ClamAV

Aunque Linux es menos propenso a este tipo de ataques, no es inmune software malicioso. Las herramientas de un sistema de seguridad en conjunto con la implementación de un IPS y un IDS para detectar intentos de intrusión, requiere un software capaz de buscar y detectar malware para identificar los rastros de actividad que indican que hay algún software peligroso está instalado en el servidor.

 

En el tutorial Linux Malware Detect (LMD) para securizar Linux se explicó la instalación y uso de esta herramienta para detectar malware, no os lo perdáis.

 

Hay una serie de escáneres de malware disponible para los sistemas Linux que pueden ser utilizados para validar periódicamente la integridad de los servidores. Linux Malware Detect, también conocido como maldet o LCD, es una opción popular que puede ser instalado y configurado para escanear en busca de firmas de malware conocidos segun su base de datos.

 

Se puede ejecutar manualmente para realizar análisis de una sola vez y también se puede ejecutarse mediante cronjob para ejecutar análisis y búsquedas preventivas regulares, sobre todo para revisar correos electrónicos y archivos que puedan ser subidos por ftp al servidor. Los informes de estas exploraciones pueden ser enviadas por correo electrónico a los administradores de servidores.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X