fabio10 10 Report post Posted February 23, 2011 Ciao ! Ho un grosso problema con un server dedicato e vorrei un consiglio su come risolvere questo problema. Spesso dei simpatici bot si diverto a richiedere contemporaneamente più di 20 pagine del mio blog wordpress (queste pagine fanno riferimento agli archivi dei post quindi molto "costose" da generare) e purtroppo il server si blocca inesorabilmente. Si possono bloccare gli ip che mandano più di 5 GET contemporaneamente verso pagine diverse? Ho già provato mod_evasive, ma purtroppo questo prende in considerazione anche le GET verso gli altri file (css, jpg etc.), e non posso settarlo con valori inferiori a 50 (altrimenti non posso far scaricare a nessuno le numerose immagini presenti in alcune pagine). Ecco un esempio di log che sovraccarica il server: 195.210.94.33 - - [23/Feb/2011:15:07:11 +0100] "GET /2008/01/12/giorgio-gaber/ HTTP/1.1" 200 44384 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/ HTTP/1.1" 200 103585 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/atom/ HTTP/1.1" 200 106954 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/09/ HTTP/1.1" 200 41645 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/11/ HTTP/1.1" 200 42660 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /xmlrpc.php HTTP/1.1" 200 42 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/08/ HTTP/1.1" 200 39437 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2011/02/ HTTP/1.1" 200 38643 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2011/01/ HTTP/1.1" 200 45978 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/12/ HTTP/1.1" 200 42726 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/10/ HTTP/1.1" 200 42690 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/06/ HTTP/1.1" 200 42130 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/07/ HTTP/1.1" 200 44876 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2009/10/ HTTP/1.1" 200 45470 195.210.94.33 - - [23/Feb/2011:15:07:20 +0100] "GET /wp-includes/js/tw-sack.js?ver=1.6.1 HTTP/1.1" 200 3619 195.210.94.33 - - [23/Feb/2011:15:07:20 +0100] "GET /2008/04/ HTTP/1.1" 200 46051 195.210.94.33 - - [23/Feb/2011:15:07:21 +0100] "GET /wp-content/themes/super-adsense-music/js/ajax_comments.js HTTP/1.1" 200 968 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/rss/ HTTP/1.1" 200 6163 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET /wp-content/plugins/nextgen-gallery/css/ngg_shadow.css?ver=1.0.0 HTTP/1.1" 200 6205 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET / HTTP/1.1" 200 43596 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET /min/f=wp-includes/js/jquery/jquery.js HTTP/1.1" 200 72054 Share this post Link to post Share on other sites
Rebel 10 Report post Posted February 23, 2011 Ciao ! Ho un grosso problema con un server dedicato e vorrei un consiglio su come risolvere questo problema.Spesso dei simpatici bot si diverto a richiedere contemporaneamente più di 20 pagine del mio blog wordpress (queste pagine fanno riferimento agli archivi dei post quindi molto "costose" da generare) e purtroppo il server si blocca inesorabilmente. Si possono bloccare gli ip che mandano più di 5 GET contemporaneamente verso pagine diverse? Ho già provato mod_evasive, ma purtroppo questo prende in considerazione anche le GET verso gli altri file (css, jpg etc.), e non posso settarlo con valori inferiori a 50 (altrimenti non posso far scaricare a nessuno le numerose immagini presenti in alcune pagine). Ecco un esempio di log che sovraccarica il server: 195.210.94.33 - - [23/Feb/2011:15:07:11 +0100] "GET /2008/01/12/giorgio-gaber/ HTTP/1.1" 200 44384 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/ HTTP/1.1" 200 103585 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/atom/ HTTP/1.1" 200 106954 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/09/ HTTP/1.1" 200 41645 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/11/ HTTP/1.1" 200 42660 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /xmlrpc.php HTTP/1.1" 200 42 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/08/ HTTP/1.1" 200 39437 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2011/02/ HTTP/1.1" 200 38643 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2011/01/ HTTP/1.1" 200 45978 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/12/ HTTP/1.1" 200 42726 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/10/ HTTP/1.1" 200 42690 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/06/ HTTP/1.1" 200 42130 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/07/ HTTP/1.1" 200 44876 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2009/10/ HTTP/1.1" 200 45470 195.210.94.33 - - [23/Feb/2011:15:07:20 +0100] "GET /wp-includes/js/tw-sack.js?ver=1.6.1 HTTP/1.1" 200 3619 195.210.94.33 - - [23/Feb/2011:15:07:20 +0100] "GET /2008/04/ HTTP/1.1" 200 46051 195.210.94.33 - - [23/Feb/2011:15:07:21 +0100] "GET /wp-content/themes/super-adsense-music/js/ajax_comments.js HTTP/1.1" 200 968 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/rss/ HTTP/1.1" 200 6163 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET /wp-content/plugins/nextgen-gallery/css/ngg_shadow.css?ver=1.0.0 HTTP/1.1" 200 6205 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET / HTTP/1.1" 200 43596 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET /min/f=wp-includes/js/jquery/jquery.js HTTP/1.1" 200 72054 utilizza iptables e limita il numero di connessioni per x secondi. una cosa di questo tipo (ps. copia/incolla a tuo rischio e pericolo): #!/bin/bash IPTABLES=/sbin/iptables CHAINNAME="INPUT" HTTPDS=30 HTTPDH=19 #HTTPD protection $IPTABLES -N HTTPD_CHECK $IPTABLES -A $CHAINNAME -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 80 -m state --state NEW -j HTTPD_CHECK $IPTABLES -A HTTPD_CHECK -m recent --set --name HTTPD $IPTABLES -A HTTPD_CHECK -m recent --update --seconds $HTTPDS --hitcount $HTTPDH --name HTTPD -j LOG --log-prefix "DDOS: " --log-level debug $IPTABLES -A HTTPD_CHECK -m recent --update --seconds $HTTPDS --hitcount $HTTPDH --name HTTPD -j DROP Share this post Link to post Share on other sites
fabio10 10 Report post Posted February 23, 2011 utilizza iptables e limita il numero di connessioni per x secondi. una cosa di questo tipo (ps. copia/incolla a tuo rischio e pericolo): #!/bin/bash IPTABLES=/sbin/iptables CHAINNAME="INPUT" HTTPDS=30 HTTPDH=19 #HTTPD protection $IPTABLES -N HTTPD_CHECK $IPTABLES -A $CHAINNAME -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 80 -m state --state NEW -j HTTPD_CHECK $IPTABLES -A HTTPD_CHECK -m recent --set --name HTTPD $IPTABLES -A HTTPD_CHECK -m recent --update --seconds $HTTPDS --hitcount $HTTPDH --name HTTPD -j LOG --log-prefix "DDOS: " --log-level debug $IPTABLES -A HTTPD_CHECK -m recent --update --seconds $HTTPDS --hitcount $HTTPDH --name HTTPD -j DROP Grazie per la risposta! Così però blocco tutte le connessioni indipendentemente se sono per immagini, css etc. Si potrebbero bloccare solo quelle verso pagine e non gli altri file ? Share this post Link to post Share on other sites
cbs 20 Report post Posted February 24, 2011 Grazie per la risposta!Così però blocco tutte le connessioni indipendentemente se sono per immagini, css etc. Si potrebbero bloccare solo quelle verso pagine e non gli altri file ? Non con iptables che lavora a livello di IP e porta. Scusa ma come mai nei log che ci riporti non compaiono gli UserAgent? Magari già con un htaccess puoi bloccare in parte questi bot. Share this post Link to post Share on other sites
fabio10 10 Report post Posted February 24, 2011 Non con iptables che lavora a livello di IP e porta. Scusa ma come mai nei log che ci riporti non compaiono gli UserAgent? Magari già con un htaccess puoi bloccare in parte questi bot. Purtroppo spesso non hanno user agent di bot, ma hanno user agent di normali browser Share this post Link to post Share on other sites
cxcs 10 Report post Posted February 24, 2011 Ciao Fabio10, sostanzialmente per difenderti da questo tipo di problema puoi adottare queste precauzioni : - utilizzare il connection tracking di iptables per bloccare gli ip che generano troppe connessioni in un determinato lasso di tempo verso la tua porta 80 - utilizzare il modulo hashlimit di iptables - installare mod_antiloris - installare mod_security2 e utilizzare la direttiva SecReadStateLimit - utilizzare mod_security per intercettare i DoS HTTP - sistemare Nginx davanti ad Apache per assorbire il carico Generalmente con un iptables + antiloris o mod_security dovresti cavartela.Il problema è che dopo la fama mainstream che ha avuto LOIC sono diventati tutti bravi a fare gli HTTP DoS e allora dobbiamo guardarci le spalle più di prima. Un saluto,ciao. Share this post Link to post Share on other sites
FlameNetworks 26 Report post Posted February 24, 2011 Ciao ! Ho un grosso problema con un server dedicato e vorrei un consiglio su come risolvere questo problema.Spesso dei simpatici bot si diverto a richiedere contemporaneamente più di 20 pagine del mio blog wordpress (queste pagine fanno riferimento agli archivi dei post quindi molto "costose" da generare) e purtroppo il server si blocca inesorabilmente. Si possono bloccare gli ip che mandano più di 5 GET contemporaneamente verso pagine diverse? Ho già provato mod_evasive, ma purtroppo questo prende in considerazione anche le GET verso gli altri file (css, jpg etc.), e non posso settarlo con valori inferiori a 50 (altrimenti non posso far scaricare a nessuno le numerose immagini presenti in alcune pagine). Ecco un esempio di log che sovraccarica il server: 195.210.94.33 - - [23/Feb/2011:15:07:11 +0100] "GET /2008/01/12/giorgio-gaber/ HTTP/1.1" 200 44384 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/ HTTP/1.1" 200 103585 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/atom/ HTTP/1.1" 200 106954 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/09/ HTTP/1.1" 200 41645 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/11/ HTTP/1.1" 200 42660 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /xmlrpc.php HTTP/1.1" 200 42 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/08/ HTTP/1.1" 200 39437 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2011/02/ HTTP/1.1" 200 38643 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2011/01/ HTTP/1.1" 200 45978 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/12/ HTTP/1.1" 200 42726 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/10/ HTTP/1.1" 200 42690 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/06/ HTTP/1.1" 200 42130 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2010/07/ HTTP/1.1" 200 44876 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /2009/10/ HTTP/1.1" 200 45470 195.210.94.33 - - [23/Feb/2011:15:07:20 +0100] "GET /wp-includes/js/tw-sack.js?ver=1.6.1 HTTP/1.1" 200 3619 195.210.94.33 - - [23/Feb/2011:15:07:20 +0100] "GET /2008/04/ HTTP/1.1" 200 46051 195.210.94.33 - - [23/Feb/2011:15:07:21 +0100] "GET /wp-content/themes/super-adsense-music/js/ajax_comments.js HTTP/1.1" 200 968 195.210.94.33 - - [23/Feb/2011:15:07:12 +0100] "GET /feed/rss/ HTTP/1.1" 200 6163 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET /wp-content/plugins/nextgen-gallery/css/ngg_shadow.css?ver=1.0.0 HTTP/1.1" 200 6205 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET / HTTP/1.1" 200 43596 195.210.94.33 - - [23/Feb/2011:15:07:22 +0100] "GET /min/f=wp-includes/js/jquery/jquery.js HTTP/1.1" 200 72054 Dai un'occhiata anche a fail2ban: Fail2ban Ciao, F. Share this post Link to post Share on other sites
fabio10 10 Report post Posted February 24, 2011 Generalmente con un iptables + antiloris o mod_security dovresti cavartela.Il problema è che dopo la fama mainstream che ha avuto LOIC sono diventati tutti bravi a fare gli HTTP DoS e allora dobbiamo guardarci le spalle più di prima. Un saluto,ciao. Grazie per i consigli :approved: Dai un'occhiata anche a fail2ban: Fail2ban Ciao, F. Con una espressione regolare potrei far bloccare a fail2ban proprio le GET verso le pagine e non verso le immagini. Credo che proverò così, grazie! Share this post Link to post Share on other sites
FlameNetworks 26 Report post Posted February 25, 2011 Grazie per i consigli :approved: Con una espressione regolare potrei far bloccare a fail2ban proprio le GET verso le pagine e non verso le immagini. Credo che proverò così, grazie! Facci sapere com'è andata. :approved: Share this post Link to post Share on other sites