Чукане на портове: Идея за сигурност, чието време е дошло

Много, много иновации идват от света на Linux и Unix. Малко са по-интригуващите за мен от чукането в пристанището. Като глобален плъгин за защита за защита на услугите, той има много неща и няколко недостатъка. По една или друга причина обаче страда от липса на употреба и разбиране. Много администратори може да са чували за него, но малцина знаят как да го приложат. Още по-малко са го използвали.

Чукването на портове работи върху концепцията, че потребителите, които желаят да се присъединят към мрежова услуга, трябва да инициират предварително определена последователност от връзки на портове или да изпратят уникален низ от байтове, преди отдалеченият клиент да може да се свърже с евентуалната услуга. В най-основната си форма клиентският софтуер на отдалечения потребител трябва първо да се свърже с един или повече портове, преди да се свърже с крайния порт на дестинация.

Да предположим например, че отдалеченият клиент иска да се свърже със SSH сървър. Администраторът конфигурира предварително изискванията за чукване на портове, като изисква свързването на отдалечени клиенти първо да се свърже с портове 3400, 4000 и 9887, преди да се свърже с крайния порт на местоназначение, 22. Администраторът казва на всички легитимни клиенти правилната „комбинация“ за свързване ; злонамерените хакери, желаещи да се свържат със SSH услугата, ще получат достъп без комбинацията. Чукането на портове ще наруши дори ентусиастите за сканиране на портове и грабване на банери.

Тъй като може да се използва всяка комбинация от портове и транспортни протоколи, броят на възможните последователности, които нападателят би трябвало да отгатне, е голям. Дори ако хакерът е знаел, че са включени само три удара на портове, както в много простия пример по-горе, с 64 000 възможни TCP, UDP и ICMP (Internet Control Message Protocol) портове, от които да избирате, резултатният набор от възможни комбинации за хакер да Опитът се сблъсква с милиони. Скенерите за портове ще бъдат разочаровани, тъй като чукването на портове използва затворени портове за слушане (повече за това по-долу).

Най-голямото предимство на всичко е, че чукването на портове е независимо от платформа, услуга и приложение: Всяка операционна система с правилния клиентски и сървърен софтуер може да се възползва от нейната защита. Въпреки че чукването на портове е основно изпълнение на Linux / Unix, има инструменти на Windows, които могат да направят същото. И подобно на IPSec и други защитни механизми, нито една от включените услуги или приложения не трябва да знае за разбиване на портове.

Сървърният софтуер за разбиване на портове работи чрез наблюдение на дневника на защитната стена и търсене на връзки към затворени портове или чрез наблюдение на IP стека. Първият метод изисква всички отказани опити за свързване да се записват бързо в дневника на защитната стена, а услугата за чукване на портове (демон) наблюдава и корелира легитимни комбинации за чукване на порт. За удостоверени комбинации от чукания, услугата на сървъра за чукване на портове след това казва на защитната стена да отвори крайния заявен порт само за легитимния клиент за чукване на порт - обикновено се проследява по IP адрес.

По-усъвършенстваните внедрения на чукване на портове работят в IP стека и или прослушват и записват връзки към затворени портове, или използват по-сложен механизъм. Някои реализации търсят конкретна поредица байтове в рамките на първия опит за свързване. Тези байтове могат дори да бъдат „скрити“ в рамките на обикновен пинг на ICMP заявка за ехо. Дори по-силните методи за договаряне с чукане на порт включват криптиране или асиметрично удостоверяване.

Чукането на портове може също да служи като допълнителен слой за защита за защита на високорискови услуги за дистанционно управление, като SSH и RDP (протокол за отдалечен работен плот). За съжаление, чукването на портове се използва от повече от няколко троянски кода на руткит, тъй като техните създатели на хакери се опитват да запазят контрол върху собствените си злонамерени творения.

Критиците често посочват факта, че хакерите за подслушване може да успеят да уловят и възпроизведат успешната последователност или поредица от байтове, които чукат на портове. Въпреки че това може да е вярно при основните имплементации, атаки като тези ще бъдат смачкани чрез използване на по-сложни методи за удостоверяване или минимизирани чрез използване на вторични твърдо кодирани разрешени IP адреси като TCP обвивки.

Ако хакер успее да събере вашата комбинация, най-лошият сценарий е, че натрапникът заобикаля защитата срещу пристанище и сега трябва да се изправи срещу обичайните ви мерки за сигурност на услугата - подсказване на парола за влизане и т.н. Доколкото мога да разбера, използването на чукане на портове може само да укрепи всяка стратегия за задълбочена защита и не прави нищо, за да я нарани.

Иска ми се Windows да има вградени по подразбиране механизми за разбиване на портове. Това би било чудесно допълнение към внедрените от пазара IPSec и Kerberos на Microsoft. Светът на Linux / Unix има множество изпълнения за избиране на портове, от които не се изисква невероятна експертиза за конфигуриране или използване.

За повече информация относно чукането на портове посетете www.portknocking.org или en.wikipedia.org/wiki/Port_knocking. За подробности за конфигурацията от един пример за изпълнение, вижте gentoo-wiki.com/HOWTO_Port_Knocking.

Отлична колекция от софтуер и помощни програми за разбиване на портове може да бъде намерена на www.portknocking.org/view/implementations, а друг сървър и клиент за разбиване на портове, базирани на Windows, може да бъде намерен на www.security.org.sg/code/portknock1 .html.