Fail2Ban блокирует IP, но они все равно могут атаковать меня, что я делаю не так?

Вопрос или проблема

Сейчас я создаю свой первый Linux сервер, используя Fedora 36. Я активировал SSH и заметил, что боты пытаются подключиться к моему серверу.

После небольшого исследования я нашел fail2ban и установил его. Он работал нормально, и я подумал, что проблема решена, но даже после нескольких попыток И после того, как fail2ban их блокирует, они продолжают атаковать. Я прочитал, что они используют постоянные соединения. Есть ли способ противостоять этому, или у меня другая проблема?

Вот моя настройка:

/etc/fail2ban/jail.local:

[DEFAULT]
banaction = iptables-allports

[sshd]
enabled = true
port = all
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = -1

/var/log/auth.log не существует, так что я не знаю, откуда он берет свои данные, но он что-то читает и блокирует людей.

/var/log/fail2ban.log, о ком-то, кто все еще может атаковать и не был заблокирован после трех попыток:

2022-08-19 23:40:18,366 fail2ban.server         [2588]: INFO    Reload jail 'sshd'
2022-08-19 23:40:18,367 fail2ban.filter         [2588]: INFO      maxLines: 1
2022-08-19 23:40:18,369 fail2ban.filtersystemd  [2588]: INFO    [sshd] Added journal match for: '_SYSTEMD_UNIT=sshd.service + _COMM=sshd'
2022-08-19 23:40:18,369 fail2ban.filter         [2588]: INFO      maxRetry: 3
2022-08-19 23:40:18,369 fail2ban.filter         [2588]: INFO      findtime: 600
2022-08-19 23:40:18,369 fail2ban.actions        [2588]: INFO      banTime: -1
2022-08-19 23:40:18,369 fail2ban.filter         [2588]: INFO      encoding: UTF-8
2022-08-19 23:40:18,370 fail2ban.server         [2588]: INFO    Jail 'sshd' reloaded
2022-08-19 23:40:18,371 fail2ban.server         [2588]: INFO    Reload finished.
2022-08-19 23:43:07,478 fail2ban.filter         [2588]: INFO    [sshd] Found 79.232.107.204 - 2022-08-19 23:43:07
2022-08-19 23:43:07,480 fail2ban.filter         [2588]: INFO    [sshd] Found 79.232.107.204 - 2022-08-19 23:43:07
2022-08-19 23:43:09,228 fail2ban.filter         [2588]: INFO    [sshd] Found 79.232.107.204 - 2022-08-19 23:43:08
2022-08-19 23:43:09,229 fail2ban.filter         [2588]: INFO    [sshd] Found 79.232.107.204 - 2022-08-19 23:43:08
2022-08-19 23:43:09,350 fail2ban.actions        [2588]: NOTICE  [sshd] Ban 79.232.107.204
2022-08-19 23:49:04,030 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:03
2022-08-19 23:49:04,030 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:03
2022-08-19 23:49:04,031 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:03
2022-08-19 23:49:04,031 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:03
2022-08-19 23:49:04,032 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:03
2022-08-19 23:49:04,032 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:03
2022-08-19 23:49:04,032 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:03
2022-08-19 23:49:04,033 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:03
2022-08-19 23:49:04,353 fail2ban.actions        [2588]: NOTICE  [sshd] Ban 1.117.78.189
2022-08-19 23:49:06,478 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:06
2022-08-19 23:49:06,479 fail2ban.filter         [2588]: INFO    [sshd] Found 1.117.78.189 - 2022-08-19 23:49:06
...

iptables -L -nv:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
13336  897K f2b-sshd   all  --  *      *       0.0.0.0/0            0.0.0.0/0
12829  859K f2b-sshd   all  --  *      *       0.0.0.0/0            0.0.0.0/0
13026  874K f2b-sshd   all  --  *      *       0.0.0.0/0            0.0.0.0/0
13170  888K f2b-sshd   all  --  *      *       0.0.0.0/0            0.0.0.0/0
16162 1358K f2b-sshd   all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain f2b-sshd (5 references)
 pkts bytes target     prot opt in     out     source               destination
  507 38384 REJECT     all  --  *      *       1.117.78.0/24        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       79.232.107.0/24      0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       94.131.132.0/24      0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       82.65.33.0/24        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       82.157.143.0/24      0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       76.186.2.0/24        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       61.177.173.0/24      0.0.0.0/0            reject-with icmp-port-unreachable
