Продвинутая настройка безопасности для подключения по SSH к удалённому серверу.
Настройка knockd
Обновляем пакеты
sudo apt-get update && sudo apt-get upgrade
Устанавливаем демон knockd
sudo apt install knockd
Редактируем файл /etc/knockd.conf
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = <Последовательность портов для открытия>
seq_timeout = 5
command = systemctl start ssh.service
tcpflags = syn
[closeSSH]
sequence = <Последовательность портов для закрытия>
seq_timeout = 5
command = systemctl stop ssh.service
tcpflags = syn
Включаем его и добавляем в автозагрузку
sudo systemctl start knockd.service
sudo systemctl enable knockd.service
Отключаемся от удаленного сервера командой exit или сочетанием клавиш Ctrl+A+D Создаем скрипт для автоматического подключения на локальной машине autoknock.sh
#!/bin/bash
knock <IP-адрес сервера> <Последовательность портов для открытия>
sleep 5
ssh <Имя юзера>@<IP-адрес сервера>
knock <IP-адрес сервера> <Последовательность портов для закрытия>
Делаем его исполняемым
chmod +x autoknock.sh
Подключаемся к серверу ./autoknock.sh
Настройка fail2ban
Устанавливаем fail2ban
sudo apt install fail2ban
Cоздаем jail для банов IP-адресов после неудачных попыток подключений в файле /etc/fail2ban/jail.local
[sshd]
enabled = true
mode = aggressive
port = ssh
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 24h
ignoreip = 127.0.0.1
В файле /etc/ssh/sshd_config раскомментируем и редактируем параметр LogLevel
...
LogLevel VERBOSE
...
Запускаем сервис fail2ban и добавляем его в автозапуск
sudo systemctl start fail2ban.service
sudo systemctl enable fail2ban.service
Чтобы посмотреть забаненные IP-адреса
sudo fail2ban-client status sshd