• User Attivo

    Evitare che un solo utente consumi tutte le risorse

    salve , probabilmente la domanda sarà banale per voi ma per me non lo è.

    Siccome ultimamente mi capita spesso di essere in un certo senso "attaccato" da utenti ( a volte reali , a volte spambot ) che effettuano un elevato numero di richieste di pagine in pochissimo tempo rallentando notevolmente il sistema ( e un paio di volte mandandolo pure in palla ) , mi chiedevo se fosse possibile settare qualche impostazione che limiti le risorse consumate da ciascun utente nell'unità di tempo.

    grazie


  • Moderatore

    Su linux puoi usare iptables per limitare il numero di richieste http in un determinato arco di tempo.


  • User Newbie

    Ciao paolino, potresti essere più preciso .... quali regole vanno aggiunte ad iptables per far in modo che non ci sia quest'abuso di risorse? :mmm:


  • Moderatore

    Posto un esempio così si capisce meglio

    
    iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
    
    iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
    
    

    INPUT ovviamente dice di applicare la regola ai pacchetti in ingresso ( di cui le richieste http fanno parte )

    port 80 ovviamente si riferisce alla porta del server apache

    -i eth0 è l'interfaccia di rete del server

    i punti importanti sono seconds che indica il lasso di tempo in cui effettuare il conteggio delle richieste

    il numero delle richieste è espresso da hitcount

    hitcount 4 dice in sostanza che appena arriviamo alla quarta richiesta da parte di un determinato ip, droppiamo i pacchetti provenienti da quell'ip

    in pratica questo significa che accettiamo 3 richieste al minuto da ogni ip


  • User Attivo

    grazie mille , risposta utilissima .. ma una volta che l'utente viene bloccato e possibile scegliere quale errore generare? E il minuto successivo può riprendere a navigare per essere bloccato ancora al nuovo superamento della soglia? Oppure è bloccato a tempo indeterminato?

    Sarebbe comodo rimandarlo ad una pagina di avviso dove si dice che la navigazione è stata temporaneamente sospesa per eccessivo consumo di risorse.


  • Moderatore

    Impostare una pagina di avviso non ti aiuta, perchè ti costringe non solo ad accettare la richiesta http dell'utente ma pure a mandargli indietro l'html della pagina di avviso.

    Il sistema invece funziona bandendo tutte le richieste extra fatte nel lasso di tempo specificato.

    Per esempio impostare --seconds 10 --hitcount 20 è un ottimo compromesso. In sostanza si tratta di calarsi nei panni del browser e del sito web.

    Se un sito web ha 30 gif all'interno, è ovvio che il browser cercherà di scaricarne 3-4 in parallelo. E' chiaro che se il browser tenta di scaricarle tutt'e 30 in parallelo, beh, di questo passo poche centinaia di utenti manderanno il server a farsi benedire.

    L'utente di fatto non vede un'interruzione del servizio da parte tua, bensì vede un rallentamento del sito.

    Se prima impiega 3 secondi a caricare una pagina con 200 gif, impostando il limite l'utente impiegherà 15 secondi a caricare la stessa pagina.

    E' per questo che bisogna studiare attentamente quali parametri scegliere per seconds e hitcount.


  • User Attivo

    ti ringrazio di nuovo , purtroppo avendo il sito su un server VPS gestito tramite Plesk ( hosting aziende italia ) dall'assistenza ci hanno detto che non possiamo agire direttamente su IPtable a questo livello di dettaglio, ma dobbiamo accontentarci delle modalità di configurazione offerte da pannello plesk > modulii > firewall ( in pratica bloccare qualche IP o poco più ).

    Giusto per sentire due campane , visto che sei molto preparato e disponibile , ti risulta vera questa informazione?

    Grazie.


  • Moderatore

    Mi pare strano. Ho avuto in passato vps con plesk ed è vero che plesk non permette di fare cose del genere, però se hai accesso ssh all'account root puoi fare quello che ti pare da terminale.


  • User Newbie

    Ciao paolino, ho provato ad accedere da ssh ma non ha funzionato perchè nel firewall ha delle restizioni sull'ssh accetta connessioni solo da un ip. Potrei sboccare quella regola e configurarlo da ssh poi la riblocco. Provo e poi ti faccio sapere .... ho una domanda da farti:

    come faccio a creare un blocco con uno scrool dove mettere un testo lungo, come quello che hai inserito tu per le regole dell'iptables? :mmm:


  • Moderatore

    Blocco? quelle sono due righe separate

    dai entrambi i comandi e iptables li memorizza nel suo file di configurazione


  • User Attivo

    riprendo questa discussione perché il problema continua a persistere e anzi sta assumendo aspetti grotteschi : la nostra azienda di hosting non ci permette di accedere al VPS da Shell e quindi non possiamo agire su IPtable con i comandi che ci sono stati indicati , ma dobbiamo limitarci all'interfaccia firewall di plesk che permette soltanto di bloccare singoli IP o singoli hostname.

    Fortunatamente gli "attacchi" ora provengono per lo più da IP statici ma , cosa davvero strana , se prima si trattava di IP esteri per lo più russi , ora si tratta di IP italiani riconducibili ad aziende serie ( finora due banche , una multinazionale del Nord Italia e .. udite udite , la rete aziendale di un nostro fornitore ).

    Per questo ho messo la parola "attacchi" fra parentesi e sinceramente non ci capisco + niente perché non mi è mai successo nulla di simile : o i malintenzionati hanno acceso ai PC di queste aziende oppure è il mio sistema ad avere qualcosa che non va. Infatti leggendo i log , questi IP di fatto richiedono più volte nell'arco di un secondo la stessa risorsa , come se ci fosse una sorta di loop fra il loro browser e il mio sito.

    Altro dato molto strano è che l'uso di risorse ( CPU e banda ) sale vertiginosamente durante questi "attacchi" , ma solamente il frontend del sito ( joomla ) diventa tutto bianco , mentre il backend continua a funzionare. Il tutto comunque si risolve riavviando Apache.

    C'è qualche esperto che sarebbe disposto a dare un'occhiata in privato ai miei log per studiare questo strano "fenomeno"?


  • Moderatore

    @oronzo_canà said:

    riprendo questa discussione perché il problema continua a persistere e anzi sta assumendo aspetti grotteschi : la nostra azienda di hosting non ci permette di accedere al VPS da Shell e quindi non possiamo agire su IPtable con i comandi che ci sono stati indicati , ma dobbiamo limitarci all'interfaccia firewall di plesk che permette soltanto di bloccare singoli IP o singoli hostname.

    Mi sa che è ora di cambiare hoster 😄

    Fortunatamente gli "attacchi" ora provengono per lo più da IP statici ma ,

    Il problema è che non è detto che continuino così. L'uso di ip statici può dipendere dal fatto che hanno compromesso server o comunque macchine always on e/o con ip statico. Appena blocchi quelli passeranno ad altri bot che potrebbero benissimo essere dei normali pc con ip dinamici.

    cosa davvero strana , se prima si trattava di IP esteri per lo più russi , ora si tratta di IP italiani riconducibili ad aziende serie ( finora due banche , una multinazionale del Nord Italia e .. udite udite , la rete aziendale di un nostro fornitore ).

    Forse vogliono aumentare l'efficienza del DDOS.

    Per questo ho messo la parola "attacchi" fra parentesi e sinceramente non ci capisco + niente perché non mi è mai successo nulla di simile : o i malintenzionati hanno acceso ai PC di queste aziende oppure è il mio sistema ad avere qualcosa che non va. Infatti leggendo i log , questi IP di fatto richiedono più volte nell'arco di un secondo la stessa risorsa , come se ci fosse una sorta di loop fra il loro browser e il mio sito.

    Comportamento normale per dei bot che cercano vulnerabilità oppure per dei DDOSer. Il fatto che siano usati IP di aziende serie non significa nulla, pensa che 3 anni fa mi imbattei nei PC e nei server appartenenti ad un noto partito politico italiano e tutti pieni zeppi di spyware. No dico, politici spiati a go-go, è triste ma è questo lo stato della sicurezza informatica in Italia e non solo.

    In sostanza imho non è un problema del tuo sito ma stai semplicemente subendo degli attacchi volti ad indagare la struttura della tua rete o dell'intera rete dell'hoster oppure a bloccare il sito.

    Altro dato molto strano è che l'uso di risorse ( CPU e banda ) sale vertiginosamente durante questi "attacchi" , ma solamente il frontend del sito ( joomla ) diventa tutto bianco , mentre il backend continua a funzionare. Il tutto comunque si risolve riavviando Apache.

    Puoi mitigare il problema usando il caching delle pagine più richieste ma dubito che abbia effetti a lungo termine.

    C'è qualche esperto che sarebbe disposto a dare un'occhiata in privato ai miei log per studiare questo strano "fenomeno"?

    Posso darti una mano se vuoi, però la soluzione è esclusivamente quella di usare iptables per limitare il numero di richieste al secondo dei client. In alternativa la soluzione sarebbe installare un firewall hardware e secondo me il tuo hoster vuole proprio farti acquistare quel servizio perciò fa tanto il prezioso sull'accesso ssh al vps.

    P.S. lo dico per esperienza, perchè anni fa mi sono ritrovato nella tua stessa situazione ( avendo siti commerciali di natura molto sensibile e in settori dove la concorrenza ama giocare sporco ) e ho risolto filtrando le richieste dei client. Ovviamente la mia fortuna è stata di non avere contro una grossa organizzazione altrimenti avrebbero potuto saturare l'intera banda del provider, ma in quel senso si sarebbero scontrati col provider stesso.