Port Knocking - это особая технология передачи данных. Для того чтобы лучше ее понять, вспомни азбуку Морзе и конкретно обозначение слова SOS. Сигнал бедствия передается с помощью комбинации - три точки, три тире, три точки. Три точки, соответственно, обозначает букву S, а три тире - букву O. Для всех остальных символов также существуют аналогичные обозначения. Таким образом, общий принцип очень прост: с помощью последовательностей точек и тире можно представить любую букву, а соответственно, слово и текст. Технология Port Knocking использует очень схожий принцип. Разница лишь в том, что для кодирования информации применяются не точки и тире, а серии попыток подключения к закрытым портам. Зачем это нужно? Для многого. Возьму сразу распространенный и банальный пример. Если клиенту заранее известна секретная последовательность подключений, то он может подключиться даже к тому серверу, у которого открытые порты внешне отсутствуют. Скажем, если бы я хотел приконнектиться к взломанному серверу через SSH, то сконструировал такой бэкдор, который не использует напрямую 22 или любой другой порт. Такой подход сразу же вызовет подозрения у любого опытного администратора. Лучше сделать так, чтобы бэкдор определял попытки подключения последовательно на 1011, 1007, 1033, 1002, 1000 порты, после чего открывал доступ к SSH-порту на несколько секунд. Этих секунд будет вполне достаточно, чтобы подключиться и комфортно работать в системе. Последовательность попыток подключения к закрытым портам называется Knock (тук-тук!). Несмотря на то, что все порты на сервере закрыты(рис.1), все попытки непрерывно отслеживаются(рис.2), и информация о них записываются в логи файрвола. Сервер чаще всего никак не отвечает на эти подключения, но он считывает и обрабатывает их. Если серия подключений обозначена в настройках специального Port Knock демона, на сервере тут же выполнится определенное действие(рис.3). В большинстве случаев открываются несколько портов, например, 22 - для возможности подключения администратора к SSH-сервису(рис.4). Но это лишь один из вариантов. Триггер может совершенно по-разному реагировать на правильный «тук-тук!» и не только динамически изменять правила файрвола, а еще выполнять любые другие административные действия (скажем, выполнять перезагрузку системы, отключение питания и т.п.). Что касается выбора Knock'ов, то он произволен и зависит исключительно от разработчика. Единственное условие - последовательность подключений (или алгоритм ее составления) должна быть заранее известна как для серверной, так и клиентской стороны. Скачать winKnocks