Continuando con el articulo anterior, voy a proseguir en este apartado de las posibles defensas que se pueden tomar contra algunos de los ataques más comunes en una LAN. En el apartado anterior hablé de las medidas que uno puede tomar contra el ARP spoofing y el port flooding y ahora hablaré las medidas que uno puede tomar contra otros dos ataques, uno de ellos especialmente conocido.
Detección y protección de ataques DOS/DDOS.
La popularidad de este tipo de ataques ha ido aumentando en los últimos años, habiéndose convertido en uno de los ataques más extendidos y populares actualmente. El ataque en sí es bastante "simple", pero su principal "virtud" es que dependiendo de la escala del ataque puede ser muy difícil de parar. Los ataques de DOS son conocidos cómo ataques de denegación de servicio (Denial Of Service) y consisten en mandar peticiones constantes a un servicio expuesto al público (generalmente una página web) y desbordarlo con tamaña cantidad de peticiones que luego, cuando un usuario que en verdad quiere acceder al servicio en cuestión, es incapaz de conseguirlo ya que el servidor se encuentra demasiado saturado atendiendo las peticiones enviadas por el atacante. Últimamente este tipo de ataques han evolucionado al siguiente nivel, al DDOS (Distributed Denial Of Service), y básicamente son iguales con la diferencia de que el ataque se realiza desde distintos puntos de información, haciendo el ataque mucho más agresivo (por el mayor volumen de peticiones al servicio) y más difícil de parar (hay que tratar de bloquear diferentes orígenes de forma efectiva). Una forma gráfica de expresar este tipo de ataques de forma simple sería algo cómo lo que muestro a continuación:
Estos ataques son tan agresivos, que por lo general, a menos que se tengan defensas contra estos ataques, enseguida se nota una bajada de rendimiento en el servicio en cuestión (por ejemplo una página web iría mucho más lenta) y dependiendo del volumen del ataque y de la capacidad del servidor, el servicio podría no estar disponible para cualquier usuario en cuestión de minutos, pareciendo que dicho servicio está caído; Además, en caso de tener un PC vigilando el tráfico que hay entre el servidor y el switch, y con un sniffer cómo, por ejemplo, wireshark; vería que el servidor está siendo inundado por peticiones:
Desde un servidor sería incluso más fácil, ya que con realizar el comando netstat -putan |grep "servicio" se vería que hay una cantidad exagerada de conexiones, pero en caso de no tener acceso al servidor, con wireshark se puede ver muy rápido que se está recibiendo un ataque de DOS.
La defensa contra este tipo de ataques es muy complicada: El bloquear la ip del atacante no basta, ya que el atacante estará usando ips falsas que en caso de que sean bloqueadas cambiarán con el fin de superar dicha barrera y el cerrar por completo el servicio atacado significaría que el atacante ha logrado su objetivo igualmente... Se trata de una situación muy complicada que por lo general se resuelve contactando con el ISP (Internet Service Provider). El ISP es la empresa con la que se ha contratado el servicio de internet y es la que tiene los mejores recursos para bloquear estos ataques; Otra opción es bloquear este ataque en el servidor, pero para ello se necesita que:
- El servidor tenga bastantes recursos.
- El volumen del ataque no sea demasiado grande.
De todas formas este típo de defensas tienen cómo contra que aunque se consigue mitigar el ataque, el ancho de banda es consumido por el susodicho, haciendo que la conexión pueda llegar a verse ralentizada. De todas formas es recomendable establecer defensas en el servidor para que en caso de ser atacado se pueda aguantar hasta que el ISP actue. Los tipos de ataque de DOS, aunque son parecidos entre sí, varían, pero unas medidas de seguridad que se podrían implantar sin afectar a la flexibilidad y funcionalidad del sistema sería:
- Escribir el comando: sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1.
Este pequeño comando hace que se ignore todos los paquetes broadcast que reciba; Por lo general los dispositivos que reciban un paquete de broadcast responden con el fin de que puedan ser identificados; Mediante la desactivación de respuesta a ese tipo de paquetes, se lograría cierta protección contra aquellos que quieran saturar al servidor con paquetes broadcast constantemente.
2. Escribir el comando: sysctl -w net.ipv4.tcp_syncookies=1
Este comando evitaría que el servidor no se viese saturado por paquetes SYN enviados por el atacante (tal y cómo se ve en la anterior imagen), y así, en caso de que se recibiese un ataque de peticiones SYN ,que nunca se resuelven debido a que la ip de origen es falsa, el servidor sería capaz de evitar dicha saturación.
3. Establecer filtros especiales para evitar la saturación de peticiones desde un origen en concreto para ciertos servicios concretos:
- # Establecemos que los paquetes de typo syn que sean NEW provengan de la misma ip un máximo de 10 veces.
- iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-upto 10 -m state --state NEW -j ACCEPT
- # Hacemos que las conexiones de tipo ESTABLISHED,RELATED vayan normal
- iptables -A INPUT -p tcp --dport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
- # El resto de peticiones al 80 se deniegan
- iptables -A INPUT -p tcp --dport 80 -j DROP
En este caso lo he puesto para proteger el puerto 80 (web), pero se puede aplicar a cualquier puerto en concreto. Esto hace que el número de nuevas peticiones desde un mismo origen no sea mayor de 10. Este filtro no aceptaría a las conexiones establecidas, sólo a las nuevas, haciendo que la navegación de un usuario normal no se vea afectada.
En caso de querer añadir medidas adicionales un servicio web cómo apache (recordemos que estamos haciendo todo con un entorno Linux), sería recomendable instalar el módulo mods-evasive en apache. Para ello habría que hacer lo siguiente:
sudo apt-get install libapache2-mod-evasive
a2enmod mod-evasive
Con esto ya estaría instalado y preparado el modulo, pero para que nuestra página sea capaz de usar dicho módulo habría que entrar en el fichero apache2.conf y añadir lo siguiente al final del fichero (aquello que tiene # al principio son comentarios que explican qué es cada opción):
#DOSHashTableSize va por defecto con ese número
#DOSPageCount el número de veces que se puede conectar uno a la misma página en 1 segundo
#DOSSiteCount el número de veces que se puede conectar uno al mismo sitio en 1 segundo
#DOSPageInterval intervalo de tiempo del DOSPageCount
#DOSSiteInterval intervalo de tiempo del DOSSiteCount
#DOSBlockingPeriod Tiempo que mantiene el bloqueo
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 300
</IfModule>
Cómo recomendación general para cualquier servidor que esté de cara al público, sería el poner el servidor que aloja dicho servicio en una DMZ (Zona Desmilitarizada); La DMZ es una zona que estaría más expuesta al público que el resto de elementos de la LAN, siendo objetos de distintos ataques mientras que el resto de elementos posee medidas de seguridad adicionales que los protegerían de dichas intrusiones; Algo cómo esto:
De todas formas, tal y cómo he dicho al principio, si aún con estas medidas se ve que el servidor está muy saturado por la denegación de servicio, lo mejor es contactar con el ISP que podrá adoptar medidas extra para paliar los efectos de éste.
Detección y protección de ataques DHCP spoofing:
Estos ataques consisten en la suplantación de un servidor DHCP (Dynamic Host Configuration Protocol). La mayoría de las personas no son conscientes de ello pero en el día a día se usa este servicio de forma implicita en sus hogares. Todo router posee un servidor DHCP que hace que cuando uno enciende el ordenador y tiene el cable de red conectado al router, automáticamente posee conexión a internet sin tener que tocar ni configurar nada; Eso es debido a que el DHCP otorga ip de forma dinámica a todo los equipos que están preparados para lograr la ip de dicho modo. Por defecto todos los ordenadores están diseñados para lograr la ip por dhcp a menos que se le especifique lo contrario.
Los ataques de este tipo pasan desde sofisticadas herramientas a un simple servidor DHCP que se intenta adelantarse al servidor autentico. Para detectar esos ataques se puede usar un sniffer para ver que hay un servidor DHCP que trata constantemente de otorgar los datos de red a un equipo; En caso de tener controlada la dirección real del servidor DHCP es muy fácil distinguir si el servidor DHCP que está dando ip en la red es el real o no y una vez controlado dicho punto sólo habría que intentar bloquear la ip en cuestión o bloquear el puerto al que está conectada esa ip para que deje de intentar suplantar al DHCP original.
La medida más efectiva para evitar estos ataque sería la implantación de un filtro en el switch que bloquease el puerto de origen 67 en todos los puertos de red que estén configurados para que se conecten los PCs de sobremesa y/o equipos que se sabe que jamás podrían actuar cómo servidores DHCP.
El objetivo del DHCP spoofing es el mismo que el del ARP spoofing: Interponerse en las comunicaciones de la victima para controlar todo el tráfico que envía y recibe ésta; Al ser un ataque relativamente sutil de cara al usuario final, hay que andar con cuidado, debido a que las comunicaciones del usuario final podrían verse interceptadas sin que este se diese cuenta de ello.
Espero que os haya sido útil
Saludos
No hay comentarios :
Publicar un comentario