Fail2Ban

Защита SSH (22 порт): баны по IP через Fail2Ban.

Fail2Ban автоматически блокирует брутфорс по SSH и пишет баны в iptables.

Используйте для базовой защиты сервера и ручного управления банами.

Установка

Команды
sudo apt update
sudo apt install fail2ban

Проверка

Команда
fail2ban-client status

Базовая настройка

Создаём локальный конфиг:

Команда
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Открываем файл:

Команда
sudo nano /etc/fail2ban/jail.local

Минимально нужное для SSH:

Конфиг
[sshd]
enabled  = true
port     = 22
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 5
bantime  = 1h
findtime = 10m

Применение настроек

Команда
sudo systemctl restart fail2ban

Проверка jail sshd

Команда
sudo fail2ban-client status sshd

Как проверить IP в бане

Посмотрите строку Banned IP list в выводе команды:

Команда
sudo fail2ban-client status sshd

Управление банами

Разбанить IP
sudo fail2ban-client set sshd unbanip 1.2.3.4
Забанить вручную
sudo fail2ban-client set sshd banip 1.2.3.4

Полезные замечания

Fail2Ban не заменяет смену порта и ключи SSH.

Лучше отключить вход по паролю: PasswordAuthentication no.

PasswordAuthentication no
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf
Если отсутствует /etc/ssh/sshd_config.d/50-cloud-init.conf
sudo nano /etc/ssh/sshd_config
После изменений
sudo systemctl restart ssh

Открыть порт 22 только для определеного ip адресса.

только с ip 1.2.3.4
apt update
apt install iptables-persistent
iptables -A INPUT -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
netfilter-persistent save
systemctl status netfilter-persistent

Сгенерировать ключи

Windows
ssh-keygen -t ed25519 -C "MyKeyComment"
Windows: прописать ключ
Start-Service ssh-agent
ssh-add "путь к сгенерированому ключу"
Linux
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "MyKeyComment"

На сервере добавить ключ пользователю

Server: прописать ключ
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "вставьте_сюда_содержимое_сгенерированного_ключа.pub" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
systemctl restart ssh