fail2ban защита Вашего локального сервера

обновлено 3 мин

Статья написана в 2017 году. Команды и версии программ могли устареть — проверяйте по документации.

Содержание
  1. Защита ssh
  2. Просмотр информации
  3. Так же можно вручную забанить и разбанить IP
  4. Защита apache
  5. Авторизация
  6. Боты
  7. Длинные адреса

Это не заменимый инструмент для защиты Вашего сервера от брутфорса. Он позволяет защищать такие сервисы как: apache, ssh, postfix. и.т.д

ssh
apache

Защита ssh

Установим fail2ban

ищем пакет

bash
pkg search fail2ban

py27-fail2ban-0.9.7

Установим

bash
pkg install py27-fail2ban-0.9.7
Рабочий каталог /usr/local/etc/fail2ban
bash
cd /usr/local/etc/fail2ban

После установки, необходимо сразу скопировать конфиги fail2ban.conf и jail.conf. Их редактировать не нужно.

bash
cp fail2ban.conf fail2ban.local
bash
cp jail.conf jail.local 

Редактируем

очищаем jail.local

bash
echo > jail.local
bash
nano jail.local
ini
[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.conf
bash
echo 'firewall_type="open"' >> /etc/rc.conf - этот параметр по желанию. Более подробно, можно ознакомиться в официальной документации freebsd.

Запускаем firewall и fail2ban

bash
service ipfw start

service fail2ban start

Просмотр информации

Просмотр активных джейлов

bash
fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: ssh
bash
fail2ban-client status имя_джейла
bash
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

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
Статья помогла?

Нашли ошибку или устаревшую команду? Выделите текст и нажмите Ctrl+Enter.