Я знаю что такое Port Knocking
. Но я где-то читал, писал URL Knocking
. Я не нашел никакой полезной ссылки о URL Knocking
. Теперь я действительно хочу знать, что это такое и чем оно отличается от Port Knocking
. Заранее спасибо.
2 ответа
URL Стучит непрерывно, читая журнал apache (или другого веб-сервера), и если он видит какой-то URL (например, https://example.com/TheSecretStringHere/
), обход которого совпадает с предустановкой на стороне сервера "TheSecretStringHere", строка с запрошенным URL, затем просто манипулируйте правилами брандмауэра, открывая доступ к указанному на стороне сервера порту. Это решение можно использовать без какого-либо стороннего программного обеспечения, используя только обычно устанавливаемые утилиты ОС.
Преимущество этого метода в том, что - если вы используете протокол https
, то он исключает наблюдателей типа «человек посередине», поскольку фактический URL-адрес невидим, поскольку он зашифрован. Другой - легко реализовать собственное решение на основе вашего рабочего процесса.
Недостаток - все это основано на реализации.
В предоставленной мной ссылке скрипт постоянно читает журнал веб-сервера, используя эффективную функцию
tail -f
(который использует уведомление ядра inotify об изменениях файла) и фильтрует URL с помощью grep
. Если URL совпадает с секретной строкой, скрипт запускает какое-то действие.
Существуют дополнительные дополнительные утилиты, которые можно использовать в пользовательском пространстве, такие как inotifywait
которые могут эффективно отслеживать журнал веб-сервера и, если есть какие-либо изменения, запускать некоторые действия (которые могут быть не просто открытием порта).
В отличие от Port Knocking
, обычно это сторонние программы, которые не защищены от посредников, но делают то же самое, что и URL Knocking
.
В заключение, если вы настроите любой веб-сервер, который может создавать файлы журналов и поддерживать https
то IMO URL Knocking
является более безопасным способом открытия портов по требованию.
Пример URL-стука (по ссылке выше):
#!/bin/sh
open_port() {
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 22
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
}
close_port() {
/sbin/iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 22
/sbin/iptables -D INPUT -p tcp --dport 22 -j ACCEPT
}
tail -n0 --follow=name /var/log/apache2/access.log |
(while read line; do
if echo $line | grep "/SOME SECRET THING/"; then
echo OPEN
open_port
sleep 60
echo CLOSE
close_port
fi
done)
Кредит на сценарий собирается: Джейсон Спашетт
URL Knocking - та же идея, что и Port Knocking, но вместо того, чтобы наблюдать за попытками подключения к секретной серии портов, он ищет HTTP-запросы для секретной серии URL. Он был изобретен для случаев, когда внешнее устройство, выполняющее стук, находится за брандмауэром с ограничительными правилами выхода, поэтому оно не может стучать ни в какие порты, кроме, возможно, 80 и 443. Таким образом, он соединяется через HTTP [S] и "стучит", запрашивая волшебную последовательность URL-адресов.