OpenVPN прекъсва OTP сесия по-късно: какво изисква повторната автентикация
Сесия, която умира след час, обикновено е подновяване на ключ, което иска вече използван код. Изберете между токен, издаден от сървъра, и ново интерактивно предизвикателство.
От страна на клиента това изглежда като случайно прекъсване час след началото на работеща сесия. Иконата в системния трей изчезва, тунелът се изгражда наново, а журналът показва грешка при автентикация, а не мрежова грешка. Всъщност сесията е предоговорила и второто ръкостискане е изисквало идентификационни данни, от които клиентът вече не е имал валидно копие. Еднократен код, който е проработил при влизане, не може да проработи отново, затова подновяването на ключа се проваля точно както е проектирано.
Поправката е решение какво да представи второто ръкостискане, а не по-дълъг таймер за повторен опит.
Проследете размяната от гледна точка на клиента
При влизане клиентът изпраща потребителското име, паролата и код от токен устройството, а сървърът приема комбинацията. След това сесията работи, докато не се задейства тригер за предоговаряне, който стартира ново TLS ръкостискане в съществуващия тунел. Това ръкостискане отново изисква автентикация. Ако пътят за автентикация на сървъра очаква парола плюс актуален еднократен код, клиентът няма нов код, който да предложи, освен ако потребителят не присъства, за да го въведе.
Повечето клиенти не отварят подкана по средата на сесията, затова ръкостискането изтича и тунелът пада. Потребителят вижда повторно свързване, а не подкана за автентикация, и затова първият доклад обикновено обвинява мрежата.
auth-gen-token променя кой отговаря на втория въпрос
auth-gen-token е опцията, която позволява на сървъра да издаде токен след успешно влизане, а следващите предоговаряния представят този токен вместо да повтарят паролата и кода. Ръководството описва неговия срок на живот и поведението при подновяване, и токенът трябва да се третира като идентификационни данни със собствен срок на валидност. По подразбиране сървърът сам валидира токена, вместо да извиква отново външния автентикатор на пароли.
С външна интеграция за автентикация това разделение се променя. Плъгинът трябва да разбира състоянието на токена и да прилага собствени проверки, защото сървърът вече не е единственият компонент, който решава дали сесията продължава. Третирането на токена като пореден цифров еднократен код не е реализация на функцията.
Решете какво се случва със статуса на акаунта
Токен, който надживява достъпа до акаунт, е дупка в политиката. Решете как деактивиран акаунт, премахнато членство в група или отменено устройство влизат в сила, докато токенът е още валиден. Кратките срокове на токените правят прозореца по-малък; явен път за отмяна го прави умишлен. Запишете отговора, преди да включите опцията, защото пътят по подразбиране не се обръща към външния автентикатор при всяко предоговаряне.
При разгръщане с няколко сървъра тайната за подписване на токени трябва да е споделена, иначе клиентът може да бъде изпратен към възел, който не може да валидира токена му.
Тествайте изтичането и повторното свързване, не само влизането
Намалете интервала за предоговаряне в тестов профил, така че второто ръкостискане да се случи, докато наблюдавате, после следете двата журнала. Потвърдете, че токенът се издава при влизане, представя се при подновяване на ключа и се обновява или издава наново според конфигурирания срок. След това предизвикайте изтичане на токена и пълно повторно свързване, защото клиент, който се свързва чисто, може пак да се провали по пътя на подновяването на ключа.
Тествайте премахването на акаунт последно. Този случай показва дали политиката, която сте написали, се прилага, или само е документирана.
Не го поправяйте, като изключите подновяването
Задаването на интервала за предоговаряне на нула при двете страни премахва симптома заедно с ротацията на ключове. Това скрива проблем с повторно използване на идентификационни данни зад промяна в политиката, която никой не е прегледал. Запазете подновяването и избирайте между токен от сървъра и ново интерактивно предизвикателство въз основа на това дали има потребител.
По-дълъг таймер за повторен опит не прави изразходван код отново валиден. Той само отлага прекъсването и прави журнала по-труден за четене.