Как скрыть порт приложения используя knockd в Linux — Information Security Squad

Как скрыть порт приложения используя knockd в Linux

Как кибербезопасники, мы должны сделать все, чтобы защитить наш сервер от злоумышленников.

По мере роста Интернета растет угроза нашему серверу.

Один из популярных методов для атаки на наш сервер через порт на вашем сервере, который открыт в свою очередь.

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

Это означает, что он открыт, ожидая соединения.

Выход из порта, открытый в течение 24 часов, не рекомендуется, поскольку он уязвим.

Потому что мы можем сканировать машину, чтобы увидеть открытый порт.

Nmap — один из самых популярных сканеров портов, который может быть использован кем-либо для сканирования вашей машины.

Как мы можем открыть по требованию и закрыть порт, когда он не используется?

Звучит интересно. Теперь мы можем сделать это с помощью приложения knockd.

Что такое knockd

Knockd — это сервер с портами. Он прослушивает весь трафик на интерфейсе ethernet (или PPP), ища специальные «детонационные» последовательности портовых ударов. (Источник: http://www.zeroflux.org/projects/knock)

Как это работает

Каждому приложению нужен порт как «дверь» для «прослушивания» запросов от других клиентов.

Этот порт обычно находится в открытом состоянии или в закрытом состоянии.

На сервере доступно много портов. Но есть несколько портов, согласованных на основе консенсуса, таких как SSH (22), Web (80) и FTP (21).

Основным правилом защиты сервера является открытие только используемых портов и закрытие остальных.

У вас могут быть некоторые порты, которые иногда используются, а иногда и нет.

Не рекомендуется оставлять открытые порты, пока они не используются.

Когда вы устанавливаете knockd, вы можете позволить клиенту «выбить» сервер с шаблоном.

Последовательность детонации может быть выполнена вами.

Таким образом, этот шаблон будет уникален друг для друга.

Если шаблон соответствует, то необходимый вам порт будет открыт в течение определенного периода времени, и запрос может войти на ваш сервер.

Как только вы это сделаете с приложением, вы можете закрыть порт вручную или автоматически.

Как установить knockd

В этой статье мы используем  Ubuntu 16.04 LTS.

Если вы используете другой дистрибутив, пожалуйста, приспособите его к методу установки вашего дистрибутива.

Knockd доступен в репозитории Ubuntu.

Затем мы можем использовать apt-get для установки knockd.

 # sudo apt-get install knockd 

Настроить knockd

Файл конфигурации Knock находится в файле /etc/knockd.conf

Конфигурация проста и понятна.

Мы видим, что конфигурация разделена на три секции.

Раздел [options], [openSSH], чтобы открыть SSH-порт и [closeSSH], чтобы закрыть SSH-порт.

По умолчанию раздел [options] содержит только 1 строку.

Он сообщает нам, что журнал knockd будет записан с использованием приложения журнала операционной системы.

На Ubuntu мы увидим вход в журнал /var/log/syslog.

Конечно, мы можем не использовать SysLog.

Мы можем изменить эту строку, если мы хотим использовать собственный журнал.

 logfile = /var/log/knockd.log 

Вышеприведенная строка помещает файл журнала knockd б в /var/log/knockd.log

Секции [openSSH] имеют идентичные команды с секцией [closeSSH].

sequence = 1200, 1300, 1400
Значение этого параметра полностью настроено. Мы можем выбрать другое случайное число.

seq_timeout = 10
Это значание показывает, когда должен быть завершен шаблон детонации.

command = / sbin / iptables -I INPUT -s% IP% -p tcp -dport 22 -j ACCEPT
Этот параметр откроет порт SSH на порте 22

tcpflags = syn
Этот параметр указывает, что клиент отправит на сервер TCP SYNchronize пакет

Настройка брандмауэра

Как мы узнали раньше, knockd временно откроет определенный порт.

Поэтому мы должны убедиться, что брандмауэр работает на сервере.

В принципе, мы закроем все порты.

Для этого мы используем синтаксис iptables:

Первая команда позволит ходить текущему сеансу через брандмауэр.
Вторая команда позволит серверу выполнить ping другой машиной.
Третья команда отклонит все запросы.

Чтобы проверить службу knockd, мы ожидаем, что наш брандмауэр отключит все ssh-соединения.

Тогда knockd откроет его временно по требованию.

Проверка knockd на стороне сервера

После установки брандмауэра и knockd, мы можем их протестировать.

Чтобы протестировать брандмауэр, попробуйте зайти наудаленный сервер через SSH с другого компьютера. (в этой статье IP-адрес клиента 10.1.6.14 и IP-адрес сервера 10.0.76.224)

 # ssh -l cryptoparty 10.0.76.224 

Где:

-l = имя пользователя
cryptoparty = имя пользователя на целевом сервере


Если брандмауэр работает, мы получим сообщение об ошибке «Connection refused»

Проверка knockd на стороне клиента

На стороне клиента нам нужно сбить клиента, чтобы «сбить» сервер.

На стороне клиента мы используем Centos 5.2. Затем мы устанавливаем knock-client из http://pkgs.repoforge.org/knock/knock-0.5.3.el5.rf.i386.rpm

Затем запустите команду ниже, чтобы сбить сервер:

 # knock -v 10.0.76.224 1200 1300 1400 

Где:

-v = verbose
10.0.76.224 = IP-адрес сервера
1200 1300 1400 = последовательность детонации, которая определена в конфигурации knockd

После стука сервера, теперь мы увидим, что IP-адрес клиента теперь разрешен для входа на сервер.

 # sudo / sbin / iptables -L -n | grep 10.1.6.14 

Закрыть порт

После того как клиент выполнил удаленный сервер, клиенту необходимо закрыть порт. Для этого мы можем использовать следующую команду:

 

 # knock -v 10.0.76.224 1400 1300 1200 

 

Затем мы можем запустить SSH для удаленного сервера.

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

Если бы это было успешно, мы увидим, что IP 10.1.6.14 исчезнет.

 # iptables -L -n | grep <span id="result_box" class="" lang="ru">10.1.6.14  

 

На предыдущем, после стука, чтобы открыть порт, мы увидели, что IP-адрес клиента — 10.1.6.14 — разрешен для входа на сервер через брандмауэр.

Теперь, после того, как мы постучим, чтобы закрыть порт, если мы проверим с помощью той же команды iptables, это правило было удалено.

Автоматическое закрытие порта

Поскольку активность закрытого порта инициируется клиентом, у нас будет возможность того, что клиент забудет закрыть порт.

Мы не хотим, чтобы это произошло.

Поэтому мы можем настроить knockd для автоматического закрытия порта.

Для этого нам нужно настроить конфигурационный файл knockd.

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

Команда по-прежнему выглядит одинаково.

Разница с предыдущей конфигурацией заключается в том, что мы поместили раздел [openSSH] и [closeSSH] в тот же блок.

Затем мы добавляем cmd_timeout = 10 line, чтобы сообщить серверу выполнить stop_command через 10 секунд после запуска команды start_command.

Порт будет автоматически закрыт, но установленное соединение останется подключенным.

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40