Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #84, ДЕКАБРЬ 2005 г.

Тук-тук, это я!

Степан Ильин aka Step

Хакер, номер #084, стр. 084-032-2


[4 шага к счастью]

Теперь, когда ты представляешь суть технологии, предлагаю рассмотреть ее изнутри. Условно работу Port Knocking можно разделить на 4 шага, которые обозначены на следующих рисунках. Серый треугольник представляет собой сервер, симпатичные квадратики символизируют конкретные порты, а пунктирные линии - клиентские подключения.

Первый шаг. На сервере работает файрвол, который блокирует подключение к любым портам. Клиент A пытается подключить к N-ому порту, но безуспешно. Та же беда и у клиента B.

Второй шаг. Клиент в заранее известном порядке пытается подключиться к портам 1,2,3,4. В этой последовательности соединений зашифровано специальное сообщение, которое заранее известно серверу. Клиент знает, что после серии попыток подключения, на серверной стороне будет выполнено определенное действие, однако в процессе соединения он не получает от нее каких-либо ответов. Это происходит, потому что в правилах файрвола запрещено реагировать на какие-либо попытки подключения.

Третий шаг. В странном поведении клиента (беспорядочных подключениях к различным портам), подробно описанном в логах файрвола, демон Port Knocking распознал сообщение («тук-тук!») и интерпретировал его. В данном случае - открыл N-ый порт для клиента.

Четвертый шаг. Выдержав паузу, чтобы сервер успел среагировать на Knock-сообщение, клиент еще раз попытался подключиться к порту N. И, о чудо! Несмотря на то, что порт еще совсем недавно был закрыт, подключение прошло успешно!

[вдаемся в детали]

Как ты мог заметить, одну из ключевых ролей в механизме Port Knocking играет файрвол. В случае unix-реализаций демон Port Knocking представляет собой лишь продвинутый анализатор логов. От него требуется лишь непрерывно отслеживать изменения в логах файрвола, чтобы распознать в клиентских подключениях Knock-сообщения. Файрвол полностью берет на себя обработку сетевых пакетов, поэтому нужно хотя бы в общих чертах представлять механизмы работы брандмауэра и установки сетевого подключения в целом.

Вообще, процесс соединения по TCP-протоколу проходит в 3 этапа:

1. Клиент посылает пакет серверу со специальным флагом, который называется SYN Flag. Наличие такого флага указывает, что клиент хочет установить соединение.

2. В ответ на запрос клиента сервер посылает пакет, содержащий тот же самый флаг SYN и флаг ACK, обозначающий, что сервер принял запрос о соединении и ждет от клиента подтверждения для его установления.

3. После получения пакета с SYN- и ACK-флагами клиент посылает серверу пакет, содержащий только флаг ACK. Это означает, что соединение установлено успешно.

Если на сервере установлен файрвол, то второй пункт немного видоизменяется. Как только брандмауэр получает от клиента пакет с SYN-флагом, он начинает обрабатывать его. Для этого он считывает параметры пакета и сверяет со своими правилами, после чего выносит вердикт. Если ни одно из правил не разрешает прием данного пакета, пакет отвергается, а соединение разрывается или отбрасывается. Почему «или»? Это тонкий момент: ответная реакция файрвола зависит от его настроек.

Назад на стр. 084-032-1  Содержание  Вперед на стр. 084-032-3