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