Bloccare IP di determinati paesi via IPtables

Forse non tutti sanno che i vari indirizzi ip non vengono assegnati a caso, ma ogni paese, ogni stato, ha determinate classi di IP che possono assegnare a chi ne fa richiesta.

Molte volte capita che qualche rompicoglioni furbetto, si accorga di un possibile exploit sul nostro server prima di noi, ed è naturale quindi vedersi arrivare ondate di attacchi ogni giorno nel vano tentativo di sfondare qualche backdoor.

Sebbene sappiamo che gli ip che vediamo arrivare non saranno mai quelli reali dell’attaccante, per quanti proxy possa utilizzare con un pò di sana analisi riusciremo a circoscrivere le zone dalle quali partono gli attacchi.

In questo caso ci viene in aiuto iptables, conoscendo infatti il range di ip di quel particolare stato, possiamo mettere a punto un filtro che faccia fallire tutti i tentativi d’attacco.

Prima di tutto dobbiamo conoscere la sigla del paese in formato ISO 1660, qui possiamo ottenere una lista completa.

Poniamo nel nostro esempio che gli attacchi provengano dall’Argentina e dall’Afghanistan, i codici ISO in questo caso saranno rispettivamente AR e AF tramite questa pagina settando un opportuna query, possiamo ottenere la lista di tutte le classi dei due paesi:

http://blogama.org/country_query.php?country=AF,AR

Controllate il sorgente della pagina per avere tutti gli ip in lista verticale e non in maniera sequenziale.

Teniamo a mente che durante la prima settimana di ogni mese, questi database vengono aggiornati, mentre per ottenere il database completo di tutti gli stati in formato SQL possiamo andare qui.

Tornando al nostro esempio, adesso non ci resta che creare delle regole di iptables apposite per queste classi, a mano sarebbe un suicidio lo so, possiamo infatti scriptare la procedura come in questo esempio, che ci consente di:

  1. Scaricare la lista completa delle classi dei paesi interessati
  2. Creare le apposite regole di iptables

#!/bin/bash
###settare la variabile countries con i codici ISO dei paesi separati dalla sola virgola###
COUNTRIES="AK,AR"
WORKDIR="/root"
#######################################
cd $WORKDIR
wget -c –output-document=iptables-blocklist.txt http://blogama.org/country_query.php?country=$COUNTRIES
if [ -f iptables-blocklist.txt ]; then
iptables -F
BLOCKDB="iptables-blocklist.txt"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
iptables -A INPUT -s $i -j DROP
iptables -A OUTPUT -d $i -j DROP
done
fi
rm $WORKDIR/iptables-blocklist.txt

notate bene che lo script pulisce tutte le regole di iptables prima di applicare i filtri, adattatelo quindi alle vostre esigenze.

Che si divertano ora ad attaccare quanto vogliono ;)


Altri articoli che potrebbero interessarti

Come filtrare a livello 7 con iptables Uno dei problemi maggiori che i sysadmin si trovano ad affrontare è quello di instaurare un ottimo filtraggio...
Gestiamo il nostro firewall con fwbuilder Ieri notte mentre cercavo una maniera un pò più semplice per gestire l'iptables del mio server mi sono...
Il paese dei balocchi Mi sono rotto...stamani esordisco cosi, con un articolo OT con la tematica del blog, ma ho bisogno di...
Creiamo un server DNS con Bind [Parte 2.2° - I file di zona e la risoluzione inversa] Ecco come promesso, la seconda parte della guida ai file di zona e la risoluzione nome host...Partiamo...
Capiamo ed usiamo Iptables – Parte 1° Con oggi parte una delle mie solite guide per principianti del mondo GNU/Linux, questa volta vedremo...

About the Author

M0rF3uS al secolo Alex è un ggiovine 25enne appassionato di informatica e linux. Lavora come Network and System Administrator e nel tempo libero gioca un pò con la sua fotocamera (Canon EOS 1000D) riuscendo a volte, per sbaglio, a fare qualche scatto decente. Completano il corredo, degli hobbies "vorrei ma non posso" ossia l'astronomia e l'astronautica....si è uno di quelli che da grande vorrebbe fare l'astronauta (povero coglione vero?).