iptables

You are currently browsing articles tagged iptables.

Il nano sconcio Nonostante gli unici commenti in questo blog siano stati di spam, ho deciso di eliminarli ugualmente.

Gli ip di provenienza degli spammer non erano, nel mio caso, più di quattro o cinque, così ho deciso di utilizzare la tecnica delle blacklist.

Malgrado assolva al proprio compito, non è sicuramente la tecnica migliore da utilizzare, visto che rischia di bloccare persone che con lo spam nulla hanno a che fare.
Ad esempio si rischia di bloccare ip dinamici, ip di proxy ecc. ecc.

Ad ogni modo se si vuole bloccare un insieme limitato di ip credo sia una tecnica che possa tornare utile.

Si può procedere in diversi modi, ad esempio utilizzando l’.htaccess, negando, o ridirezionando le connessioni al webserver da certi ip, come descritto qui, oppure più radicalmente, utilizzando iptables.

Nel mio caso ho preferito utilizzare iptables.

Il funzionamento è molto semplice, leggo dalla mia blacklist,
/etc/blacklister/blacklist.dat
e imposto per ogni ip due regole di iptables, la prima per loggare il tentativo di accesso, la seconda per bloccare.

Semplice ed efficace.

[c]
#!/bin/bash

# Blacklister
# ===============
#
# ATTENZIONE!
# Questo script non e’ pensato per essere
# usato su un firewall, ma solo su un webserver.
#
# A cosa serve
# ————
# Si prefigge di limitare lo spam in ingresso
# bloccando le connessioni degli
# IP acquisiti come spammer.
#
# Cosa fa
# ——-
# Legge il file blacklist.dat contenente un elenco di ip da
# bloccare uno per riga, e, tramite **iptables** logga
# come SPAM i tentativi di accesso e li blocca.

LOCALFILE=/etc/blacklister/blacklist.dat

IFACE=eth0

# IpTables
IPT=”/sbin/iptables”

# Chain
CHAIN=INPUT

start_firewall()
{
# Blacklist
blacklist=$(cat $LOCALFILE)

# Solo per debug
# set -x

# Carico i moduli necessari
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp

# Azzero le iptable prima di cominciare
stop_firewall

echo -n “Starting firewall:”
block_spam
echo ” done.”
}

block_spam()
{
# Per ogni IP LOG e DROP
for ip in $blacklist
do
$IPT -A $CHAIN -i $IFACE -s $ip -j LOG –log-prefix “SPAM ”
$IPT -A $CHAIN -i $IFACE -s $ip -j DROP
done

}

stop_firewall()
{
echo -n “Stopping firewall:”

$IPT –flush
$IPT -t nat –flush
$IPT -t mangle –flush

$IPT –policy INPUT ACCEPT
$IPT –policy OUTPUT ACCEPT

echo ” done.”
}

case $1 in
start)
start_firewall
;;
stop)
stop_firewall
;;
restart)
start_firewall
;;
*)
echo “Usage: $0 {start|stop|restart}”
exit 1
;;
esac
[/c]

Tags: , ,