0

Установка bruteblock

Установка bruteblock для защиты от перебора.

В основном авторизация у меня проходит по ключам, но есть любители, которые по (политическим|религиозным|иным) соображениям ключи не могут использовать.

Установка:
# cd /usr/ports/security/bruteblock
# make install clean

Файлы конфигурации расположены в /usr/local/etc/bruteblock

Например файл ssh.conf:

regexp = sshd.*(?:Illegal|Invalid) user S+ from (d{1,3}.d{1,3}.d{1,3}.d{1,3})
regexp1 = sshd.*Failed S+ for (?:(?:illegal|invalid) user )?S+ from (d{1,3}.d{1,3}.d{1,3}.d{1,3})
regexp2 = sshd.*error: PAM: authentication error for (?:(?:illegal|invalid) user )S+ from (d{1,3}.d{1,3}.d{1,3}.d{1,3})
regexp3 = sshd.*Did not receive identification string from (d{1,3}.d{1,3}.d{1,3}.d{1,3})
max_count       = 3
within_time     = 60
reset_ip       = 1200
ipfw2_table_no = 1

Все настройки задаются регулярными выражениями.
При совпадении строки в логе с соответствующим выражением в таблицу 1 ipfw заноситься ip. Это происходит после 3 неудачных попыток в течении минуты на 20 минут.

В ipfw в начало добавляю правило:
# ipfw add deny ip from table(1) to me

В /etc/syslog.conf добавляю строку:

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

Рестарт syslog:
# /etc/rc.d/syslogd restart

В /etc/rc.conf:

# -- bruteblockd --
bruteblockd_enable="YES"
bruteblockd_table="1"
bruteblockd_flags="-s 5"

Старт bruteblock:
# /usr/local/etc/rc.d/bruteblockd start

В процессе работы в /var/log/auth.log вносятся записи:

bruteblock[30902]: Adding 192.168.12.253 to the ipfw table 1
bruteblockd[30822]: Removing host 192.168.12.253 from table 1

сообщающие о добавлении и удалении ip из таблицы.

Посмотреть текущее состоянии таблицы:
# ipfw table 1 list

Добавление в таблицу:
# ipfw table 1 add 10.10.11.1/24

Удаление из таблицы:
# ipfw table 1 delete ipfw table 3 add 10.10.11.1

Очистить всю таблицу:
# ipfw table 1 delete ipfw table 3 flush

Вот так все сухо и коротко.

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.