¿Cuál es la comunicación más segura entre el firewall y DMZ?

-1

Tengo 2 máquinas virtuales. (Vmware esxi 6)

Ambos son opensuse 42.3 (tumbleweed)

  1. Firewall (iptables, ipset, dhcpd, dns solamente)
  2. servidor de correo / web. (apache, dovecot, postfix)

El servidor web no puede comunicarse con el firewall, excepto que el tráfico pasa a través de él para llegar al servidor de correo / web.

El firewall tiene una lista de bloqueo de direcciones IP a las que se agrega automáticamente. Sin embargo, es relativamente simple y no decodifica SMTP, IMAP, HTTP o HTTPS. El segundo tiene sus propias protecciones para los servicios mencionados anteriormente, y tiene su propia lista de bloqueo.

Ahora suponga que alguien que formaba parte de mi servidor de correo podría eliminar fácilmente mi lista de bloqueo, etc., pero solo desde el servidor de correo.

¿Cómo puedo hacer que el servidor de correo / web envíe sus listas de bloqueo al firewall sin romper la separación entre DMZ y todo lo demás (o al menos, en la medida de lo posible) en tiempo real?

No quiero usar un servicio externo, como subir archivos a la nube, ya que podrían darme DDOS y la lista estaría accesible.

Pensé en configurar una tercera VM como intermediaria (tarjetas de red separadas de subred privadas pero compartidas), pero si comprometen el servidor web, lo que evitará que entren en la máquina intermediaria y luego el firewall. Si hice esto, ¿qué tipo de protecciones puedo implementar para verificar que un pirata informático no esté enviando sus propios datos a través de mi canal (desbordamiento de búfer o ataque de etc.) en lugar de solo la lista de bloqueo?

cómo determina qué IP debería bloquearse:

En general, cualquier mal comportamiento. Ejemplo: todas las llamadas de error de Apache se han vinculado a un script php. El script php registra los detalles en mysql. Eventualmente, tendré un sistema de puntuación de vuelo completo en su lugar. Cada cosa no válida que haces aumenta tu puntuación, y ciertas cosas tienen puntuaciones más altas.

¿Por cuánto tiempo? Umbral basado, pero eventualmente para siempre. Consigue 100 puntos o lo que sea, adiós para siempre.

¿Cómo agregar las reglas? ipset add bad_guys 1.2.3.4

si me siento generoso, agregaré un tiempo de espera ###### a eso.

    
pregunta cybernard 15.06.2017 - 20:00
fuente

1 respuesta

0

Si bien los detalles y las posibilidades de su arquitectura no están claros, sugeriría lo siguiente:

  • Un servicio en el firewall debe preguntar al servidor de correo / web acerca de las actualizaciones de los bloques de IP. Esto significa que no se inicia ninguna comunicación al firewall, pero cualquier comunicación relacionada con las reglas del firewall solo se inicia desde el firewall para reducir la superficie de ataque. Por supuesto, el sistema de correo / web solo debe aceptar conexiones al servicio de bloqueo de IP del servidor de seguridad.
  • El protocolo para compartir direcciones IP bloqueadas debe ser lo más simple posible, de modo que pueda implementarse con un mínimo de código que también pueda verificarse fácilmente. Esto también significa que no se deben usar JSON, XML, YAML o cualquier otro formato sofisticado, ya que no son mínimos para este propósito y también dependen de las bibliotecas que se agregan a la superficie de ataque. También se debe dar preferencia a la implementación de lenguajes de nivel superior en lugar de C / C ++ porque esto primero hace que el código sea más pequeño y, por lo tanto, más fácil de auditar, y segundo hace que los desbordamientos típicos de búfer sean improbables. Por supuesto, el sistema de correo / web aún no debe ser confiable, por lo que cualquier entrada debe verificarse estrictamente para que cumpla con el formato esperado.
  • En caso de que las reglas de bloqueo deban actualizarse con privilegios administrativos, se recomienda tener una separación de privilegios, es decir, diferentes procesos con diferentes permisos para comunicarse con el servidor de correo / web y para actualizar las reglas de bloqueo. Cada proceso solo debe tomar los privilegios mínimos necesarios mediante el uso de chroot, sandbox, containers, seccomp , prenda o tecnologías similares.

Tenga en cuenta que estas sugerencias pueden considerarse excesivas para su propósito específico. En un mundo perfecto donde no existan errores, no tendría que implementar todo esto porque, por ejemplo, la separación de privilegios o los entornos limitados son necesarios principalmente para limitar el impacto de un ataque en caso de que el atacante pueda explotar un error. Pero recomiendo implementar al menos parte de estos, es decir, definitivamente no hay algún servicio altamente privilegiado que se ejecute en el firewall, que habla un protocolo complejo para el sistema de correo / web y ejecuta comandos del sistema basados en información aparentemente confiable.

    
respondido por el Steffen Ullrich 15.06.2017 - 20:49
fuente

Lea otras preguntas en las etiquetas