Пример Port Knocking

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
kukur
Сообщения: 6
Зарегистрирован: 27 авг 2024, 14:53

Привет всем!
На моём микротике есть возможность подключения через WAN(интернет) и для безопасности решил настроить Port Knocking.
Тут я хочу разместить пример своей настройки, который вы можете применить у себя или высказать свою критику, которая тоже одобряется.
И так. Мой Port Knocking был реализован на протоколе TCP. Клиент, который должен стучаться на порты, отправляет TCP пакеты на определённые порты в определённой последовательности. В моём случае для этого я написал программу для автоматизации процесса. Если захотите реализовать такой же вариант конфигурации, то ПО можно найти тут: https://github.com/kukurua/Port-Knocking.
Микротик, в свою очередь, обрабатывает получаемые пакеты TCP с помощью фаервола и посылает ответ TCP-reset(чтобы моя программа поняла, что она стучится в тот порт). От отправки ответа можно и избавиться. Мне это необходимо для работы программы.
В случае, если клиент стучится на верный порт, микротик добавляет на небольшой промежуток времени IP адрес клиента в список прошедших первую ступень проверки. За то время, пока клиент находится в списке прошедших проверку он должен постучаться на второй порт, который также добавит IP адрес клиента в список прошедших вторую ступень проверки и т.д. Количество необходимых портов для "простукивания" определяет сам администратор сети. После всех этих кругов ада микротик предоставляет вам доступ уже к полезным портам(к примеру: SSH, WinBox) или выполняет другие функции, которые вы настроили.

От теории к конфигурации
Лично я вывел Port Knocking в отдельную цепочку, а для того чтобы в неё попасть создал правило в цепочке input с действием jump, которое отслеживает входящие tcp пакеты на определённых портах.
Правило из цепочки input:

Код: Выделить всё

12   ;;; Port Knoking Chain Jump
      chain=input action=jump jump-target=Security Port Knock connection-state=new protocol=tcp in-interface-list=WAN dst-port=1111,1112,1113 log=no log-prefix=""
Далее идёт цепочка Port Knocking:

Код: Выделить всё

 0    ;;; security: Port Knoking
      chain=Security Port Knock action=add-src-to-address-list protocol=tcp src-address-list=knock 2 address-list=knock 3 address-list-timeout=2h dst-port=1113 
      log=yes log-prefix="accept port knocking" 

 1    chain=Security Port Knock action=reject reject-with=tcp-reset protocol=tcp src-address-list=knock 2 dst-port=1113 log=no log-prefix="" 

 2    chain=Security Port Knock action=add-src-to-address-list protocol=tcp src-address-list=knock 1 address-list=knock 2 address-list-timeout=30s dst-port=1112 
      log=no log-prefix="" 

 3    chain=Security Port Knock action=reject reject-with=tcp-reset protocol=tcp src-address-list=knock 1 dst-port=1112 log=no log-prefix="" 

 4    chain=Security Port Knock action=add-src-to-address-list protocol=tcp address-list=knock 1 address-list-timeout=30s dst-port=1111 log=no log-prefix="" 

 5    chain=Security Port Knock action=reject reject-with=tcp-reset protocol=tcp dst-port=1111 log=no log-prefix=""

 6    chain=Security Port Knock action=drop log=no log-prefix="" 
В данном примере клиенту нужно будет "постучаться" по трём портам прежде чем он попадёт в список knock 3, который открывает доступ к полезным портам клиенту.

Правила под номерами: 5, 3 и 1 не обязательны. В моём случае они нужны для корректной работы программы.


Ответить