¿Hay alguna diferencia entre el firewall de Linux y el firewall de Nginx? ¿Necesito escribir reglas para ambos?

Los dos son bestias completamente diferentes .

Un firewall de Linux opera a nivel de red y controla qué nodos de la red pueden acceder a varios servicios en su sistema. En Linux, la implementación de firewall canónico es netfilter / iptables, y encontrará mucha documentación y tutoriales en ese enlace para ayudarlo con la configuración.

Un “firewall Nginx” suena como un firewall de aplicación web (WAF) , que opera a nivel de aplicación y ayuda a evitar que las entradas dañinas golpeen su aplicación web. El único WAF de producción específico de Nginx que conozco es NAXSI, pero no lo he usado yo mismo. Aún así, los documentos de configuración parecen bastante simples y, a diferencia de un firewall de nivel de red, no se bloqueará por error de su sistema.

Si está ejecutando su propio servidor expuesto a Internet, entonces probablemente sea una buena idea usar al menos iptables para permitir solo el acceso desde Big Bad Internet a los puertos 80 (HTTP), 443 (HTTPS) y 22 (SSH) en su servidor. (Es posible que incluso desee restringir el acceso SSH a ciertas direcciones IP estáticas o rangos conocidos bajo su control).

Veo NAXSI como una capa de protección agradable de tener, pero realmente debería centrarse en si su aplicación web se escribió teniendo en cuenta la seguridad (supongo que no). Para eso, debe visitar el sitio web de OWASP para obtener información sobre las muchas formas en que las aplicaciones web se filtran como tamices.