Задать вопрос
@JustMoose
Программист. Радиолюбитель. Прокрастинатор ;)

Где бы взять конфиг sshd подходящий для TACACS+?

Всем привет!
Устал бороться с TACACS+.
Что пытаюсь сделать:
* Сервер - сделан руками ИИшки, работает, крутится на виртуальной машине с Линуксом.
* Клиент - взял pam_tacplus.so, "подложил" в свой Линукс, допилил /etc/pam.d/sshd путём добавления трёх строк отсюда:
auth  required pam_tacplus.so server=192.168.0.1 secret=testkey123

Сейчас строка осталась одна, ибо строки про session и account вроде бы не нужны (изначально и они были).

Запускаю Линукс, подключаюсь к нему через ssh (который запускаю в виндовой консоли), ввожу пароль...
(...а ано - ажамбех пашамбе эшельбе шайтанама!)
Судя по логам, всё ок, авторизация прошла. Судя по консоли - disconnect.

В общем, если у вас вдруг есть под руками тот самый файлик sshd из папки /etc/pam.d/ - покажите его, пожалуйста! :) А то у меня уже мозг вскипел.

ЗЫ: Техническических подробностей как бы и нет. Линукс собирается с помощью buildroot и накатывается на одноплатник. Правок, относящихся к авторизации - минимум. В конфиге включен флажок UsePAM в состояние yes, в результате чего в "прошивке" образуется, собственно pam_tacplus.so. В файл sshd добавлена одна строка из начала сего текста. Все три строки из документации тоже пробовал вписать, с тем же результатом. Байтики по сети бегают, логи пишутся, слова а-ля AUTH SUCCESS видны, но логина по ssh не случается (в консоли появляется надпись disconnect и на этом всё). Единственная говорящая ошибка (и она же последняя), которую я вижу в логах выглядит вот так:
Sep 23 10:48:32 olt auth.crit sshd[357]: fatal: PAM: pam_setcred(): Failure setting user credentials

Такое ощущение, что ломается даже не процесс логина, а попытка запустить что-то после логина (честно, не очень понимаю, что делает Линукс после ввода пароля, но наверное запускает bash, создаёт home или что-то такое).
Странность в OpenSSH (от которого, вроде бы, зависит PAM) я нашёл. Он слал вместо пароля INCORRECT. Чтобы этого не происходило, пришлось в /etc/passw добавить пользователя с именем, совпадающем с именем на сервере TACACS.
(Процесс логина в одноплатник происходит из консоли виндовой машины по ssh).
Логи разные снимал, в DeepSeek запихивал, ничего не нашёл. (логов МНОГО и непонятно, что из них вообще имеет смысл сюда копипастить).

В общем, покажите, пжл, свой файлик sshd, подходящий для работы с TACACS+ :)

ЗЗЫ: Мой файлик sshd на данный момент выглядит как-то так (и он не работает):
auth		required	pam_nologin.so
auth		sufficient	pam_tacplus.so	debug	 server=192.168.0.1 secret=TestSecret
auth		sufficient	pam_unix.so		debug	 nullok
auth		required	pam_deny.so		debug

Предполагается, что если залогинится через TACACS не удастся, то будет произведена попытка залогинится локально (каким-нибудь root).

ЗЗЗЫ: То есть, в процессе участвуют три машинки: одноплатник с Линуксом, виндовая машина с ssh клиентом, и Линукс с TACACS сервером в виртуалке и "базой данных пользователей".
  • Вопрос задан
  • 336 просмотров
Подписаться 3 Средний 6 комментариев
Помогут разобраться в теме Все курсы
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + ML и нейросети
    12 месяцев
    Далее
  • ProductStar × РБК
    Профессия DevOps-инженер + ИИ
    5 месяцев
    Далее
Решения вопроса 1
@JustMoose Автор вопроса
Программист. Радиолюбитель. Прокрастинатор ;)
KbdInteractiveAuthentication := yes помогает
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
pam_sm_setcred в pam_tacplus — заглушка, всегда PAM_SUCCESS. А у pam_deny эта же функция явно возвращает PAM_CRED_ERR, и это единственный модуль в твоём auth-стеке, способный так зафейлить: sshd после аутентификации гоняет pam_setcred по всему стеку заново, не только по модулю что тебя пустил. Подними отдельный sshd с полной отладкой на левом порту: /usr/sbin/sshd -D -ddd -e -p 2222, подключись туда и смотри что творится вокруг credentials establishing живьём. Если виноват deny, он там лишний: required в конце после sufficient-цепочки обычно не нужен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы