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:
#!/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 ###
#!/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
#!/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