mod_slotlimit

mod_slotlimit e' un modulo del web server Apache che consente di gestire le risorse utilizzate da ogni singolo sito ospitato permettendo di allocare dinamicamente o staticamente gli slot del servizio web.

Questa e' la procedura per compilare il codice sorgente ed installarlo:

Per compilare mod_slotlimit viene utilizzata l’applicazione ‘apxs2′ (APache eXtension). Se non e’ presente nel vostro sistema dovrete installarla. Per chi utilizza la distribuzione Debian bastera’ digitare “apt-get install apache2-prefork-dev”. Utilizzando la distribuzione CentOS GNU/Linux invece, il comando da eseguire e' "yum install httpd-devel"

Scarichiamo dunque il codice da questo sito:

http://sourceforge.net/projects/mod-slotlimit/

Potrete farlo da riga da comando con il software "wget"

wget http://downloads.sourceforge.net/project/mod-slotlimit/mod-slotlimit/1.3/mod_slotlimit-1.3.tar.gz

Adesso e' necessario decomprimere l'archivio, compilare il software ed installarlo. Di seguito vengono riportati i comandi che dovranno essere digitati:

tar zxvf mod_slotlimit-1.3.tar.gz
cd mod_slotlimit-1.3
make
make install

Dobbiamo successivamente aggiornare il file di configurazione del web server (solitamente /etc/apache2/httpd.conf oppure /etc/httpd/httpd.conf) aggiungendo la direttiva LoadModule; Serve per far caricare il modulo all'avvio del servizio.

vi /etc/apache2/httpd.conf

[...]
LoadModule slotlimit_module /usr/lib/apache2/modules/mod_slotlimit.so

Vediamo adesso come configurare mod_slotlimit.

Queste sono le direttive supportate dal modulo:

AvailableSlotsPercent - Il modulo inizia a limitare i siti che monopolizzano le risorse del server quando e' rimasta libera solamente la percentuale di slot specificata. Cio' garantisce che su un server dove sono ospitati molti domini, siti vittima di un attacchi oppure mal programmati possano impedire il corretto funzionamento del web server. Per disabilitare questa features bastera' impostare a 0 il valore;
MaxConnectionsPerSite - Il numero di slot che puo' utilizzare ogni sito. Questo valore viene impostato per ciascun virtualhost.
CustomLimitsFile - Utilizzando questa direttiva puoi specificare limiti personalizzati per ogni sito ospitato, potendo cosi' penalizzare o privilegiare solamente determinati domini. L'argomento di CustomLimitsFile e' il persorso di un file, nel quale devono essere memorizzati (riga per riga) il nome del sito ed il numero di slot utilizzabili. Puoi inserire commenti aggiungendo il carattere # ad inizio riga. Il formato del file e' il seguente:
..
..
www.sito1.it 10
# questo e' un commento
www.sito2.com 35
..
..
ClientIpLimit - Il numero massimo di connessioni concorrenti effettuate da uno stesso indirizzo ip
ForceVhostName - Forza il vhost hostname nello scoreboard. In alcune circostanze, ad esempio utilizzando mass virtual host, non e' possibile verificare verso quale sito sono effettuate le connessioni. In questo caso nello scoreboard sara' memorizzato solamente il nome del server; Potrete verificarlo utilizzando mod-status. Impostando ad 'On' il valore di questa direttiva, risolverete il problema.
CustomErrMsg - Il messaggio di errore che verra' visualizzato agli utenti momentaneamente bloccati.

Di seguito una configurazione di esempio

[...]
<IfModule mod_slotlimit.c>
AvailableSlotsPercent 10
MaxConnectionsPerSite 40
ClientIpLimit 30
CustomLimitsFile /etc/apache2/mod_slotlimit.rules
ForceVhostName Off
CustomErrMsg "Connessione non accettata! Sono attivi molti accessi simultanei dall'indirizzo ip associato alla tua postazione. Se il problema persiste contattare postmaster@sito.ext"
</IfModule>
[...]

Per applicare le nuove impostazioni e' necessario riavviare apache2:

/etc/init.d/apache2 (in Debian e Ubuntu)

/etc/init.d/httpd (In CentOS e Fedora)