...

Я также установил некоторые параметры в /etc/sysctl.conf:

net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1

Я также настроил их, чтобы заблокировать всю сеть, используя /24, но я не помню, где я это сделал.

Если кто-то знает, в чем моя проблема, или вам нужна дополнительная информация, пожалуйста, сообщите мне.

Включите секцию recidive в jail.local. Это обеспечивает гораздо более длительное время сканирования (в моем случае пять дней), и кажется, что оно ловит медленные, но стабильные попытки, которые я раньше замечал.

Вот мои настройки; обратите внимание, что он сканирует файл fail2ban.log, чтобы учитывать только те хосты, которые были заблокированы.

[recidive]

enabled   = true
logpath   = /var/log/fail2ban.log
maxretry  = 3
findtime  = 432000      ; 5 дней
bantime   = 2419200     ; 4 недели

Обратите внимание на это: Установить Fail2ban с Firewalld на Fedora Linux 35

Разве Fedora не использует firewalld вместо iptables? Вы должны использовать один из них, но не смешивать оба.

Чтобы убедиться, проверьте: systemctl status firewalld и systemctl is-enabled firewalld. Если он активирован, перенастройте fail2ban на использование firewalld.

.

Ответ или решение

Fail2Ban — это мощный инструмент для защиты вашего Linux-сервера, блокируя IP-адреса, которые совершают множество неудачных попыток входа в систему. Однако, если ваши IP-адреса всё ещё могут осуществлять атаки после настройки Fail2Ban, это может быть связано с несколькими причинами. Анализируя вашу проблему, можно выделить несколько ключевых моментов и шагов для решения проблемы:

1. Неверная конфигурация журнала

Вы упомянули, что /var/log/auth.log не существует, однако это путь, указанный в конфигурации jail.local. На Fedora, обычно, логи аутентификации могут находиться в /var/log/secure. Убедитесь, что logpath в jail.local правильно указывает на существующий файл журнала.

2. Использование Firewalld вместо iptables

На дистрибутивах Fedora стандартным инструментом управления брандмауэром является Firewalld, а не iptables. Возможно, ваш Fail2Ban настроен на работу с iptables, в то время как Firewalld активен. Проверьте статус Firewalld с помощью команд:

systemctl status firewalld
systemctl is-enabled firewalld

Если Firewalld включен, перенастройте Fail2Ban на использование firewalld в качестве banaction. Это можно сделать, заменив строку в вашем jail.local:

banaction = firewallcmd-multiport

3. Проверка на устойчивые подключения

Существует возможность, что атакующие используют долговременные подключения, чтобы обойти блокировки Fail2Ban. Вы можете проверить сетевые подключения с помощью netstat -antp и убедиться, что подключения разрываются. Также рассмотрите изменение стандартного порта SSH с 22 на другой, это поможет уменьшить количество случайных атак.

4. Усиление защиты через recidive

Вы можете усилить защиту, используя recidive jail в Fail2Ban, который будет отслеживать повторные попытки спустя длительное время:

[recidive]
enabled   = true
logpath   = /var/log/fail2ban.log
maxretry  = 3
findtime  = 432000      ; указывает на 5 дней
bantime   = 2419200     ; устанавливает срок блокировки на 4 недели

Это будет особенно эффективно против медленных и устойчивых атак.

5. Дополнительные меры безопасности

  • SSH Ключи: Настройте аутентификацию по SSH-ключам и отключите вход с паролем.
  • Firewall и SELinux: Убедитесь, что ваш брандмауэр правильно настроен, и SELinux активен, чтобы обеспечить дополнительный уровень защиты.

Заключение

Обязательно регулярно проверяйте логи системы и используйте инструменты мониторинга для выявления возможных уязвимостей. Применение всестороннего подхода к защите сервера поможет вам более эффективно противостоять целенаправленным или массовым атакам.

Оцените материал
Добавить комментарий

Капча загружается...