26 вересня, Вівторок, 2023
A- A A+

fail2ban and zimbra pc service

Налаштування Zimbra Fail2ban

Як встановити і налаштувати Fail2ban для поштового сервера Zimbra на Ubuntu 16.04.

Fail2Ban - це програмне забезпечення для запобігання вторгнення, яке захищає комп'ютерні сервери від атак нападу.

Встановіть Fail2ban на Ubuntu 16.04:

sudo apt-get update
sudo apt-get upgrade -y

Як встановити Fail2ban

Тепер настав час встановити Fail2ban. Це можна зробити за допомогою однієї команди. У вікні терміналу видайте:

sudo apt-get install -y fail2ban

Наведена вище команда встановить все необхідне для запуску та керування Fail2ban (включаючи команду fail2ban-client, яка необхідна для розблокування IP-адрес - більше про це трохи).

Після завершення інсталяції потрібно запустити та ввімкнути Fail2ban з наступними двома командами:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Fail2ban запущено в системі і готова до налаштування.

Налаштування Fail2ban

Fail2ban налаштовується за допомогою jails. В'язниця дозволяє визначити, яким чином буде здійснюватися моніторинг послуги, та як швидко вжити заходів проти атак. Існує досить багато варіантів, які можна налаштувати для кожного в'язниці, але ми почнемо з невеликого розміру.

З коробки система вже досить безпечна. Проте, вона також дуже гнучка. Основним конфігураційним файлом є /etc/fail2ban/jail.conf. Ви не хочете редагувати цей файл. Замість цього ви створите новий файл із розширенням .local. Fail2ban завжди читає файли .conf, перші і .local файли другий. Будь-яка конфігурація, прочитана у файлі .local, перекриває подібні конфігурації у файлі .conf. Припустимо, ви хочете створити спеціальний джейл для демона Secure Shell, який:

    Монітор /var/log/auth.log
    Використовуйте стандартний фільтр fail2ban sshd
    Встановіть порт SSH на 22
    Встановіть максимальну кількість повторів до 3

Налаштування ssh в .local jail перевизначить будь-яку подібну конфігурацію, що знаходиться в основному конфігураційному файлі, jail.conf (наприклад, за замовчуванням максимальний повтор в jail.conf встановлюється на 5). Якщо ця особа (або бот) триває не вдасться виконати SSH-вхід, ця IP-адреса буде заборонена.

Щоб налаштувати це, виконайте команду:

sudo nano /etc/fail2ban/jail.local

В цей файл записуємо те що повинно відслідковуватись та включаєм фільтра

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

В нашому випадку нам необхідно створити фільтр для відслудковування zimbra звернень, отже створюємо файл з фільтром

touch /etc/fail2ban/filter.d/zimbra.conf

З вмістом:

# Fail2Ban configuration file
#
# Author:
#
# $Revision: 1 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = \[ip=<HOST>;\] account - authentication failed for .* \(no such account\)$
\[ip=<HOST>;\] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$
;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
\[oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$
NOQUEUE: reject: RCPT from .*\[<HOST>\]: 550 5.1.1 .*: Recipient address rejected:

# .*\[ip=<HOST>;\] .* - authentication failed for .* \(invalid password\)
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

Доповнюємо файл в якому збережені базові правила блокування /etc/fail2ban/jail.conf

[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-account]
sendmail[name=zimbra-account, dest=Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.;Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 5

[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-audit]
sendmail[name=Zimbra-audit, dest=Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.;Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 5

[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-recipient]
sendmail[name=Zimbra-recipient, dest=Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.;Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.]
logpath = /var/log/zimbra.log
#findtime = 604800
bantime = 172800
maxretry = 5

[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=postfix, port=smtp, protocol=tcp]
sendmail-buffered[name=Postfix, dest=Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.;Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

Не забудьте змінити  Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. на вашу адресу електронної пошти, також додайте ваш IP в поле ignoreip = .

Перезапустити налаштування fail2ban

# systemctl start fail2ban
# systemctl enable fail2ban

Перевірити статус запущений фільтрів можно за командою

# fail2ban-client status
Status
|- Number of jail:      4
`- Jail list:   sshd, zimbra-account, zimbra-audit, zimbra-recipient

Розблокування IP-адреси

Можливі варіанти блокування і довірених ІР адресів, і необхідно знати як їх вивести з бан листа:

sudo fail2ban-client set sshd unbanip 192.168.1.100

Наступний крок перевірити окремий фільтр на наявність заблокованих ІР адрес

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     162
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 88
   |- Total banned:     88
   `- Banned IP list:   103.86.49.28 103.97.6.253 104.248.237.238 105.255.192.126 115.47.160.16 119.29.11.214 121.201.78.33

От і все