На только что переданной мне пару впс`ок с установленной системой FreeBSD 9 на них, решил обезопасить ssh от подбора пароля.
Выбор пал мой на порт fail2ban, в Linux я им пользуюсь, он меня устраивал всем.
Конечно для большой нагрузки он не годиться, с выше 10тыс. операций, он не сможет обработь, будет пропускать.
Но все же, мне его хватило.
Если идет жесткий подбор свыше 10 тыс, то уже разумнее установить ipsec.
С помощью fail2ban не только ssh можно защищать, но и ftp, web, voip и т.д.
Приступим.
# cd /usr/ports/secuity/py-fail2ban && make install clean
Разрешим запуск сервису fail2ban.
# echo 'fail2ban_enable="YES"' >> /etc/rc.conf
Установили порт, теперь его нужно настроить.
Мне нужно было настроить только защиту ssh, вы можете не только ssh обезопасить.
# cat /usr/local/etc/fail2ban/jail.conf [DEFAULT] # Укажим к кам ИП не будет распространяться правило блокировки. ignoreip = 127.0.0.1 192.168.1.0/24 41.158.24.78 # На какой время баним. bantime = 6000 # В какой промежуток времени будет отлавливать брут, то-есть если за 3 минуты пришло свыше 5 не правельных попыток ввода логина, то бан. findtime = 180 # Укажим сколько неверных попыток разрешается. maxretry = 5 backend = auto [ssh-ipfw] # Включаем фильтр. enabled = true # используем фильтр и примеров в conf.d filter = bsd-sshd # Указываем профиль bsd-ipfw. action = bsd-ipfw[table=100, tablearg=22] # Уведомляем себя, что фильтр заблокировал вражеский ИП адрес. sendmail-whois[name="SSH,IPFW", dest=useris@mail.ccom] # Лог бана logpath = /var/log/auth.log # Тут можно индивидуально указать какие ип не будет банить, чисто для этого правила. ignoreip = 127.0.0.1 127.21.151.8
Теперь подредактируем наш фильтр.
# nano /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf # Баним ИП адрес, при срабатывании ИП добавляется в таблицу table. actionban = /sbin/ipfw table <table> add <ip> <tablearg> # Удаляем IP из таблицы table. actionunban = /sbin/ipfw table <table> delete <ip> # У меня ssh весит на порту 22999, так что указываем его мониторинг. port = 22999
Осталось только подредактировать наш брандмауэр ( ipfw ).
Добавим такую ствройку к скрипту ipfw, я ее добавил после loopbaсk петли.
# cat /etc/ipfw.rules | grep table
$cmd add deny ip from table'(100)' to any
Запустим сервис.
# /usr/local/etc/rc.d/fail2ban start
Вот и все.