LinuxParty
NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
En este breve artículo se explica cómo se pueden bloquear los ataques más habituales, inyecciones SQL, inyecciones de archivos, correo no deseado y los agentes de usuario usados por los hackers y hoggers de sus vhosts nginx con algunas directivas de configuración simples. Esta configuración está lejos de ser completa, pero es un buen punto de partida. Usted tendrá que ver sus registros de intento de robos en los intentos y luego tratar de modificar / completar el conjunto de reglas.
No hay ninguna garantía de que esto funcionará para usted!
Modifique sus Vhosts nginx
El conjunto de reglas que uso aquí tiene que ser insertado en cada vhost nginx (dentro de un contenedor de servidor {}) donde desea utilizarlo. Por desgracia, no se puede utilizarse a nivel general debido a que la directiva set no está permitido en el interior del contenedor http {}.
server { [...] ## Block SQL injections set $block_sql_injections 0; if ($query_string ~ "union.*select.*\(") { set $block_sql_injections 1; } if ($query_string ~ "union.*all.*select.*") { set $block_sql_injections 1; } if ($query_string ~ "concat.*\(") { set $block_sql_injections 1; } if ($block_sql_injections = 1) { return 403; } ## Block file injections set $block_file_injections 0; if ($query_string ~ "[a-zA-Z0-9_]=http://") { set $block_file_injections 1; } if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") { set $block_file_injections 1; } if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") { set $block_file_injections 1; } if ($block_file_injections = 1) { return 403; } ## Block common exploits set $block_common_exploits 0; if ($query_string ~ "(<|%3C).*script.*(>|%3E)") { set $block_common_exploits 1; } if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") { set $block_common_exploits 1; } if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") { set $block_common_exploits 1; } if ($query_string ~ "proc/self/environ") { set $block_common_exploits 1; } if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") { set $block_common_exploits 1; } if ($query_string ~ "base64_(en|de)code\(.*\)") { set $block_common_exploits 1; } if ($block_common_exploits = 1) { return 403; } ## Block spam set $block_spam 0; if ($query_string ~ "\b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b") { set $block_spam 1; } if ($query_string ~ "\b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b") { set $block_spam 1; } if ($query_string ~ "\b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b") { set $block_spam 1; } if ($query_string ~ "\b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b") { set $block_spam 1; } if ($block_spam = 1) { return 403; } ## Block user agents set $block_user_agents 0; # Don't disable wget if you need it to run cron jobs! #if ($http_user_agent ~ "Wget") { # set $block_user_agents 1; #} # Disable Akeeba Remote Control 2.5 and earlier if ($http_user_agent ~ "Indy Library") { set $block_user_agents 1; } # Common bandwidth hoggers and hacking tools. if ($http_user_agent ~ "libwww-perl") { set $block_user_agents 1; } if ($http_user_agent ~ "GetRight") { set $block_user_agents 1; } if ($http_user_agent ~ "GetWeb!") { set $block_user_agents 1; } if ($http_user_agent ~ "Go!Zilla") { set $block_user_agents 1; } if ($http_user_agent ~ "Download Demon") { set $block_user_agents 1; } if ($http_user_agent ~ "Go-Ahead-Got-It") { set $block_user_agents 1; } if ($http_user_agent ~ "TurnitinBot") { set $block_user_agents 1; } if ($http_user_agent ~ "GrabNet") { set $block_user_agents 1; } if ($block_user_agents = 1) { return 403; } [...] } |
Cada vez que una de las reglas coincide con una petición, un error 403 Forbidden se devuelve al cliente. He comentado la regla wget aquí porque esto también podría bloquear los trabajos del cron, que es bastante común entre las aplicaciones modernas CMS. Si su aplicación no utiliza wget, puede descomentar esa regla también.
No te olvides de recargar nginx:
/etc/init.d/nginx reload

-
Seguridad
- El comando Nohup en Linux le permite ejecutar en SSH comandos incluso después de cerrar la sesión
- Limitar el acceso ssh por dirección IP
- Tunelización SSH con Autossh
- Túneles SSH para diversión y ganancias: Autossh
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- 10 herramientas de pruebas de penetración y seguridad usadas por profesionales
- Realizar SSH y SCP sin introducir la contraseña en OpenSSH
- Tiger: la herramienta de detección de intrusos y auditoría de seguridad de Unix
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
- ¿Cómo bloquear las herramientas de escaneo de puertos y registrarlas con iptables?
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Guía de Evaluación de IDS de Código Abierto. (detección de intrusiones)
- Cómo transferir de forma segura un archivo en la Dark Web a alguien que usa el protocolo Onion
- Limitación de velocidad por IP con iptables
- Una introducción a la distribución Linux de seguridad "Tails"
Comentarios
Suscripción de noticias RSS para comentarios de esta entrada.