Как использовать нокирование портов для защиты SSH в Linux

ssh Applications

Port Knocking - это эффективный способ контроля доступа к портам, позволяющий получить доступ к ним только легитимным пользователям. В этом случае брандмауэр открывает порт только при получении правильной последовательности попыток соединения. Это полезная техника для защиты доступа к портам на вашем сервере. В основном она используется для блокирования доступа автоматических сетевых сканеров, которые ищут открытые порты на серверах. В этой статье мы узнаем, как установить port knocking и настроить его для защиты службы SSH.

Как использовать нокирование портов для защиты SSH в Linux

Для этого мы будем использовать службу knockd.

1. Установка и настройка Knockd

Откройте терминал и выполните следующую команду для установки службы knockd.

Для систем на базе RHEL

После установки откройте файл конфигурации knockd в текстовом редакторе.

Вы увидите различные секции конфигурации в квадратных скобках [...].

В разделе [openSSH] измените стандартную последовательность стуков - 7000,8000,9000 на что-нибудь другое, поскольку она уже хорошо известна и может быть использована для компрометации вашей системы.

Например, мы установим последовательность стуков на 10005, 10006, 10007.

В третьей строке команды измените -A на -I сразу после /sbin/iptables и перед INPUT.

В разделе [closeSSH] измените последовательность стуков на значение, отличное от значения по умолчанию. Это последовательность, используемая для закрытия SSH-соединения после выхода пользователя из сервера.

Вот как выглядит окончательная конфигурация.

Сохраните и закройте файл. Мы также должны изменить конфигурационный файл /etc/default/knockd. Откройте его в текстовом редакторе.

Найдите строку START_KNOCKD=0. Откомментируйте ее и установите значение 1.

Далее перейдите к строке KNOCKD_OPTS="-i eth1". Откомментируйте строку и замените eth1 на активный сетевой интерфейс системы. Вы можете получить его с помощью команд ipaddr или ifconfig. Вот пример конфигурации.

для систем на базе RHEL, раскоментируйте строку OPTIONS и добавьте следующий параметр

где ethN - это наименование интерфейса.

Сохраните и выйдите из файла, чтобы применить изменения. Запустите и включите демон knockd.

Чтобы проверить состояние демона knockd, выполните команду.

sudo systemctl status knockd

2. Закройте порт SSH 22 в брандмауэре

Поскольку knockd сам будет предоставлять или запрещать доступ к SSH, мы собираемся закрыть порт 22. Выполните следующую команду для просмотра существующих правил брандмауэра.

Удалите правила, которые начинаются с 22/tcp. Вот пример удаления правил 5 и 9, относящихся к нему.

ИЛИ

Если появится сообщение с подтверждением, введите y, чтобы продолжить.

3. Настройка клиента Knock

Мы настроили сервер для получения стука сервера. Теперь мы настроим клиент для отправки сообщений стука сервера.

Сначала откройте терминал на клиентской машине и выполните следующую команду для установки клиента knockd.

Для RHEL систем

После завершения установки используйте следующую команду для отправки последовательности стуков.

Вот пример команды для отправки последовательности стуков 10005 10006 10007 на 54.43.32.21. Она должна совпадать с последовательностью, описанной в секции [openSSH] конфигурационного файла knockd на сервере.

Если вы получите сообщение 'hitting tcp 12.34.56.27:10005...', это означает, что стук прошел успешно.

После этого вы должны иметь возможность успешно подключиться к службе SSH с помощью обычной команды.

Введите пароль SSH, когда появится запрос.

После завершения работы отправьте на сервер последовательность стуков, описанную в секции [closeSSH] конфигурационного файла knockd.

Приведенная выше команда закроет порт SSH для вашего клиента. Если вы захотите снова подключиться к SSH-серверу, вам нужно будет снова отправить команду knockd для открытия SSH-порта.

Заключение

В этой статье мы узнали, как использовать кнокинг порта для защиты SSH в Linux.

Avatar for Gnostis
Gnostis
Добавить комментарий