Вопрос или проблема
Сейчас я создаю свой первый 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 активен, чтобы обеспечить дополнительный уровень защиты.
Заключение
Обязательно регулярно проверяйте логи системы и используйте инструменты мониторинга для выявления возможных уязвимостей. Применение всестороннего подхода к защите сервера поможет вам более эффективно противостоять целенаправленным или массовым атакам.