#!/bin/sh # Save the iptables chain BLACKLIST DROP lines for restarting sshblack # This script should be run regularly from crontab, for example: # */5 * * * * /usr/local/sbin/sshblack-save-state CHAIN=BLACKLIST SSHBLACK_HOME=/var/lib/sshblack RESTART=$SSHBLACK_HOME/restart.sh if test ! -d $SSHBLACK_HOME then echo Creating SSHBLACK_HOME directory $SSHBLACK_HOME mkdir -v -p $SSHBLACK_HOME fi # Get the BLACKLIST DROP lines and create iptables commands. # Use sort and uniq to avoid duplicates. # /sbin/iptables -S $CHAIN | grep DROP | sort -k 4 -n | uniq | sed 's/^/iptables -w /' > $SSHBLACK_HOME/restart.sh.NEW # Using firewall-cmd: /usr/bin/firewall-cmd --direct --add-rule ipv4 filter BLACKLIST 0 -s -j DROP echo "#!/bin/bash" > $SSHBLACK_HOME/restart.sh.NEW chmod 755 $SSHBLACK_HOME/restart.sh.NEW /usr/bin/firewall-cmd --direct --get-all-rules | grep DROP | sort -k 4 -n | uniq | sed 's/^/firewall-cmd --direct --add-rule /' >> $SSHBLACK_HOME/restart.sh.NEW # Replace restart.sh only if the new file is non-empty if test -s $SSHBLACK_HOME/restart.sh.NEW then if test -s $SSHBLACK_HOME/restart.sh then # Make a backup of the old $RESTART file rm -f $RESTART.BAK mv $RESTART $RESTART.BAK fi mv $RESTART.NEW $RESTART fi