Raketensicherungsautomat: 17.000 Einträge in der IP-Tables ...

Beitrag lesen

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 …