FreeBSD

Bruteblock – защита от перебора паролей по ssh

Bruteblock – написан на C, на основе анализа лога auth.log блокирует злоумышленников, которые пробуют подобрать пароль по ssh.

1. Ставим.

# cd /usr/ports/security/bruteblock && make install clean

2. Редактируем. /usr/local/etc/bruteblock/ssh.conf

# cat /usr/local/etc/bruteblock/ssh.conf

# regexp - регулярное выражение, по которому производится поиск ip адресов
# при попытках подбора паролей. Формат регулярных выражений - PCRE.
# "regexp0","regexp1",... "regexp9" . опциональные поля, содержащие до 10
# дополнительных регулярных выражений при попытках подбора паролей.
# Формат регулярных выражений - PCRE.

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.*error: PAM: authentication error for illegal user S+ from (d{1,3}.d{1,3}.d{1,3}.d{1,3})
regexp3 = "sshd.*Failed keyboard-interactive/pam for 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})
regexp5 = sshd.*error: PAM: authentication error for S+ from (d{1,3}.d{1,3}.d{1,3}.d{1,3})
regexp6 = sshd.*Did not receive identification string from (d{1,3}.d{1,3}.d{1,3}.d{1,3})
regexp7 = sshd.*User S+ from (d{1,3}.d{1,3}.d{1,3}.d{1,3}) not allowed because not listed in AllowUsers

# Количество неудачных попыток входа в течении времени within_time,
# после которых bruteblock добавляет ip в таблицу ipfw2.

max_count = 2

# Время, в секундах в течении которого должны произойти max_count
# неудачных попыток входа.

within_time = 300

# Время жизни правила блокировки, по истечению которого bruteblockd
# удаляет правило из таблицы.

# 30 минут
reset_ip = 1800

# Номер таблицы ipfw2
ipfw2_table_no = 101

Отключить резолвинг ДНС-имен для ssh

# echo 'UseDNS no' >> /etc/ssh/sshd_config
# sh /etc/rc.d/sshd restart

3. /etc/syslog.conf

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

4. Добавляем в автозапуск.

# echo '# Syslogd settings change' >> /etc/rc.conf
# echo 'syslogd_flags="-c"' >> /etc/rc.conf
# sh /etc/rc.d/syslogd restart
# echo '# Bruteblockd' >> /etc/rc.conf
# echo 'bruteblockd_enable="YES"' >> /etc/rc.conf
# echo 'bruteblockd_table="101"' >> /etc/rc.conf
# echo 'bruteblockd_flags="-s 5"' >> /etc/rc.conf

5. Правило в файрвол.

# ipfw add 11 deny all from "table(101)" to me

6. Запускаем.

# sh /usr/local/etc/rc.d/bruteblockd start

7. Проверяем.

# tail -f /var/log/auth.log | grep bruteblock

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments