Home > Безопасность > Защита SSH от перебора паролей.
Дек
15

Очень не приятно смотреть в логах, как идет методичный перебор имен и паролей к ssh с десятков ip’шников. В портах нашлось замечательное средство, bruteblock. Позволяет парсить лог, сверять записи с шаблоном, и добавлять злоумышленников в фаервол на определенное время.

Ставим

radio# whereis bruteblock
bruteblock: /usr/ports/security/bruteblock
radio# cd /usr/ports/security/bruteblock
radio# make install clean

по окончании установки получаем краткую инструкцию по установке

===>  CONFIGURATION NOTE:
 
  Configuration of the bruteblock is done via configuration files
  located at /usr/local/etc/bruteblock/
 
  To run the script, append following lines to /etc/syslog.conf:
 
!*
auth.info;authpriv.info                         |exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/ssh.conf
 
  and restart syslogd.
 
  Also you should add ipfw2 table and the corresponding deny rule.
  For example,
 
# ipfw add deny ip from table(1) to any  
 
  Next, you'll want to setup periodical cleanup of ipfw2 table.  Add following
  lines to /etc/rc.conf:
 
     bruteblockd_enable="YES"
     bruteblockd_table="1"
     bruteblockd_flags="-s 5"
 
  and start bruteblockd: /usr/local/etc/rc.d/bruteblockd.sh start
 
See bruteblock(8) for more detailts.

будем следовать этой инструкции.

в файле, /etc/syslog.conf находим строчку

auth.info;authpriv.info                         /var/log/auth.log

и прямо под ней вставляем еще одну строку

auth.info;authpriv.info                         |exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/ssh.conf

Рестартуем syslogd

radio# /etc/rc.d/syslogd restart
Stopping syslogd.
Starting syslogd.

Настраиваем фаервол. Для начала его нужно включить, и создать свои правила.

создаем файл, /etc/rc.firewall.open

#!/bin/sh
 
fwcmd="/sbin/ipfw"            # бинарник IPFW
 
# сбрасываем все правила
${fwcmd} -f flush
# сбрасываем все pipe
#${fwcmd} -f pipe flush
# сбрасываем очереди
#${fwcmd} -f queue flush
 
#берем адреса из таблицы table 1 и блокируем их
${fwcmd} add 100 deny ip from table\(1\) to any
 
${fwcmd} add 200 pass all from any to any via lo0
${fwcmd} add 300 deny all from any to 127.0.0.0/8
${fwcmd} add 400 deny ip from 127.0.0.0/8 to any
 
${fwcmd} add 65000 pass all from any to any

в файл /etc/rc.conf добовляем

firewall_enable="YES"
forewall_type="/etc/rc.firewall.open"
 
bruteblockd_enable="YES"
bruteblockd_table="1"
bruteblockd_flags="-s 5"

создаем файл /usr/local/etc/bruteblock/ssh.conf

# шаблоны. при совпадении с которыми считается что пароль не правильный
regexp          = sshd.*Illegal user \S+ from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
regexp1         = sshd.*Failed password for (?:illegal user )?\S+ from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
regexp2         = sshd.*Failed keyboard-interactive\/pam for (?:invalid user )?\S+ from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) Port \S+ ssh2
regexp3         = sshd.*authentication error for (?:illegal user )?\S+ from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
regexp4         = sshd.*Invalid user \S+ from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
 
# количество разрешенных попыток перед баном
max_count       = 4
 
# в течении какого времени эти попытки можно делать
within_time     = 60
 
# на какое время блочим
reset_ip       = 86400
 
# IPFW номер таблицы
ipfw2_table_no = 1

стартуем

/usr/local/etc/rc.d/bruteblockd start
Starting bruteblockd.
radio# /usr/local/etc/rc.d/bruteblockd status
bruteblockd is running as pid 3752.

смотрим через некоторое время, таблицу фаервола

radio# ipfw table 1 list
195.46.x.x/32 1260946935

один попался :)


,

5 Responses to “Защита SSH от перебора паролей.”

  1. pert
    Февраль 24th, 2010 at 22:19 | #1

    отлично! проблема перебора паролей по ssh решена! :)
    еще нужно решить вопрос с перебором по ftp.

  2. estornino
    Июнь 14th, 2010 at 00:06 | #2

    @pert
    Попробуйте – sshit

Add reply

[+] kaskus emoticons nartzco