Fail2Ban и Port Knocking - двойная защита SSH от ботов и сканеров | Cshield - Форум социальной инженерии

Fail2Ban и Port Knocking - двойная защита SSH от ботов и сканеров

SUNKEM_1

Местный
Когда ты настраиваешь сервер с SSH-доступом из интернета, он моментально попадает под атаки ботов, которые круглосуточно перебирают пароли. Даже с ключами лучше подстраховаться. Вот где помогут Fail2Ban и port knocking.

Что такое Fail2Ban и как он работает?

Fail2Ban - это защитник, который мониторит логи и автоматически банит IP-адреса при подозрительной активности.​

Простой принцип:
  • Кто-то неудачно входит 3 раза подряд -> IP блокируется в фаерволе
  • Бан снимается через заданное время
  • Ты спишь спокойно, а Fail2Ban охраняет твой сервер

Быстрая установка и настройка Fail2Ban:



Bash:
sudo apt update
sudo apt install fail2ban -y
Базовая настройка для SSH:

2. Создаём конфиг:

Bash:
sudo nano /etc/fail2ban/jail.d/sshd.local



Bash:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1

Что это значит:
  • port = 2222 - твой SSH-порт (если менял с стандартного 22)
  • maxretry = 3 - 3 неудачные попытки = бан
  • findtime = 10m - считает попытки за последние 10 минут
  • bantime = 1h - банит на 1 час
  • ignoreip - IP, которые никогда не банить
4. Запускаем и проверяем:


Bash:
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

Port Knocking - секретный стук в дверь

Port Knocking - техника, когда SSH-порт изначально закрыт и открывается только по "секретному стуку" - правильной последовательности портов.​

  1. SSH-порт закрыт и невидим для сканеров
  2. Ты "стучишься": порт 7000 -> 8000 -> 9000
  3. Сервер открывает SSH-порт только для твоего IP
  4. Подключаешься как обычно

Настраиваем Port Knocking:


1. Установка knockd:


Bash:
sudo apt install knockd -y
Конфигурация (/etc/knockd.conf):


Bash:
[options]
logfile = /var/log/knockd.log


Bash:
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
command = /usr/sbin/ufw allow from %IP% to any port 2222
tcpflags = syn

[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
command = /usr/sbin/ufw delete allow from %IP% to any port 2222
tcpflags = syn

2. Включаем и запускаем:


Bash:
sudo systemctl enable --now knockd

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

Bash:
knock -v ваш_сервер_ip 7000 8000 9000
ssh -p 2222 user@ваш_сервер_ip

Сравнение технологий:



ИнструментЧто делаетПлюсыМинусы
Fail2BanБанит IP после неудачных попытокПростая настройка, эффективно против ботовНе скрывает порт
Port KnockingСкрывает порт до "секретного стука"Максимальная скрытность, невидим для сканеровСложнее настройка, нужен клиент

Практические советы


Комбинируй оба подхода:

  1. Port knocking скрывает SSH от массовых сканеров
  2. Fail2Ban ловит тех, кто всё же нашёл порт
  3. Ключи SSH вместо паролей - третий уровень защиты
Важные моменты:

  • Всегда тестируй настройки с второго подключения
  • Добавь свой IP в ignoreip в Fail2Ban
  • Используй UFW или iptables для базового фаервола
  • Настрой мониторинг логов Fail2Ban
Fail2Ban + Port Knocking = неприступная крепость для SSH.​

  • Fail2Ban - твой автоматический охранник
  • Port Knocking - секретный вход, известный только тебе
  • SSH-ключи - надёжная аутентификация
Эта комбинация защитит даже самый простой VPS от 99% автоматических атак. Настраивай единожды — пользуйся годами!

P.S. Не забудь про бэкап конфигов перед экспериментированием!
 
Сверху