Защита SSH-сервера с помощью SSHGuard и Port Knocking
SSHGuard
SSHGuard — это инструмент безопасности, предотвращающий атаки методом перебора, особенно направленные на SSH-сервисы.
Установка SSHGuard
sudo apt install sshguard
Запуск службы SSHGuard
sudo systemctl enable --now sshguard.service
Настройка SSHGuard
Файл конфигурации находится по адресу:
/etc/sshguard/sshguard.conf
Основные параметры конфигурации:
- BACKEND — определяет серверную часть брандмауэра (например,
sshg-fw-nft-sets
,sshg-fw-iptables
). - LOGREADER — задаёт способ обработки логов.
- THRESHOLD — количество неудачных попыток входа перед блокировкой IP.
- BLOCK_TIME — время блокировки IP в секундах.
- DETECTION_TIME — период отслеживания активности IP.
- WHITELIST_FILE — путь к файлу с IP-адресами, которые никогда не блокируются.
После изменения настроек необходимо перезапустить службу:
sudo systemctl restart sshguard
Настройка SSHGuard с UFW
UFW (Uncomplicated Firewall) является уровнем абстракции для управления iptables/nftables.
- Проверьте, что
BACKEND
настроен на:
/usr/libexec/sshguard/sshg-fw-nft-sets
- Откройте файл UFW
before.rules
:
sudo nano /etc/ufw/before.rules
- Добавьте следующие строки после "allow all on loopback":
-A ufw-before-input -j SSHGUARD
-A ufw-before-output -j SSHGUARD
-A ufw-before-forward -j SSHGUARD
- Сохраните файл и перезапустите UFW:
sudo systemctl restart ufw
Настройка SSHGuard с iptables
- Проверьте настройку
BACKEND
:
sudo vim /etc/sshguard/sshguard.conf
- Создайте новую цепочку:
sudo iptables -N sshguard
- Перенаправьте SSH-трафик через цепочку:
sudo iptables -A INPUT -p tcp --dport 22 -j sshguard
- Сохраните изменения:
sudo apt install iptables-persistent
sudo iptables-save -f /etc/iptables/rules.v4
- Посмотреть заблокированные IP:
sudo iptables -L sshguard -n
Белый список IP-адресов
Добавьте доверенные IP-адреса в файл /etc/sshguard/whitelist
, например:
192.168.0.34
192.168.0.0/24
myhost.domain.com
После изменения списка перезапустите службу:
sudo systemctl restart sshguard
Port Knocking
Port Knocking — это механизм, который предотвращает несанкционированный доступ к сервису, требуя определённой последовательности обращений к портам.
Установка Port Knocking
sudo apt install knock-server
Управление службой knockd
sudo systemctl start knockd # Запуск
sudo systemctl stop knockd # Остановка
sudo systemctl enable knockd # Автозапуск
sudo systemctl restart knockd # Перезапуск
Предварительная настройка
- Разрешить существующие соединения:
iptables -A INPUT -i <int> -m state --state ESTABLISHED,RELATED -j ACCEPT
- Запретить новые входящие соединения:
iptables -A INPUT -j DROP
Настройка Port Knocking
Откройте файл /etc/knockd.conf
и добавьте:
[options]
logfile = /var/log/knockd.log
interface = <интерфейс>
[openSSH]
sequence = 661,671,681
seq_timeout = 5
tcpflags = syn
cmd_timeout = 30
start_command = /sbin/iptables -I INPUT -i <интерфейс> -s %IP% -p tcp --dport 22 -j ACCEPT
stop_command = /sbin/iptables -D INPUT -i <интерфейс> -s %IP% -p tcp --dport 22 -j ACCEPT
После внесения изменений перезапустите службу:
sudo systemctl restart knockd
Подключение через Port Knocking
С клиента отправьте последовательность "стуков":
knock target.host 661 671 681
ssh [email protected]
При успешной проверке доступ к SSH будет открыт.
Настроив SSHGuard и Port Knocking, вы значительно усилите защиту вашего SSH-сервера от атак методом перебора.
Я писал уже как настроить ssh все эти посты можно применять для зашиты вашего сервера от взлома.



