Защита 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.

  1. Проверьте, что BACKEND настроен на:
/usr/libexec/sshguard/sshg-fw-nft-sets
  1. Откройте файл UFW before.rules:
sudo nano /etc/ufw/before.rules
  1. Добавьте следующие строки после "allow all on loopback":
-A ufw-before-input -j SSHGUARD
-A ufw-before-output -j SSHGUARD
-A ufw-before-forward -j SSHGUARD
  1. Сохраните файл и перезапустите UFW:
sudo systemctl restart ufw

Настройка SSHGuard с iptables

  1. Проверьте настройку BACKEND:
sudo vim /etc/sshguard/sshguard.conf
  1. Создайте новую цепочку:
sudo iptables -N sshguard
  1. Перенаправьте SSH-трафик через цепочку:
sudo iptables -A INPUT -p tcp --dport 22 -j sshguard
  1. Сохраните изменения:
sudo apt install iptables-persistent
sudo iptables-save -f /etc/iptables/rules.v4
  1. Посмотреть заблокированные 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 # Перезапуск

Предварительная настройка

  1. Разрешить существующие соединения:
iptables -A INPUT -i <int> -m state --state ESTABLISHED,RELATED -j ACCEPT
  1. Запретить новые входящие соединения:
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 все эти посты можно применять для зашиты вашего сервера от взлома.

Firewalls UFW настройка в Ubuntu 24.04 server
Конфигурация и управление UFW (Uncomplicated Firewall) Проверка состояния UFW Перед началом работы убедитесь, что UFW активен: sudo ufw status Если UFW отключен, включите его: sudo ufw enable Основные правила настройки Разрешение и блокировка трафика Разрешение SSH (порт 22) Перед включением UFW важно разрешить SSH, чтобы не потерять доступ к серверу:
Настройка правил iptables в Linux
Основы Iptables * ACCEPT: разрешить передачу пакета. * DROP: запретить передачу пакета. * RETURN: пропустить текущую цепочку и перейти к следующему правилу в цепочке, которая ее вызвала. * INPUT – используется для контроля входящих пакетов. Можно разрешать или блокировать подключения по порту, протоколу или IP-адресу источника. * FORWARD – используется для фильтрации пакетов, приходящих на сервер, но
Установка и настройка сервера SSH в Linux
Установка пакетов SSH sudo apt-get install ssh или openssh-server Настройка SSH sudo vim /etc/ssh/sshd_config Параметры Port поменяйте на кастомный 2211 или 2233 ... PermitRootLogin no PubkeyAuthentication yes Важно также отключать парольный доступ: PasswordAuthentication no PermitEmptyPasswords no Для применения сделанных настроек необходим перезапуск SSH-сервера: systemctl restart sshd Вы также
Настройка Fail2ban. Защита ssh сервера
Установка и настройка Fail2ban в Ubuntu 1. Установка Fail2ban Запустите команду для установки пакета: sudo apt update && sudo apt install fail2ban -y 2. Запуск и проверка статуса службы После установки необходимо запустить службу и добавить её в автозапуск: sudo systemctl enable --now fail2ban Проверка статуса: sudo systemctl status fail2ban Ожидаемый