mirror of
https://github.com/mail-in-a-box/mailinabox.git
synced 2025-04-21 03:02:09 +00:00
dshield
This commit is contained in:
parent
adf7ca25ea
commit
10aef791d7
54
dshield
Normal file
54
dshield
Normal file
@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
##
|
||||
## Add the top 20 IP blocks that have been reported by DShield
|
||||
##
|
||||
## /etc/cron.daily/dshield
|
||||
##
|
||||
## Author: Alon "ChiefGyk" Ganon
|
||||
## https://alonganon.info
|
||||
## alon@ganon.me
|
||||
|
||||
datadir=/tmp
|
||||
|
||||
## Get default settings of fail2ban (optional?)
|
||||
[ -r /etc/default/fail2ban ] && . /etc/default/fail2ban
|
||||
|
||||
umask 000
|
||||
blacklistf=$datadir/dshield.txt
|
||||
|
||||
mv -vf $blacklistf $blacklistf.last
|
||||
|
||||
badlisturls="http://feeds.dshield.org/block.txt"
|
||||
|
||||
# Create the chain if it doesn't exist. Harmless if it does.
|
||||
iptables -vN dshield
|
||||
|
||||
# Grab list(s) at http://feeds.dshield.org/block.txt . Block.
|
||||
echo "Adding new blocks:"
|
||||
curl -s http://feeds.dshield.org/block.txt \
|
||||
|sort -u \
|
||||
|tee $blacklistf \
|
||||
|grep -v '^#\|:' \
|
||||
|while read IP; do iptables -I dshield 1 -s $IP -j DROP; done
|
||||
|
||||
|
||||
|
||||
# Which listings had been removed since last time? Unblock.
|
||||
echo "Removing old blocks:"
|
||||
if [[ -r $blacklistf.diff ]]; then
|
||||
# comm is brittle, cannot use sort -rn
|
||||
time comm -23 $blacklistf.last $blacklistf \
|
||||
|tee $blacklistf.delisted \
|
||||
|grep -v '^#\|:' \
|
||||
|while read IP; do iptables -w -D dshield -s $IP -j DROP || iptables -wv -D dshield -s $IP -j LOGDROP; done
|
||||
|
||||
fi
|
||||
|
||||
|
||||
# prepare for next time.
|
||||
diff -wbay $blacklistf.last $blacklistf > $blacklistf.diff
|
||||
|
||||
# save IPtable rules
|
||||
iptables-save > /etc/iptables.up.rules
|
||||
|
||||
exit
|
Loading…
Reference in New Issue
Block a user