Banovátor

Sada scriptů nahrazující fail2ban na ssh, jelikož fail2ban měl problémy reagovat včas a nebyl schopen odfiltrovat burst útoky.

Do /etc/rc.local přidat:

# zinicializujeme banovátor
/usr/local/bin/banovator-init.sh

TODO: Předělat na ifup verzi

post-up /usr/local/bin/script.sh

a následně vytvořit tyhle tři spustitelné soubory v /usr/local/bin:

banovator-init.sh
#!/bin/bash
 
##########################################
#  Blokování SSH po 3 hitech na 5 minut  #
##########################################
 
dev_inet="eth0"
 
# Výjimky které neblokovat
iptables -A INPUT -p tcp --destination-port 22 -i $dev_inet -s 89.29.73.229 -j ACCEPT # Jeffrey
iptables -A INPUT -p tcp --destination-port 22 -i $dev_inet -s 194.228.12.30 -j ACCEPT # Prace
 
# Hlavní blokátor
iptables -N SshLogBlock
iptables -A INPUT -p tcp --destination-port 22 -i $dev_inet -m state --state NEW -m recent --update --seconds 300 --hitcount 3 -j SshLogBlock
iptables -A INPUT -p tcp --destination-port 22 -i $dev_inet -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --destination-port 22 -i $dev_inet -j ACCEPT
iptables -A SshLogBlock -j LOG --log-prefix "BLOCKED-SSH: " --log-ip-options
iptables -A SshLogBlock -j DROP
 
### END blokování SSH ###
banovator.sh
#!/bin/bash
 
iptables -D INPUT -j bany 2> /dev/null
iptables -F bany
iptables -X bany 2> /dev/null
iptables -N bany
iptables -I INPUT 1 -j bany
 
cat /etc/banned-ip | while read ipka comment; do
        iptables -A bany -s $ipka -j DROP
done
vycuc.sh
#!/bin/bash
grep -v pam_unix /var/log/auth.log | grep -v sudo | grep -E [[:digit:]]\.[[:digit:]]\.[[:digit:]]\.[[:digit:]] > /tmp/short-auth.log
grep -v pam_unix /var/log/auth.log.1 | grep -v sudo | grep -E [[:digit:]]\.[[:digit:]]\.[[:digit:]]\.[[:digit:]] > /tmp/short-auth-old.log
chmod 644 /tmp/short-auth*

Následně vytvořit soubor /etc/banned-ip. Tento soubor je nyní prázdný ale následně do něj budeme kopírovat spamující IP. Formát řádku:

IP<tab či mezera>Volitelný komentář

Komentář je volitelný a je scripty úplně ignorován. Slouží jen adminům. Dále je zapotřebí modifikovat /etc/rsyslog.conf následujícím způsobem:

###############
#### RULES ####
###############
 
#
# First some standard log files.  Log by facility.
#
:msg, contains, "BLOCKED-SSH" -/var/log/blocked-ssh.log

a restartovat rsyslog:

sudo /etc/init.d/rsyslog restart

spustit ručně:

banovator-init.sh

a přidat do cronu následující řádky:

*/5 *   * * *   root    /usr/local/bin/vycuc.sh &> /dev/null
*/5 *   * * *   root    /usr/local/bin/banovator.sh &> /dev/null

Tímto máme základní instalaci hotovou. Celek je funkční, do /var/log/blocked-ssh.log se logují veškeré blokované přístupy na SSH. Je na ctěném užovatelstvu jak si vylistuje které IP spamují. Mám na to webík který je ale mimo téma této stránky