Arquitectura de seguridad basada en host para la red del servidor web

1

Estoy comenzando con la seguridad de la red y, después de estudiar durante un tiempo sobre las tecnologías de uso frecuente, llegué a esta arquitectura para el servidor de mi casa (lo siento, no está en inglés).

Consideré 3 principios de seguridad generales básicos para este 2 :

  • Defensa en profundidad (muchas barreras de seguridad se respaldan entre sí)
  • Punto de asfixia (un canal estrecho a través del cual debe pasar el atacante)
  • Privilegio mínimo (cualquier objeto solo debe exponer lo necesario y nada más)

Una restricción es que no puedo usar otras máquinas físicas al principio. Tampoco hay otras máquinas en esta subred. Todos esos componentes deben mantenerse en el mismo servidor de Ubuntu. Los componentes se basan principalmente en 3 :

  • Cortafuegos (iptables) > implementado para proteger la red contra amenazas externas.
  • IDS (Snort) > establece reglas para la supervisión de la red en caso de que el atacante externo pase por alto el firewall
  • fwsnort > una herramienta para convertir reglas de snort en reglas de iptables
  • psad > una herramienta para el monitoreo de registros de iptables con un recurso de alerta por correo electrónico
  • Honeypots (artillería) > a lo largo de muchas otras funciones, Artillery se usa aquí como un honeypot para engañar a los atacantes y permitirme obtener información sobre ellos.

Algunas preguntas:

  • ¿Será efectiva esta arquitectura?
  • ¿Los honeypots son una buena idea?
  • Si es así, ¿debería ejecutarlos en una máquina virtual?
  • ¿Puedo garantizar QoS? ¿O se sobrecargará mi servidor?
  • ¿Qué más me estoy perdiendo (sobre cualquier cosa relacionada)?
pregunta Marcos Valle 15.05.2015 - 13:16
fuente

1 respuesta

1

Recientemente implementé esta solución y la probé con 3 máquinas virtuales. El atacante usa Kali, el servidor web usa Ubuntu 14.04 y el honeypot en realidad usa HoneyDrive 3. Tuve que cambiarlo un poco.

Básicamente,loqueestaarquitecturahaceesrecibirunpaquete,verifiquelasreglasdelfirewall(iptables)yregístrelo.FwsnortconviertelasreglasdeSnortenreglasdeiptables,haciendodelfirewalluntipodeIPS.Elmonitorderegistro(psad)luegoanalizaelregistro,identificalasIPmaliciosasyluegolasbloquea.Apartirdeestemomento,todoslospaquetesentrantesdeestasIPsereenviaránalHoneypot.

Aquíestánlasprincipalesreglasquelohacen:

######forwarding######ipsetcreatebanned_netshash:iphashsize4096iptables-tnat-APREROUTING-ptcp-mset--dport8181-jDNAT--to-destination$HONEYPOT_ADDR:443--match-setbanned_netssrciptables-tnat-APOSTROUTING-ptcp-s$HONEYPOT_ADDR--dport443-jSNAT--to-source$SERVER_ADDR:8181iptables-tnat-APREROUTING-ptcp-mset-jDNAT--to-destination$HONEYPOT_ADDR--match-setbanned_netssrciptables-tnat-APREROUTING-pudp-mset-jDNAT--to-destination$HONEYPOT_ADDR--match-setbanned_netssrciptables-tnat-APOSTROUTING-ptcp-mset-jSNAT--to-source$SERVER_ADDR--match-setbanned_netssrciptables-tnat-APOSTROUTING-pudp-mset-jSNAT--to-source$SERVER_ADDR--match-setbanned_netssrcecho"[+] Activating IP forwarding"
echo 1 > /proc/sys/net/ipv4/ip_forward

Tuve que actualizar la parte complicada del reenvío de IP bloqueadas. Al principio, psad solo soltaría los paquetes entrantes de las IPs de la lista negra. Estas IP se enumeran en el archivo de texto auto_blocked_iptables . Así que escribí un script para obtener estas IP e insertarlos en un ipset. Llamé a esto el update_daemon . Con este mecanismo de retroalimentación, el firewall puede reenviar paquetes al verificar su origen con los elementos del conjunto de chips.

Así es como lo hice:

#!/bin/bash
#ipset banned_nets must already exist

AUTO_BLOCKED_IPTABLES_PATH=/var/log/psad/auto_blocked_iptables

update_set(){
    ipset flush banned_nets

    grep -E -o '^([0-9]{1,3}[\.]){3}[0-9]{1,3}' $AUTO_BLOCKED_IPTABLES_PATH |      while read -r line ; do
         echo "Processing $line"
        ipset add banned_nets $line
    done
 }

while true #run indefinitely 
do
     inotifywait -e modify $AUTO_BLOCKED_IPTABLES_PATH | update_set
done

El proyecto de agujero está disponible en 2 .

Respondiendo a mis propias preguntas:

  • ¿Será efectiva esta arquitectura? Sí, reenvía a los atacantes previamente identificados a un honeypot y luego protege el servidor.

  • ¿Los honeypots son una buena idea? Los honeypots parecen ser una idea interesante. Con un honeypot podemos entender mejor al atacante, sus métodos, objetivos principales, hazañas, listas de palabras y mucho más.

  • Si es así, ¿debería ejecutarlos en una máquina virtual? Según 3 , ejecutar honeypots en máquinas virtuales es una buena idea. Dado que se supone que los honeypots son poco interactivos, no requieren demasiados recursos de hardware. Por otro lado, el sistema se vuelve vulnerable a las vulnerabilidades en el software de honeypot y en la propia VM.

  • ¿Puedo garantizar QoS? ¿O se sobrecargará mi servidor? No probé suficientemente el sistema para QoS. Todavía me parece que el tráfico reenviado aumentará el flujo de datos.

  • ¿Qué más me estoy perdiendo (sobre cualquier cosa relacionada)? El reenvío no es tan simple como parece que el servidor debe actuar como un proxy transparente y el update_daemon fue una parte difícil, ya que monitorea dinámicamente un archivo. Además, la solución no muestra buenos resultados al sufrir ataques DoS. En este caso, la mejor opción parece ser eliminar el honeypot y simplemente soltar al atacante. Esta solución parcial también está disponible en GitHub.

Encontrará más información en 2 y 4

    
respondido por el Marcos Valle 12.10.2015 - 14:10
fuente

Lea otras preguntas en las etiquetas