Это не заменимый инструмент для защиты Вашего сервера от брутфорса. Он позволяет защищать такие сервисы как: apache, ssh, postfix. и.т.д
Защита ssh
Установим fail2ban
ищем пакет
bash
pkg search fail2banpy27-fail2ban-0.9.7
Установим
bash
pkg install py27-fail2ban-0.9.7Рабочий каталог /usr/local/etc/fail2banbash
cd /usr/local/etc/fail2banПосле установки, необходимо сразу скопировать конфиги fail2ban.conf и jail.conf. Их редактировать не нужно.
bash
cp fail2ban.conf fail2ban.localbash
cp jail.conf jail.local Редактируем
очищаем jail.local
bash
echo > jail.localbash
nano jail.localini
[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: максимальное число ошибок перед баном.
Пропишем в атозагрузку
bash
echo 'fail2ban_enable="YES"' >> /etc/rc.confОсталось самое главное включить наш firewall, без которого fail2ban работать не будет.
bash
echo 'firewall_enable="YES"' >> /etc/rc.confbash
echo 'firewall_type="open"' >> /etc/rc.conf - этот параметр по желанию. Более подробно, можно ознакомиться в официальной документации freebsd.Запускаем firewall и fail2ban
bash
service ipfw startservice fail2ban start
Просмотр информации
Просмотр активных джейлов
bash
fail2ban-client statusStatus
|- Number of jail: 1
`- Jail list: sshbash
fail2ban-client status имя_джейлаbash
fail2ban-client status sshStatus 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
bash
fail2ban-client set [имя_джейла] banip [ip] Для разблокировки
bash
fail2ban-client set [имя_джейла] unbanip [ip] Защита apache
Авторизация
ini
[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Боты
ini
[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Длинные адреса
ini
[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