sshdfilter

Gondoltam megosztok mindenkivel egy gyórs párparancsos sshdfilter telepítést.
(ez a progi hatékony védelem a brútforszolók ellen)

wget http://www.csc.liv.ac.uk/~greg/sshdfilter-1.5.3.tar.gz
tar -zvxf sshdfilter-1.5.3.tar.gz
cd sshdfilter-1.5.3/source
chmod a+x sshdfilter.pl
mv sshdfilter.pl /usr/local/sbin

/etc/syslog.conf-ba:
auth,authpriv.* |/var/log/sshd.fifo

mkfifo /var/log/sshd.fifo
/etc/init.d/syslogd restart
cd ../etc

sshdfilterrc-ben debian etch-hez ezeket kell átírni (diff szerűen :):
-logsource='STDIN'
+logsource='/var/log/sshd.fifo'

-#+'^192\.168\.0\.[0-9]+$' # always accept, never block LAN connections
++'^192\.168\.1\.[0-9]+$' # always accept, never block LAN connections
++'^127.0.0.1$'

és még ezeket belerakni a végére:
msg_invalid='^Invalid user (.*) from ([0-9a-fA-F:\.]+)'
map_invalid='push @res,$1; push @res,$2;'
msg_invalid='^Failed .* for invalid user (.*) from ([0-9a-fA-F:\.]+) port [0-9]+
ssh2'
map_invalid='push @res,$1; push @res,$2;'
msg_failed_valid='^error: PAM: Authentication failure for (.*) from ([0-9a-fA-F:
\.]+)'
map_failed_valid='push @res,$1; push @res,$2;'
msg_failed_valid='^Postponed .* for (.*) from ([0-9a-fA-F:\.]+) port [0-9]+ ssh2
'
map_failed_valid='push @res,$1; push @res,$2;'
msg_no_id_string='^Did not receive identification string from ([0-9a-fA-F:\.]+)'
map_no_id_string='push @res,$1;'
msg_quit='^Received signal ([0-9]+); terminating.'
map_quit='push @res,$1;'

mv sshdfilterrc /etc

a /etc/rc.local-ba:
iptables -N SSHD
iptables -I INPUT -p tcp -m tcp -s ! 192.168.1.0/255.255.255.0 --dport 22 -j SSHD
/usr/local/sbin/sshdfilter.pl

ha nem akarjuk megvárni az újraindítást a cucc elindításával:
/usr/local/sbin/sshdfilter.pl

valamint a log vizslatása, hogy talált -e valami hibát:
cat /var/log/auth.log | grep ssh | less

Hozzászólások

Nem akarok belekotyogni, de szerintem a fifo fájlt nem touch-csal hanem mkfifo-val kell megalkotni szerény véleményem szerint...

Ya, és az direkt hogy ez a sor 2x fut le?


/usr/local/sbin/sshdfilter.pl

Először közvetlen a iptables parancsok után, majd még egyszer utána.

A denyhosts nem egyszerűbb? Én azt használom, bevált.

Petya

Én ugyan csak ma próbáltam ki pont, ezért nem tudok sokat mondani róla, de amit írtál szöget ütött a fejembe.
A denyhosts nem egyszerűbb? Én azt használom, bevált.

Azért használod mert bevállt? Nem fontosabb a hatékonyság?
Ha hatékonyabb akkor én is kipróbálom, de most az sshdfilter bejön :)

Nekem Ubuntun, upgrade után nem működik. Nincs errorlog, semmi. Ha elindítom nem kapom vissza a promptot.
Ekkor két service fut

7769 pts/2 S+ 0:00 /usr/bin/perl /usr/local/sbin/sshdfilter
7770 ? Ss 0:00 /usr/bin/perl /usr/local/sbin/sshdfilter

Ctrl+C és egy marad: 7770-es. De közben másik szerverről teszteltem és nem működik. Előtte nagyon szépen működött, tele volt az SSHD lánc és a mail is jött, hogy mit bannolt és meddig.

Az auth.log-ban látszólag elindul, azt látom, hogy minden értéket beolvas a konfgig fájlból.

Nem tudok perlül, de azt látom, hogy itt áll meg:
323. sor

open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!";

Ezen nem halad át, ha jól nézem.