fail2ban. Основные настройки

fail2ban. Основные настройки.

Содержание

1 Общая информация

  • Репозиторий: https://github.com/fail2ban/fail2ban
  • Fail2Ban сканирует файлы журналов /var/log/auth.log и блокирует IP-адреса, совершающие слишком много неудачных попыток входа в систему.
  • Это достигается путем обновления правил системного брандмауэра, запрещающих новые подключения с этих IP-адресов в течение настраиваемого периода времени.

2 Настройка

2.1 Общие настройки

2.2 Время блокирования

  • Создайте файл локальной конфигурации:
    1touch /etc/fail2ban/jail.d/50-default.conf
    
  • В файле /etc/fail2ban/jail.d/50-default.conf задайте время блокирования хостов:
    1[DEFAULT]
    2bantime = 360000
    

2.3 Игнорирование избранных ip-адресов

  • Добавим игнорирование избранных ip-адресов в файле /etc/fail2ban/jail.d/50-default.conf:
    1# "ignoreself" specifies whether the local resp. own IP addresses should be ignored
    2# (default is true). Fail2ban will not ban a host which matches such addresses.
    3ignoreself = true
    4
    5# "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
    6# will not ban a host which matches an address in this list. Several addresses
    7# can be defined using space (and/or comma) separator.
    8ignoreip = 127.0.0.1/8 ::1 10.0.0.0/8
    
  • Диапазон 10.0.0.0/8 добавлен для примера.

2.4 Защита ssh

  • Создадим файл для локальной конфигурации ssh:
    1touch /etc/fail2ban/jail.d/80-ssh.conf
    
  • В файле /etc/fail2ban/jail.d/80-ssh.conf активируйте защиту ssh:
     1[sshd]
     2enabled = true
     3
     4# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
     5# normal (default), ddos, extra or aggressive (combines all).
     6# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
     7#mode   = normal
     8port    = ssh
     9logpath = %(sshd_log)s
    10backend = %(sshd_backend)s
    11
    12
    13[selinux-ssh]
    14
    15port     = ssh
    16logpath  = %(auditd_log)s
    

3 Настройка для Proxmox

3.1 Время блокирования

  • Создайте файл локальной конфигурации:
    1touch /etc/fail2ban/jail.d/50-default.conf
    
  • В файле /etc/fail2ban/jail.d/50-default.conf задайте время блокирования хостов:
    1[DEFAULT]
    2bantime = 360000
    

3.2 Игнорирование избранных ip-адресов

  • Добавим игнорирование избранных ip-адресов в файле /etc/fail2ban/jail.d/50-default.conf:
    1# "ignoreself" specifies whether the local resp. own IP addresses should be ignored
    2# (default is true). Fail2ban will not ban a host which matches such addresses.
    3ignoreself = true
    4
    5# "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
    6# will not ban a host which matches an address in this list. Several addresses
    7# can be defined using space (and/or comma) separator.
    8ignoreip = 127.0.0.1/8 ::1 10.0.0.0/8
    
  • Диапазон 10.0.0.0/8 добавлен для примера.

3.3 Защита ssh

  • Создадим файл для локальной конфигурации ssh:
    1touch /etc/fail2ban/jail.d/80-ssh.conf
    
  • В файле /etc/fail2ban/jail.d/80-ssh.conf активируйте защиту ssh:
    1[sshd]
    2enabled = true
    3backend = systemd
    
  • Удалите файл /etc/fail2ban/jail.d/defaults-debian.conf.

3.4 Защита proxmox web-интерфейс

  • Создадим файл для локальной конфигурации proxmox:
    1touch /etc/fail2ban/jail.d/80-proxmox.conf
    
  • В файле /etc/fail2ban/jail.d/80-proxmox.conf активируйте защиту web-интерфейса:
    1[proxmox]
    2enabled = true
    3port = https,http,8006
    4filter = proxmox
    5backend = systemd
    6maxretry = 3
    7findtime = 2d
    8bantime = 1h
    
  • Создайте файл фильтра:
    1touch /etc/fail2ban/filter.d/proxmox.conf
    
  • Настройте фильтр в файле /etc/fail2ban/filter.d/proxmox.conf:
    1[Definition]
    2failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
    3ignoreregex =
    4journalmatch = _SYSTEMD_UNIT=pvedaemon.service
    

4 Основные операции

4.1 Удалить все записи из списков блокировки

  • Для удаления всех записей из списков блокировки выполните скрипт:
     1#!/bin/bash
     2
     3for JAIL in $(fail2ban-client status | grep 'Jail list:' | awk 'BEGIN {FS="\t"} {print $2}' | sed 's/, / /g')
     4do
     5  for IP in $(fail2ban-client status ${JAIL} | grep 'Banned IP list:' | awk 'BEGIN {FS="\t"} {print $2}' | sed 's/ /\n/g')
     6  do
     7    fail2ban-client set ${JAIL} unbanip ${IP}
     8  done
     9done
    10
    11unset JAIL IP
    12
    13exit 0
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие