====== 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
* banovator.sh
* vycuc.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 ###
#!/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:
IPVolitelný 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 [[banana_pi_m2u:lighttpd:banovator_web|webík]] který je ale mimo téma této stránky