Дополнительно
Добавить в закладкиSUNKEM_1
Местный
Когда ты настраиваешь сервер с SSH-доступом из интернета, он моментально попадает под атаки ботов, которые круглосуточно перебирают пароли. Даже с ключами лучше подстраховаться. Вот где помогут Fail2Ban и port knocking.
Простой принцип:
Базовая настройка для SSH:
Что это значит:
Что такое Fail2Ban и как он работает?
Fail2Ban - это защитник, который мониторит логи и автоматически банит IP-адреса при подозрительной активности.
Простой принцип:
- Кто-то неудачно входит 3 раза подряд -> IP блокируется в фаерволе
- Бан снимается через заданное время
- Ты спишь спокойно, а Fail2Ban охраняет твой сервер
Быстрая установка и настройка Fail2Ban:
1. Установка:
Bash:
sudo apt update
sudo apt install fail2ban -y
2. Создаём конфиг:
Bash:
sudo nano /etc/fail2ban/jail.d/sshd.local
3. Добавляем:
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-порт изначально закрыт и открывается только по "секретному стуку" - правильной последовательности портов.
Как работает:
- SSH-порт закрыт и невидим для сканеров
- Ты "стучишься": порт 7000 -> 8000 -> 9000
- Сервер открывает SSH-порт только для твоего IP
- Подключаешься как обычно
Настраиваем 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 | Скрывает порт до "секретного стука" | Максимальная скрытность, невидим для сканеров | Сложнее настройка, нужен клиент |
Практические советы
Комбинируй оба подхода:
- Port knocking скрывает SSH от массовых сканеров
- Fail2Ban ловит тех, кто всё же нашёл порт
- Ключи SSH вместо паролей - третий уровень защиты
Важные моменты:
- Всегда тестируй настройки с второго подключения
- Добавь свой IP в ignoreip в Fail2Ban
- Используй UFW или iptables для базового фаервола
- Настрой мониторинг логов Fail2Ban
Вывод:
Fail2Ban + Port Knocking = неприступная крепость для SSH.
- Fail2Ban - твой автоматический охранник
- Port Knocking - секретный вход, известный только тебе
- SSH-ключи - надёжная аутентификация
P.S. Не забудь про бэкап конфигов перед экспериментированием!