Выпекаем сайты, находим покупателей

Защита SSH с помощью BruteBlock

Надоели логи о бруте по ssh? Тогда вам нужен bruteblock!
BruteBlock взаимодействует с syslog, считывая количество неудачных авторизаций хостов по ssh и при заданном кол-ве попыток отправляет хост в таблицу ipfw.

SSH Secure Shell BruteBlock

1. Установка BruteBlock из портов:
# cd /usr/ports/security/bruteblock
# make install clean

2. Добавляем в /etc/rc.conf
bruteblockd_enable="YES"
bruteblockd_table="50" #Таблица ipfw для плохих хостов
bruteblockd_flags="-s 5" #Интервал проверки
syslogd_flags="-c" #Чтобы не сбивать блокиратор сообщениями вида - last message was repeated 5 times

3. Настраиваем конфиг /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.*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
max_count = 3 #Количество неудачных попыток авторизации, если уверены в себе, то ставьте 1.
within_time = 600 #Промежуток времени неудачных попыток (10 минут)
reset_ip = 3600 #Время блокировки хоста (1 час)
ipfw2_table_no = 50 #Номер таблицы фаерволла

4. Добавляем в /etc/syslod.conf строку... и перезапускаем его:
auth.info;authpriv.info |exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/ssh.conf
# /etc/rc.d/syslogd restart

5. Отключаем резолвинг DNS в ssh конфиге /etc/ssh/sshd_config:
# UseDNS no

6. Добавляем правило в ipfw:
# ipfw add deny not icmp from "table(50)" to me #хосты смогут только пинговать ваш сервер

7. Запускаем bruteblock:
# /usr/local/etc/rc.d/bruteblockd start

P.S. Защита не идеальная, но от перебора паролей вполне эффективна, наслаждайтесь. BruteBlock также можно настроить на парсинг логов proftpd и других сервисов.

Комментарии и отзывы к материалу

08.10.2012

Фёдор, нах!!! пишет:
для linux подобное есть?

08.10.2012

Григорий (MakeFuture) пишет:
Существует, видел в гугле.

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

Как зовут?

Сообщение