Ние изучаваме принципа на действие на Heimdal Kerberos

Веднага след като локалната ви мрежа под контрол започне да се развива и разширява, ще възникнат нови предизвикателства: Как да синхронизирате системните акаунти на нарастващ брой потребители? Как да контролирате достъпа на потребителя до мрежови услуги в рамките на локална мрежа?
За да разберем по-подробно възникващите проблеми, нека разгледаме ситуацията с организацията на разпределена изчислителна система. Разбира се, колкото повече компютри са включени в клъстера, толкова по-висока е неговата процесорна мощ. Най-често срещаните клъстерни изчислителни системи днес са Parallel Virtual Machine и Message Passing Interface. И двете позволяват на потребителя, в този случай разработчика на софтуер, да прехвърля парчета данни, които трябва да бъдат обработени между клъстерни възли и да синхронизира извличането на резултатите от различни възли. Това е фасадата на системата. Зад кулисите има повикване към отдалечената обвивка и повиквания към определени програми в нея. Тоест администраторът на такава система трябва да гарантира, че потребителите на клъстера имат достъп до интерпретатора на команди на клъстерните възли и освен това този достъп трябва да бъде без парола за всяка двойка компютри в клъстера. Системата не е много удобна, когато стартирането на няколко паралелни копия на програмата изисква потребителят да се регистрира на всеки от клъстерните възли.
Не всички от вас трябва да се справят с настройките на изчислителните клъстери. Но точно този проблем за изграждането на разпределена изчислителна система Athena принуди програмистите на MIT да разработят и внедрят протокол за удостоверяване на отдалечени потребители в началото на 80-те години. Комбинацията от специални криптографски средства направи възможно, от една страна, да се отрече възможността за прихващане на пароли и да има криптиран канал за прехвърляне на данни между компютри (тази функция може да бъде деактивирана по желание на потребителя). От друга страна, да има система с единичен вход, която позволява на потребителя да се регистрира веднъж при влизане в системата и след това да има свободен достъп до мрежови ресурси въз основа на тази регистрация.
Ясно е, че броят на потребителите, които биха се чувствали комфортно с такава функционалност, значително надвишава броя на тези, които се нуждаят от разпределени системи, а по-късно и този протокол, наречен Kerberos (след триглавото куче от древногръцките митове, охраняващо входа на царството на мъртвите), започна да се използва широко независимо от Атина като система за регистрация в големи финансови и академични институции.
Kerberos от гледна точка на потребителя
Както можете да видите, в списъка има само един билет - същият TGT. Credential Cache е файлът, който съхранява сертификатите, които получих. По подразбиране името му е комбинация от/tmp/krb5cc_ и потребителски идентификатор. Валидността на всеки билет е ограничена във времето - това намалява интереса от неговото прихващане от страна на нападателя. Сега стартирам интерпретатора на команди на отдалечения компютър:
Ето пример за магия на Kerberos в действие - използвайки моя супер билет, Kerberos прозрачно организира достъпа до мрежов ресурс за потребителя (в този случай той се появява под името host/[email protected]. RU) и освен това telnet, когато помощ Kerberos автоматично криптира целия мрежов трафик между клиента и сървъра. Списъкът с билети не се променя едновременно - превключвателят -F ви позволява да премествате билетите, които имам, от компютър на компютър. Затварянето на сесията на telnet автоматично изчиства кеша на отдалечения компютър с помощта на командата kdestroy, така че не е нужно да се притеснявате, че кешът ви се използва от някой друг. Тъй като супер билетът все още е с мен, това ми позволява достъп до друг компютър, сървърът Kerberos.
По същия начин мога да осъществя достъп до всяка мрежова услуга - например локален ftp сървър.
Имайте предвид, че във всички случаи не ми се наложи да въвеждам парола. Получих достъп до всички компютри, базирани на моя TGT. Всички операции на Kerberos (издаване на билети, добавяне/премахване на потребители и т.н.) се записват в неговите дневници и можете да се уверите, че цялата ми активност при преместване от компютър на компютър е записана във файла /var/log/krb5kdc.log. За удобство разделих част от регистрационния файл на 4 части, съответстващи на процесите за достъп до работната ми станция, отдалечен достъп до два сървъра и ftp сървъра.
Можете да кажете: „Как е - протоколите telnet и ftp не са защитени и е по-правилно да използвате openssh. И няма нищо изненадващо в удостоверяването без парола - същата функционалност се предоставя от ssh, предоставяйки възможност за регистрация с двойки публичен/таен ключ. " Всичко е правилно. Само за да осигурите ssh достъп от който и да е от тези компютри до всеки друг в мрежа от N компютри, обикновено ще трябва да извършите 2N * трансфери на публични ключове (всяка двойка компютри в мрежата обменят публични ключове на потребителите), които в случай на големи мрежи са трудни за изпълнение. В същото време, използвайки Kerberos, трябва само да регистрирате всеки от компютрите с Kerberos сървъра и да имате по един ключ на всеки от хостовете (за разлика от ssh, Kerberos използва симетрично криптиране) - общо 2N операции. Що се отнася до първата част на въпроса, използвам специална "керберизирана" версия на telnet, която защитава връзките между хостовете не по-лошо от ssh. Основният недостатък на стандартния telnet (и не само той) е, че когато се удостоверява на отдалечен компютър, telnet изпраща паролата на потребителя по мрежата в чист текст, което позволява на хакер да я прихване. Ssh заобикаля тази опасност, като използва асиметрично криптиране на парола. Как Kerberos избягва дупки за дистанционно удостоверяване?