Pasar al contenido principal
sysadmin.org.mx

SysAdmin Sections

  • Secciones
    • Articulos
    • Clasificados
    • Hardware
    • Problemas comunes
    • Red de servicios
    • Software
    • Trucos y consejos
    • Linuxreal
User account menu
  • Iniciar sesión

Ruta de navegación

  1. Inicio

Protección de sitios Web usando NGINX

Por angel, 7 Julio, 2012

Este documento es muy breve y tiene el fin de mostrar un mecanismo de protección de sitios web bajo NGINX.

Lo único que necesitamos saber es como utilizar expresiones regulares dentro de directivas "location". A continuación se puede observar una regla de ejemplo que sirve para negar el acceso a archivos PHP en el directorio "uploads" de Wordpress y que pudieran haber sido cargados usando herramientas propias de Wordpress o mediante alguna vulnerabilidad.

location ~ /wp-content/uploads/.*\.(php|phps|inc)$ {
    deny all;
}

La directiva previa es ejecutada cuando se acierta en la expresión regular, la cual se puede descomponer de la siguiente forma:

~ significa que estamos usando una expresión regular
/wp-content/uploads/ es el directorio o ruta que estamos protegiendo
.* representa cualquier caracter cualquier número de veces
\. representa solo un carácter de punto
(php|phps|inc) son las extensiones que deseamos restringir separadas por |
$ representa el final de la url

Aunque NGINX cuenta con otras formas de uso de la directiva "location", esta junto con ~* (para expresiones regulares independientes de mayúsculas y minúsculas), son las mas comunes y efectivas para proteger directorios o rutas.

A continuación un ejemplo mas:

location ~ ^/(bin|logs|SQL|db|config|installer)/. {
    deny all;
}

Esta directiva es ideal para Roundcube y sirve para negar vía web todos los directorios "sensibles" de la aplicación.

Tal como en los ejemplos anteriores se pueden generar directivas "location" para situaciones especiales, ya sea con manejadores de contenidos, aplicaciones de crm, aplicaciones hechas a medida, etc; las posibilidades son infinitas.

Conclusión

Aunque NGINX no cuenta con un módulo enfocado en la seguridad como mod_security para Apache, un buen conjunto de directivas "location" pueden ayudarnos a prevenir una gran cantidad de problemas de seguridad en nuestros sitios.

Autor
Angel Gabriel León Rodríguez

Referencias
NGINX Inc
Wordpress
Roundcube
tags
nginx
mod_security
apache
wordpress
roundcube
security
seguridad
  • Inicie sesión o registrese para enviar comentarios

Últimas publicaciones

  • Actualización de Salt master para corregir problemas con minions
  • Bootstrapping de servidores con Terraform y Salt
  • Comandos LINUX / BSD para todos
  • Redimensionamiento de particiones UFS sobre FreeBSD
  • Error de conexión de phpMyAdmin a AWS RDS (SELinux)
  • AWS S3 como sistema de archivos en Linux
  • Problema de conexión FTP usando pure-ftpd (Timeout)
  • Operation not permitted - connect(2)

Publicaciones destacadas

  • Reducción de latencia en arquitecturas híbridas con Amazon ElastiCache
  • Paravirtualización con XenServer
  • Administración de múltiples servidores usando Puppet
  • Servidores virtuales con ezjail
  • Manejo de respaldos con bacula
  • Configuración de MySQL Cluster en FreeBSD

Patrocinado por Nix Networks