Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
|
debian:ssh_autoban [11.07.2015 17:14] pitriss vytvořeno |
debian:ssh_autoban [20.09.2015 11:15] (aktuální) ritchie doplněny popisy skriptů |
||
|---|---|---|---|
| Řádek 3: | Řádek 3: | ||
| Tento soubor scriptů slouží k blokování spamu na ssh portu. | Tento soubor scriptů slouží k blokování spamu na ssh portu. | ||
| + | |||
| + | ===== Cron řádky ===== | ||
| + | ''/etc/crontab''\\ | ||
| + | Skripty se spouštějí každých 5 minut. | ||
| + | |||
| + | <file cron crontab> | ||
| + | */5 * * * * root /usr/local/bin/vycuc.sh &> /dev/null | ||
| + | */5 * * * * root /usr/local/bin/banovator.sh &> /dev/null | ||
| + | </file> | ||
| + | |||
| + | ===== Soubory ===== | ||
| + | |||
| + | |||
| + | ==== rc.local ==== | ||
| + | |||
| + | ''/etc/rc.local''\\ | ||
| + | Tento soubor obsahuje iptables pravidla, která sledují komunikaci na portu 22 a po 3 neúspěšných pokusech zablokují zdrojovou IP adresu na 5 minut a zapíšou tuto IP adresu do logu s prefixem ''BLOCKED-SSH:''. | ||
| + | |||
| + | <file bash rc.local> | ||
| + | ########################################## | ||
| + | # 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 12.34.56.75 -j ACCEPT # AP | ||
| + | |||
| + | # 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 ### | ||
| + | </file> | ||
| + | |||
| + | ==== Banovátor ==== | ||
| + | |||
| + | ''/usr/local/bin/banovator.sh''\\ | ||
| + | Tento soubor nastavuje iptables pravidla tak, aby byly permanentně zablokovány IP adresy z blacklistu v souboru ''/etc/banned-ip''. V tomto seznamu mohou být komentáře volně za IP adresou, skript si s tím poradí. | ||
| + | |||
| + | <file bash 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 | ||
| + | </file> | ||
| + | |||
| + | ==== Nastavení rsyslogu ==== | ||
| + | |||
| + | ''/etc/rsyslog.d/blocked-ssh.conf''\\ | ||
| + | Toto slouží k přesměrování záznamů v logu s prefixem ''BLOCKED-SSH'' do zvláštního souboru, ze kterého potom čerpá PHP stránka z [[debian:ssh_autoban#php_scripty_zobrazujici_pocet_zablokovanych|PHP skriptů]]. | ||
| + | |||
| + | <file bash blocked-ssh.conf> | ||
| + | :msg, contains, "BLOCKED-SSH" -/var/log/blocked-ssh.log | ||
| + | & ~ | ||
| + | </file> | ||
| + | |||
| + | <wrap important>Pozor:</wrap> rsyslog v debianu má pravděpodobně výchozí práva u vytvořených souborů <wrap caution>640</wrap>, což znemožňuje čtení logu uživatelem www-data. Proto je nutné upravit direktivu | ||
| + | $FileCreateMode 0640 | ||
| + | v souboru ''/etc/rsyslog.conf'' na | ||
| + | $FileCreateMode 0644 | ||
| + | nebo tuto direktivu přidat na začátek souboru ''/etc/rsyslog.d/blocked-ssh.conf''. | ||
| + | ==== vycuc.sh ==== | ||
| + | |||
| + | ''/usr/local/bin/vycuc.sh''\\ | ||
| + | Tento skript vypisuje pouze informace týkající se SSH přihlašování z ''/var/log/auth.log'' do ''/tmp/short-auth.log'', slouží to jako podklad pro porovnání s výstupem v logu ''/var/log/blocked-ssh.log'' a je zobrazen na stránce top.php v [[debian:ssh_autoban#php_scripty_zobrazujici_pocet_zablokovanych|PHP skriptech]]. | ||
| + | |||
| + | <file bash 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* | ||
| + | </file> | ||
| + | ==== PHP scripty zobrazující počet zablokovaných ==== | ||
| + | |||
| + | Rozbalit do ''/var/www/'' a poté to je dostupné na adrese ''http://server_address/spameri''. Je k tomu potřeba webserver s nakonfigurovaným php interpreterem, nainstalovaným ''php5'' a ''php5-geoip'' včetně ''geoip-database'' pro výpis země původu spamera. | ||
| + | |||
| + | {{:debian:spameri.tar.gz|spameri.tar.gz}} | ||