Estoy siendo controlado por China y no sé por qué no puedo bloquear su solicitud a mi servidor. .
//host.deny
ALL: item.taobao.com ALL: 117.25.128.*
Pero cuando veo el registro de errores en mi servidor web tail -f /var/log/apache2/error.log
, las solicitudes aún se están permitiendo.
Pregunta: ¿Por qué no funciona mi configuración de /etc/hosts.deny?
Respuesta
-
El archivo se llama
/etc/hosts.deny
, nohost.deny
-
No todos los servicios utilizan tcp-wrappers.
sshd
, por ejemplo, no lo hace de forma predeterminada. Tampoco apache. -
Puede usar
iptables
para bloquear todos los paquetes de 117.25.128 / 24, por ejemplo:iptables -I INPUT -s 117.25.128.0/24 -j DROP
-
Aún mejor, puede usar fail2ban para monitorear un archivo de registro (como apache, access.log y / o error.log) y bloquea automáticamente las direcciones IP que intentan atacar su servidor.
De la descripción del paquete debian fail2ban
:
Fail2ban monitorea los archivos de registro (por ejemplo, /var/log/auth.log, /var/log/apache/access.log) y prohíbe de manera temporal o persistente las direcciones propensas a fallas actualizando las reglas de firewall existentes.
Fail2ban permite especificar fácilmente las diferentes acciones a tomar, como prohibir una IP usando iptables o reglas hosts.deny, o simplemente enviar un correo electrónico de notificación.
De forma predeterminada, viene con expresiones de filtro para varios servicios (sshd, apache, qmail, proftpd, sasl, etc.) pero la configuración se puede extender fácilmente para monitorear cualquier otro archivo de texto. Todos los filtros y acciones se dan en los archivos de configuración, por lo que fail2ban puede adoptarse para usarse con una variedad de archivos y firewalls.
Comentarios
Respuesta
En cuanto a su pregunta original. Mi Apache en debian no está configurado con libwrap, por lo que no consultará hosts.deny. [La respuesta anterior ya lo menciona; la realidad es que tcpwrappers no es el epítome de la seguridad como lo era en los 90, especialmente cuando se trata a lista negra]. Tendría que ejecutarlo no como un demonio, sino desde (x) inetd, lo que lo ralentizaría (considerablemente).
Puede bloquear / permitir el acceso a nivel de Apache, y no no necesito envoltorios tcp para Apache [ni iptables para el caso]. No ha mencionado ssh, sin embargo, nunca dejo los servidores ssh abiertos directamente al exterior. Sin embargo, siga leyendo.
Tenemos un vhost con 300 + dominios, y también problemas similares, con taobao, baidu y, a menudo, incluso con arañas de Google. En particular, las arañas baidu pueden ser bastante agresivas y persistentes.
Como ya ha descubierto, tienen granjas de servidores, e incluso si bloquea una IP, aparecerán de nuevo en breve desde otras direcciones IP.
No es práctico en absoluto intentar mantener lis ts de direcciones IP / netblocks a mano.
Lo que nos funciona bastante bien es que modsecurity bloquea las cadenas de agentes de usuario de forma permanente, mientras que mod_evasive bloquea temporalmente las IP que son abusivas.
Esta configuración , además de ralentizar las arañas de los motores de búsqueda, también tiene la ventaja de ralentizar a los zombis que intentan adivinar las contraseñas en los CMS.
La parte relevante de nuestro modsecurity.conf
SecRule REQUEST_HEADERS:User-Agent "Yandex" phase:1,deny,nolog,id:"6972" SecRule REQUEST_HEADERS:User-Agent "ichiro" phase:1,deny,nolog,id:"6973" SecRule REQUEST_HEADERS:User-Agent "Baiduspider" phase:1,deny,nolog,id:"6974" SecRule REQUEST_HEADERS:User-Agent "Baiduspider/.*" phase:1,deny,nolog,id:"6975" SecRule REQUEST_HEADERS:User-Agent "Baiduspider-video" phase:1,deny,nolog,id:"6976" SecRule REQUEST_HEADERS:User-Agent "Baiduspider-image" phase:1,deny,nolog,id:"6977" SecRule REQUEST_HEADERS:User-Agent "sogou spider" phase:1,deny,nolog,id:"6978" SecRule REQUEST_HEADERS:User-Agent "YoudaoBot" phase:1,deny,nolog,id:"6979" SecRule REQUEST_HEADERS:User-Agent "bingbot(at)microsoft.com" phase:1,deny,nolog,id:"6980" SecRule REQUEST_HEADERS:User-Agent "msnbot(at)microsoft.com" phase:1,deny,nolog,id:"6981" SecRule REQUEST_HEADERS:User-Agent "BLEXBot/1.0" phase:1,deny,nolog,id:"6982" SecRule REQUEST_HEADERS:User-Agent "Bot.*" phase:1,deny,nolog,id:"6984" SecRule REQUEST_HEADERS:User-Agent "AhrefsBot.*" phase:1,deny,nolog,id:"6985"
Y nuestro mod-evasive.conf
DOSHashTableSize 2048 DOSPageCount 10 DOSSiteCount 300 DOSPageInterval 2.0 DOSSiteInterval 1.0 DOSBlockingPeriod 600.0 DOSLogDir /var/log/apache2/evasive DOSWhitelist 127.0.0.1 DOSWhitelist 1xx.xxx.xxx.xx
También olvidé una posibilidad muy real. Si no tiene trato con China o está ejecutando su servidor doméstico, simplemente bloquee todo el país. El nivel de ataques y malware que provienen de ellos ha justificado que muchos profesionales hagan eso.
http://www.cyberciti.biz/faq/block-entier-country-using-iptables/
También olvidé agregar una nota a pie de página a esta respuesta bastante larga.A menudo, la gente me sugiere en el trabajo que use robots.txt para este tipo de problemas. El punto es que robots.txt es solo una sugerencia para programas remotos. Los actores de Rogue ciertamente los ignoran, y no está garantizado que otros rastreadores web los respeten en la actualidad. De nuestras pruebas, por ejemplo, Baidu parece no respetarlas. (robots.txt equivale a preguntarle a un gángster, por favor hazme cosquillas en lugar de golpearme)
Comentarios
- ¡Gracias tío! sí, ‘ m def voy a usar mod_evasive, ¿esas configuraciones de archivo funcionan bien para usted?
- Funcionan bastante bien, la mayoría de nuestros vhosts no tienen mucho visitantes. De lo contrario, debe aumentar dospagecount (visitas máximas a una sola página desde una IP) y dossitecount (visitas máximas de e IP) en consecuencia.
- Mire mis primeras líneas nuevamente, por favor.
- Entendido tiene sentido, ‘ leeré la configuración. ¡Gracias de nuevo por toda tu ayuda!
- (no lo tomes mal, solo sugiriendo bloquear direcciones en servidor web o Apache podría ser un mejor título) … sin embargo, no fue por este comentario que vine aquí de nuevo, vuelve a leer la respuesta por favor. Además de los comentarios al principio, encontrará algo más interesante al final.
iptables -A INPUT -s 117.25.128.0/24 -j DROP
pero eso tampoco ‘ lo bloqueó.-I INPUT
inserta la nueva regla en la parte superior de la cadena INPUT.-A INPUT
lo agrega al final de la cadena. Si-A INPUT
no ‘ no funcionó, debe haber alguna otra regla anteriormente en la cadena que permitiera esos paquetes.