Difference between revisions of "Fail2ban (Русский)"

From ArchWiki
Jump to navigation Jump to search
m (article is now maintained)
(sync)
 
Line 4: Line 4:
 
[[en:Fail2ban]]
 
[[en:Fail2ban]]
 
[[ja:Fail2ban]]
 
[[ja:Fail2ban]]
{{TranslationStatus (Русский)|Fail2ban|30 мая 2019|574274}}
+
{{TranslationStatus (Русский)|Fail2ban|6 июня 2019|574713}}
  
 
[https://www.fail2ban.org/wiki/index.php/Main_Page Fail2ban] сканирует лог-файлы (например, {{ic|/var/log/httpd/error_log}}) и блокирует IP-адреса, которые ведут себя слишком подозрительно, к примеру, делая слишком много попыток входа с неверным паролем, пытаясь найти уязвимости и т.д. Обычно Fail2ban используется для обновления правил [[Category:Firewalls (Русский)|межсетевого экрана]] с целью блокировки IP-адресов на определённое время, но также можно настроить и другие действия, например, отправку письма по электронной почте.
 
[https://www.fail2ban.org/wiki/index.php/Main_Page Fail2ban] сканирует лог-файлы (например, {{ic|/var/log/httpd/error_log}}) и блокирует IP-адреса, которые ведут себя слишком подозрительно, к примеру, делая слишком много попыток входа с неверным паролем, пытаясь найти уязвимости и т.д. Обычно Fail2ban используется для обновления правил [[Category:Firewalls (Русский)|межсетевого экрана]] с целью блокировки IP-адресов на определённое время, но также можно настроить и другие действия, например, отправку письма по электронной почте.
Line 120: Line 120:
 
На данный момент Fail2ban должен запускаться от имени ''суперпользователя'', следовательно, можно дополнительно защитить службу с помощью [[systemd (Русский)]].
 
На данный момент Fail2ban должен запускаться от имени ''суперпользователя'', следовательно, можно дополнительно защитить службу с помощью [[systemd (Русский)]].
  
Создайте конфигурационный [[drop-in файл]] для службы {{ic|fail2ban.service}}:
+
[[Создайте]] конфигурационный [[drop-in файл]] для службы {{ic|fail2ban.service}}:
  
 
{{hc|/etc/systemd/system/fail2ban.service.d/override.conf|2=
 
{{hc|/etc/systemd/system/fail2ban.service.d/override.conf|2=
Line 140: Line 140:
 
При использовании параметра {{ic|1=ProtectSystem=strict}} иерархия [[File systems (Русский)|файловой системы]] будет доступна только для чтения, а {{ic|ReadWritePaths}} позволит Fail2ban также и записывать в необходимых директориях.
 
При использовании параметра {{ic|1=ProtectSystem=strict}} иерархия [[File systems (Русский)|файловой системы]] будет доступна только для чтения, а {{ic|ReadWritePaths}} позволит Fail2ban также и записывать в необходимых директориях.
  
[[Создайте]] файл {{ic|/etc/fail2ban/fail2ban.local}} с корректным путём {{ic|logtarget}}:
+
Создайте файл {{ic|/etc/fail2ban/fail2ban.local}} с корректным путём {{ic|logtarget}}:
 
{{hc|/etc/fail2ban/fail2ban.local|<nowiki>
 
{{hc|/etc/fail2ban/fail2ban.local|<nowiki>
 
[Definition]
 
[Definition]
 
logtarget = /var/log/fail2ban/fail2ban.log
 
logtarget = /var/log/fail2ban/fail2ban.log
 
</nowiki>}}
 
</nowiki>}}
 +
 +
Также создайте директорию {{ic|/var/log/fail2ban}} от имени суперпользователя.
  
 
После чего [[перезагрузите systemd]], чтобы применить изменения файлов юнитов, и [[перезапустите]] службу {{ic|fail2ban.service}}.
 
После чего [[перезагрузите systemd]], чтобы применить изменения файлов юнитов, и [[перезапустите]] службу {{ic|fail2ban.service}}.

Latest revision as of 15:11, 6 June 2019

Состояние перевода: На этой странице представлен перевод статьи Fail2ban. Дата последней синхронизации: 6 июня 2019. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Fail2ban сканирует лог-файлы (например, /var/log/httpd/error_log) и блокирует IP-адреса, которые ведут себя слишком подозрительно, к примеру, делая слишком много попыток входа с неверным паролем, пытаясь найти уязвимости и т.д. Обычно Fail2ban используется для обновления правил с целью блокировки IP-адресов на определённое время, но также можно настроить и другие действия, например, отправку письма по электронной почте.

Важно: Использование блокировки по IP защитит только от тривиальных атак, но для работы потребуется дополнительный демон и правильно настроенное журналирование. К тому же, если злоумышленники знают ваш IP-адрес, они могут послать пакеты с подменёнными заголовками отправителя и лишить вас доступа к серверу. Не забудьте прописать собственные IP-адреса в ignoreip.

Установка

Установите пакет fail2ban.

Использование

Настройте Fail2ban, после чего включите и запустите службу fail2ban.service.

fail2ban-client

Утилита fail2ban-client позволяет мониторить "тюрьмы" (jails) (reload, restart, status и т.д.). Введите следующую команду, чтобы увидеть список всех доступных команд:

$ fail2ban-client

Просмотр включённых "тюрем" (jails):

# fail2ban-client status

Проверка статуса "тюрьмы", например для sshd:

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     9
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   0.0.0.0

Настройка

Рекомендуется создать файл /etc/fail2ban/jail.local, так как /etc/fail2ban/jail.conf может быть перезаписан во время обновления системы. К примеру, задать время блокировки в 1 день можно следующим образом:

/etc/fail2ban/jail.local
[DEFAULT]
bantime = 1d

Также можно создавать отдельные файлы name.local в каталоге /etc/fail2ban/jail.d, например, /etc/fail2ban/jail.d/sshd.local.

Перезапустите службу fail2ban.service для применения изменений.

Включение "тюрем"

По умолчанию все "тюрьмы" (jails) отключены. Добавьте строку enabled = true к конфигурации той "тюрьмы", которую необходимо включить. Например, включение "тюрьмы" OpenSSH (Русский) выглядит следующим образом:

/etc/fail2ban/jail.local
[sshd]
enabled = true

См. #Пользовательская "тюрьма" SSH.

Получение уведомлений по почте

Если вы хотите получать электронные письма при блокировке IP-адресов, необходимо настроить SMTP-клиент (например, msmtp) и изменить действие по умолчанию, как указано ниже.

/etc/fail2ban/jail.local
[DEFAULT]
destemail = вашеимя@example.com
sender = вашеимя@example.com

# для блокировки и отправки электронного письма на destemail с whois-отчётом
action = %(action_mw)s

# то же, что и action_mw, но также включает в себя связанные строки из лога
#action = %(action_mwl)s

Межсетевой экран и службы

Большинство и служб должны работать по умолчанию. См. содержимое директории /etc/fail2ban/action.d/ для получения примеров, например, ufw.conf.

Советы и рекомендации

Пользовательская "тюрьма" SSH

Важно: Если злоумышленник знает ваш IP-адрес, он может послать пакеты с подменёнными заголовками отправителя и тем самым лишить вас доступа к серверу. Ключи SSH предоставляют отличное решение проблемы брутфорса без этих проблем.

Отредактируйте файл /etc/fail2ban/jail.d/sshd.local, добавив эту секцию и обновив список доверенных IP-адресов в ignoreip:

/etc/fail2ban/jail.d/sshd.local
[sshd]
enabled   = true
filter    = sshd
banaction = iptables
backend   = systemd
maxretry  = 5
findtime  = 1d
bantime   = 2w
ignoreip  = 127.0.0.1/8
Примечание:
  • Может понадобиться задать LogLevel VERBOSE в файле /etc/ssh/sshd_config, чтобы разрешить Fail2ban полноценный мониторинг. В противном случае, ошибки ввода пароля могут быть неправильно зарегистрированы.
  • Fail2ban поддерживает IPv6 с версии 0.10. Настройте межсетевой экран соответственно, например, запустите и включите службу ip6tables.service.
Совет:
  • При использовании фронтендов iptables (Русский), например, ufw, можно использовать banaction = ufw вместо iptables.
  • При использовании Shorewall можно прописать banaction = shorewall и также задать значение ALL параметру BLACKLIST в файле /etc/shorewall/shorewall.conf. В противном случае, правила, добавленные для блокировки IP-адреса, будут влиять только на новые соединения.

Защита службы

На данный момент Fail2ban должен запускаться от имени суперпользователя, следовательно, можно дополнительно защитить службу с помощью systemd (Русский).

Создайте конфигурационный drop-in файл для службы fail2ban.service:

/etc/systemd/system/fail2ban.service.d/override.conf
[Service]
PrivateDevices=yes
PrivateTmp=yes
ProtectHome=read-only
ProtectSystem=strict
NoNewPrivileges=yes
ReadWritePaths=-/var/run/fail2ban
ReadWritePaths=-/var/lib/fail2ban
ReadWritePaths=-/var/log/fail2ban
ReadWritePaths=-/var/spool/postfix/maildrop
CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW

Параметр CAP_DAC_READ_SEARCH (в строке CapabilityBoundingSet) позволяет Fail2ban читать любую директорию и файл, а CAP_NET_ADMIN и CAP_NET_RAW позволяют задавать правила межсетевого экрана с помощью iptables (Русский). См. capabilities(7) для получения более подробной информации.

При использовании параметра ProtectSystem=strict иерархия файловой системы будет доступна только для чтения, а ReadWritePaths позволит Fail2ban также и записывать в необходимых директориях.

Создайте файл /etc/fail2ban/fail2ban.local с корректным путём logtarget:

/etc/fail2ban/fail2ban.local
[Definition]
logtarget = /var/log/fail2ban/fail2ban.log

Также создайте директорию /var/log/fail2ban от имени суперпользователя.

После чего перезагрузите systemd, чтобы применить изменения файлов юнитов, и перезапустите службу fail2ban.service.

Смотрите также