Technikus meint, meine ca. 17.000 Einträge in der IP-Tables wären da Schuld
Mir reichen die hier:
#!/bin/bash
_urlIList='
https://lists.blocklist.de/lists/strongips.txt
https://api.blocklist.de/getlast.php?time=24h
https://check.torproject.org/torbulkexitlist
';
### Programm:
umask 177
rulesFile=`mktemp`;
listFile=`mktemp`;
# Holen der bösen IPs
zeilen=0;
for url in ${_urlIList}; do
echo "Action: Hole ${url}";
wget --no-check-certificate -q -O- "${url}" >> $listFile;
zeilen=$(($(wc -l < $listFile)-zeilen));
echo "${zeilen} Zeilen von ${url} geholt.";
if [ 0 -lt $? ]; then
echo "Fehler: Download von $url hat nicht funktioniert";
fi
done
# Test auf Daten, ggf. Abbruch:
if [ 0 -eq `wc -l < $listFile` ]; then
echo "Es konnten keine Daten empfangen werden";
less $listFile;
exit 2;
fi
# Ausfiltern und Liste in Variable laden
ipList=`sort -u -V < "${listFile}" | grep -P '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' | grep -Pv "^[ \t]*$" | tr "\n" ' ';`;
#letztes Komma löschen:
ipList=${ipList:0:${#ipList}-1};
iptables-save > /etc/iptables.rules;
echo -n "# Generated by $0 on " > $rulesFile;
date >> $rulesFile;
echo '*filter' >> $rulesFile;
grep ':INPUT ACCEPT \[' < /etc/iptables.rules >> $rulesFile;
grep ':FORWARD ACCEPT \[' < /etc/iptables.rules >> $rulesFile;
grep ':OUTPUT ACCEPT \[' < /etc/iptables.rules >> $rulesFile;
echo ':f2b-sshd - [0:0]' >> $rulesFile;
echo ':BLOCKLIST - [0:0]' >> $rulesFile;
echo '-A INPUT -j BLOCKLIST' >> $rulesFile;
echo '-A FORWARD -j BLOCKLIST' >> $rulesFile;
echo '-A OUTPUT -j BLOCKLIST' >> $rulesFile;
grep '^-A INPUT -s' < /etc/iptables.rules >> $rulesFile;
# IPs an neue Chain anhängen
for ip in ${ipList}; do
echo -n '-A BLOCKLIST -s ' >> $rulesFile;
echo -n $ip >> $rulesFile;
echo '/32 -j DROP' >> $rulesFile;
done
echo 'COMMIT' >> $rulesFile;
echo -n '# Completed on ' >> $rulesFile;
date >> $rulesFile;
iptables-restore < $rulesFile;
if [ 0 = $? ]; then
iptables-save > /etc/iptables.rules
chmod 644 /tmp/fwlist.txt
fi
rm $rulesFile;
rm $listFile;
iptables-save > /etc/iptables.rules
3x am Tag als Root per cronjob... bei mir arbeitet das, für alle anderen gilt: erst nachdenken, anpassen …