UBUNTU: Fail2Ban и Nextcloud

Nextcloud Ubuntu

Всем привет!
В прошлой заметке я описал установку личного облачного хранилища Nextcloud в операционной системе Ubuntu.
Пора настроить защиту Nextcloud от брутфорса (попытке подобрать пароль путем перебора).
Для этого есть многим известный инструмент Fail2Ban, в рамках своего блога я уже описывал базовую настройку его в операционной системе FreeBSD.
В этой заметке мы с вами установим Fail2Ban и создадим фильтр для защиты нашего облачного хранилища.

Немного вводных данных:

  • OS Ubuntu 20.04
  • FireWall — Iptables
  • IP атакующего — 111.111.111.111
  • Наши сети: 222.222.222.0/24, 192.168.1.0/24

Установим Fail2Ban:

sudo apt-get install fail2ban

После установки Fail2Ban имеет рабочий фильтр ssh.

Создадим лог-файл для Nextcloud:

sudo touch /var/log/nextcloud.log
sudo -u www-data chown www-data:www-data /var/log/nextcloud.log

Настроим логирование в Nextcloud:

sudo -u www-data php  occ log:file --file /var/log/nextcloud.log --rotate-size 20M --enable
sudo -u www-data php  occ log:manage --level 2 --timezone Europe/Moscow

Либо правкой конфигурационного файла Nextcloud:

sudo vi /var/www/nextcloud/config/config.php
  'logtimezone' => 'Europe/Moscow',
  'log_type' => 'file',
  'logfile' => '/var/log/nextcloud.log',
  'log_rotate_size' => 20971520,
  'loglevel' => '2',

Создадим фильтр для Fail2Ban:

sudo vi /etc/fail2ban/filter.d/nextcloud.conf
[INCLUDES]
before = common.conf

[Definition]
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed:
datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"

Где мы ищем вхождение по фразе «Login failed» и забираем IP адрес  «<HOST>»

Подключим фильтр:

sudo vi /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 222.222.222.0/24 192.168.1.0/24

[nextcloud]
enabled  = true
port     = http,https
filter   = nextcloud
logpath  = /var/log/nextcloud.log
findtime = 600
maxretry = 3
bantime = 24h

В секции DEFAULT мы описали наши IP адреса, которые будут игнорироваться Fail2Ban (по сути белый список).
В секции nextcloud мы указали:

  • enabled = true #фильтр включен
  • port = http,https #Порты блокировки
  • filter = nextcloud #Название фильтра (filter.d/nextcloud.conf)
  • logpath = /var/log/nextcloud.log #Анализируемый лог
  • findtime = 600 #В секундах — время поиска повторяющихся событий
  • maxretry = 3 #Количество повторов (после третьей попытки неудачной авторизации, IP атакующего попадает в Бан)
  • bantime = 24h # Сколько держать нарушителя в бане, можно в минутах -m, в часах -h, либо в секундах — без префикса

Передергиваем Fail2Ban:

sudo service fail2ban restart

Посмотрим лог Fail2Ban:

tail -11 /var/log/fail2ban.log
2020-06-24 12:26:23,349 fail2ban.jail           [109392]: INFO    Creating new jail 'nextcloud'
2020-06-24 12:26:23,349 fail2ban.jail           [109392]: INFO    Jail 'nextcloud' uses pyinotify {}
2020-06-24 12:26:23,355 fail2ban.jail           [109392]: INFO    Initiated 'pyinotify' backend
2020-06-24 12:26:23,358 fail2ban.datedetector   [109392]: INFO      date pattern `',?\\s*"time"\\s*:\\s*"%Y-%m-%d[T ]%H:%M:%S(%z)?"'`: `,?\s*"time"\s*:\s*"Year-Month-Day[T ]24hour:Minute:Second(Zone offset)?"`
2020-06-24 12:26:23,358 fail2ban.filter         [109392]: INFO      maxRetry: 3
2020-06-24 12:26:23,358 fail2ban.filter         [109392]: INFO      findtime: 600
2020-06-24 12:26:23,358 fail2ban.actions        [109392]: INFO      banTime: 86400
2020-06-24 12:26:23,358 fail2ban.filter         [109392]: INFO      encoding: UTF-8
2020-06-24 12:26:23,359 fail2ban.filter         [109392]: INFO    Added logfile: '/var/log/nextcloud.log' (pos = 8919, hash = 03a4a57013be97f0bc9f0e00bed2f23034d14779)
2020-06-24 12:26:23,362 fail2ban.jail           [109392]: INFO    Jail 'sshd' started
2020-06-24 12:26:23,363 fail2ban.jail           [109392]: INFO    Jail 'nextcloud' started

Видим, что наш созданный фильтр подцепился, попробуем провести «атаку» с адреса не входящего в ignoreip, параллельно запустим вывод лога Fail2Ban:

sudo tail -f /var/log/fail2ban.log
2020-06-24 12:31:29,737 fail2ban.filter         [109392]: INFO    [nextcloud] Found 111.111.111.111 - 2020-06-24 12:31:29
2020-06-24 12:32:15,484 fail2ban.filter         [109392]: INFO    [nextcloud] Found 111.111.111.111 - 2020-06-24 12:32:15
2020-06-24 12:32:46,076 fail2ban.filter         [109392]: INFO    [nextcloud] Found 111.111.111.111 - 2020-06-24 12:32:46
2020-06-24 12:32:46,136 fail2ban.actions        [109392]: NOTICE  [nextcloud] Ban 111.111.111.111

Проверим iptables:

sudo iptables -L
Chain f2b-nextcloud (1 references)
target     prot opt source               destination
REJECT     all  --  111.111.111.111  anywhere             reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

Ну и принтсткин с заблокированной машины:
UBUNTU: Fail2Ban и NextcloudНа этом все, всем пока!

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.