4 069
contributi
(16 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 363: | Riga 363: | ||
== Impostare il ban di IP ostili == | == Impostare il ban di IP ostili == | ||
Per impostare il blocco di un IP è sempre possibile agire manualmente, in questo modo: | |||
<pre> | |||
# iptables -I INPUT -s 192.168.1.100 -j DROP | |||
</pre> | |||
ma l'amministrazione e la gestione manuale dei ban agli indirizzi IP ostili non è praticabile. | |||
<br/> | |||
A questo scopo ci può venire in aiuto uno strumento disponibile nei repository ufficiali di Debian: | |||
<pre> | |||
# apt-get install ipset | |||
</pre> | |||
Una volta installato, occorre creare la lista, che chiameremo ''blacklist'': | |||
<pre> | |||
# ipset create blacklist hash:net maxelem 1000000 | |||
</pre> | |||
Con il comando: | |||
<pre> | |||
# ipset list | |||
</pre> | |||
possiamo vedere l'elenco delle liste già create. | |||
<br/> | |||
A questo punto è possibile aggiungere a mano il primo IP da bannare: | |||
<pre> | |||
# ipset add blacklist 1.1.2.0/24 | |||
# ipset add blacklist 1.1.3.0/24 | |||
</pre> | |||
Controlliamo se i due IP sono stati aggiunti alla lista di ban: | |||
<pre> | |||
# ipset list | |||
Name: blacklist | |||
Type: hash:net | |||
Revision: 6 | |||
Header: family inet hashsize 1024 maxelem 1000000 | |||
Size in memory: 472 | |||
References: 0 | |||
Number of entries: 2 | |||
Members: | |||
1.1.3.0/24 | |||
1.1.2.0/24 | |||
</pre> | |||
Aggiungere a mano tutti gli IP da bannare è un'impresa titanica; meglio affidarsi a liste già costruite, come quelle utilizzate qui di seguito, disponibili sotto licenza GPL. | |||
<br/> | |||
Per prima cosa installiamo un tool per convertire le liste di iBlockList nel formato accettato da Ipset. | |||
<pre> | |||
# apt-get install python-pip curl | |||
</pre> | |||
Quindi recuperiamo uno script che ci permetterà di mantenere aggiornata la nostra lista di IP ostili: | |||
<pre> | |||
# wget -O /usr/local/sbin/update-blacklist.sh https://raw.githubusercontent.com/trick77/ipset-blacklist/master/update-blacklist.sh | |||
# chmod +x /usr/local/sbin/update-blacklist.sh | |||
# mkdir -p /etc/ipset-blacklist | |||
# wget -O /etc/ipset-blacklist/ipset-blacklist.conf https://raw.githubusercontent.com/trick77/ipset-blacklist/master/ipset-blacklist.conf | |||
</pre> | |||
Quindi salviamo l'attuale configurazione di ipset: | |||
<pre> | |||
# ipset save > /etc/ipset-blacklist/ip-blacklist.restore | |||
</pre> | |||
Modifichiamo il file di configurazione adattandolo alle nostre necessità: | |||
<pre> | |||
# nano /etc/ipset-blacklist/ipset-blacklist.conf | |||
</pre> | |||
Impostiamo un cronjob che ogni domenica a mezzanotte aggiornerà le nostre liste: | |||
<pre> | |||
crontab -e | |||
0 0 * * 7 /usr/local/sbin/update-blacklist.sh /etc/ipset-blacklist/ipset-blacklist.conf | |||
</pre> | |||
Aggiungiamo la nuova regola al nostro script iptables: | |||
<pre> | |||
# nano /etc/iptables-firewall.sh | |||
# Imposto le regole ipset | |||
iptables -I INPUT -m set --match-set blacklist src -j DROP | |||
iptables -I FORWARD -m set --match-set blacklist src -j DROP | |||
</pre> | |||
e facciamo in modo che ipset sia impostato correttamente dopo un riavvio, aggiungendo la direttiva: | |||
<pre> | |||
pre-up ipset restore -! < /etc/ipset-blacklist/ip-blacklist.restore | |||
</pre> | |||
alla sezione della scheda di rete principale nel file <tt>/etc/network/interfaces</tt>, stando attenti a inserirla '''''prima''''' della direttiva <tt>pre up</tt> impostata in precedenza per l'avvio dello script di iptables. | |||
<br/> | |||
<br/> | |||
== Sitografia == | == Sitografia == |