Это не заменимый инструмент для защиты Вашего сервера от брутфорса. Он позволяет защищать такие сервисы как: apache, ssh, postfix. и.т.д
Установим fail2ban
ищем пакет
pkg search fail2ban
py27-fail2ban-0.9.7
Установим
pkg install py27-fail2ban-0.9.7
Рабочий каталог /usr/local/etc/fail2ban
cd /usr/local/etc/fail2ban
После установки, необходимо сразу скопировать конфиги fail2ban.conf и jail.conf. Их редактировать не нужно.
cp fail2ban.conf fail2ban.local
cp jail.conf jail.local
Редактируем
очищаем jail.local
echo > jail.local
nano jail.local
[DEFAULT]
ignoreip = 127.0.0.1 192.168.2.0/24
[ssh]
enabled = true
port = ssh
filter = sshd
action = bsd-ipfw[table=22]
logpath = /var/log/auth.log
bantime = 2880
findtime = 800
maxretry = 1
Параметры:
- [ssh]: имя джэйла в квадратных скобках.
- enabled: активирован fail2ban.
- port: номер порта для защиты (может быть номер или хорошо известное имя).
- filter: Демон нашего сервиса.
- action: заносит правило для нашего firewall
- logpath: файл лога .
- bantime: время бана в секундах, по истечении которого IP–адрес удаляется из списка заблокированных
- findtime: определяет длительность интервала в секундах, за которое событие должно повториться определённое количество раз, после чего санкции вступят в силу. Если специально не определить этот параметр, то будет установлено значение по умолчанию равное 600 (10 минут).
- maxretry: максимальное число ошибок перед баном.
Пропишем в атозагрузку
echo 'fail2ban_enable="YES"' >> /etc/rc.conf
Осталось самое главное включить наш firewall, без которого fail2ban работать не будет.
echo 'firewall_enable="YES"' >> /etc/rc.conf
echo 'firewall_type="open"' >> /etc/rc.conf - этот параметр по желанию. Более подробно, можно ознакомиться в официальной документации freebsd.
Запускаем firewall и fail2ban
service ipfw start
service fail2ban start
Просмотр информации
Просмотр активных джейлов
fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: ssh
fail2ban-client status имя_джейла
fail2ban-client status ssh
Status for the jail: ssh
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- Total banned: 1
`- Banned IP list: 59.16.38.129
Так же можно вручную забанить и разбанить IP
Для бана IP
fail2ban-client set [имя_джейла] banip [ip]
Для разблокировки
fail2ban-client set [имя_джейла] unbanip [ip]
Авторизация
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
action = bsd-ipfw[table=23]
logpath = /var/log/apache/error.log
bantime = 2880
findtime = 200
maxretry = 2
Боты
[apache-badbots]
enabled = true
port = http,https
filter = apache-badbots
action = bsd-ipfw[table=23]
logpath = /var/log/apache/error.log
bantime = 2880
findtime = 200
maxretry = 2
Длинные адреса
[apache-overflows]
enabled = true
port = http,https
filter = apache-overflows
action = bsd-ipfw[table=24]
logpath = /var/log/apache/error.log
bantime = 2880
findtime = 200
maxretry = 2