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

Оставить комментарий