Установка 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
Вот так все сухо и коротко.