Отказ RADIUS против отсутствия ответа: когда работает локальный вход
AAA рассматривает отказ и недоступный сервер как разные результаты. Резервный путь покрывает только второй случай, поэтому сначала прочитайте список методов и код ответа.
Наличие локальной аварийной учётной записи не делает её второй попыткой для каждого отклонённого входа. В модели AAA Cisco IOS и IOS XE к этой базе обращаются только тогда, когда предыдущий метод завершается неудачей определённым образом, а сервер RADIUS, отвечающий отказом, не потерпел неудачу таким образом. Локальная учётная запись покрывает недоступный метод, а не отклонённый. Вера в обратное превращает решение политики в поиск несуществующей неисправности сервера.
Почему список методов выглядит как лестница
Строка вида aaa authentication login default group radius local читается слева направо, и большинство людей читают её как попробуй RADIUS, затем попробуй локальную базу. Синтаксис приглашает к такому чтению, потому что список — это последовательность. Смысл уже: список называет методы аутентификации, а правило перехода от одного к следующему зависит от результата предыдущего метода, а не от предоставления пользователю ещё одной попытки.
Метод, возвращающий ошибку, и метод, возвращающий неудачу, приводят здесь к разным результатам. Отказ — это ответ, потому что сервер обработал учётные данные и сказал нет, и список на этом останавливается. Недоступный сервер, истёкший запрос или ответ, который невозможно проверить, — это случай, позволяющий выполняться следующему методу, и только там, где обработка сбоев платформы настроена так. Поэтому классический совет добавить local работает при сбоях и ничего не делает при неверных паролях. Читайте список вместо этого как два вопроса: какой метод отвечает и что платформа считает ответом.
Отделите список методов от группы серверов
Список методов — один слой, а группа серверов — другой. Ключевое слово group radius называет группу, чей внутренний порядок, повторные попытки, тайм-ауты и обнаружение мёртвого сервера принадлежат группе, тогда как локальный метод — слой над ней. Поэтому настройка чего-либо внутри группы не может превратить отказ в резервный путь. Прежде чем менять любой из двух слоёв, подтвердите, на какой список служба действительно ссылается.
Выведите конфигурацию AAA и прочитайте список, на который указывает служба, а не значение по умолчанию, которое вы помните, что записали. Сделайте это с устройства, на котором служба действительно завершается.
show running-config | section aaa
show radius server-group RAD-GRP
show aaa serversТаблица серверов сообщает состояние и счётчики каждой записи, что говорит вам, достиг ли шлюз сервера во время попытки. Сервер, отмеченный как работающий с растущим счётчиком запросов, отвечал, так что неудачный вход — это решение, а не проблема связности.
Прочитайте ответ прежде журнала
Код ответа называет результат и подразумевает собственный следующий шаг. Access-Reject означает, что серверная часть приняла решение, поэтому полезное доказательство — совпавшая политика и состояние учётной записи за ней. Access-Challenge означает, что обмен требует ещё одного поддерживаемого шага, например второго фактора, а локальный резервный путь молча пропустил бы то, что требует политика.
Воспроизведите одну попытку с назначенной тестовой учётной записью, чтобы ответ и запись серверной части можно было сравнить в одной отметке времени. Используйте учётные данные, сбой которых вам разрешён.
test aaa group RAD-GRP svc-ops 'LabPass!24' legacy
debug radius authenticationОтсутствующая или нераспознанная запись клиента RADIUS — частая причина тихого тайм-аута, потому что сервер получает запрос, не находит подходящего определения клиента и отбрасывает его без ответа. Несовпадение общего секрета тоже обычно выглядит как тайм-аут, потому что ответ не проходит проверку и отбрасывается. Ни то, ни другое не выглядит как Access-Reject, и ни то, ни другое не исправляется добавлением локальной учётной записи. Проверьте определение клиента и секрет с обеих сторон, прежде чем трогать список методов.
Почему локальная учётная запись ничего не доказала
Учётная запись, стоящая после группы в списке, доказывает лишь то, что кто-то запланировал сбой. Она ничего не говорит о том, работает ли план, потому что случай, который его проверяет, — это случай, который никто не репетирует: сервер перестал отвечать. Локальный вход, до которого в нормальной работе никогда не доходят, может месяцами нести просроченный пароль или заблокированное состояние, и никто этого не замечает.
Аварийный доступ — это проектное решение, а не побочный эффект конфигурации. Дайте ему собственную ограниченную учётную запись, собственного ответственного и письменную процедуру восстановления, и включите ротацию общего секрета в эту процедуру. Хранение локального пароля с одним и тем же именем для каждого центрального пользователя — это шаблон, который тихо возвращает доступ, который вы считали удалённым.
Тест, который имеет значение, намеренный, и он прервёт входы, пока выполняется. Именно поэтому он относится к запланированному окну с шагом отката, написанным первым.
Проверьте резервный путь в окне обслуживания
Упорядочьте тест так, чтобы никогда не удалить последний путь входа. Сначала подтвердите независимый путь управления, затем обычный разрешённый доступ, затем намеренный отказ, затем утверждённое поведение при сбое. У этих четырёх случаев разные ожидаемые результаты, и сведение их в один тест — это способ, которым люди запирают себя снаружи устройства, которое им всё ещё нужно.
Выполняйте каждую проверку из консольной сессии или из внешнего пути, чтобы ошибка не могла закрыть сессию, в которой вы работаете. Консоль — единственный путь, не зависящий от тестируемого компонента.
show aaa servers
show running-config | include aaa authentication
test aaa group RAD-GRP svc-ops 'LabPass!24' legacyЗатем восстановите предыдущую конфигурацию и подтвердите, что счётчики снова двигаются при следующем реальном входе. Если намеренный отказ даёт локальный вход вместо отказа, значит список или обработка сбоев не та, что вы считали, и эта находка важнее сбоя, с которого вы начали. Запишите результат в журнал изменений рядом с именами учётных записей и датой теста.