Проверьте, прошел ли вход в систему через SSH через Active Direcory

Я пытаюсь проверить, является ли пользователь, который подключается к серверу linux через SSH, аутентифицируется с помощью Active Directory (Centrify).

Если он использует локальную учетную запись (находится в /etc/passwd ), мне нужно отобразить предупреждение с просьбой использовать его учетную запись Active Directory, а затем снова ввести логин.

Моя первая попытка заключалась в использовании PAM-модуля pam_script внутри /etc/pam.d/login для выполнения скрипта, который проверяет, существует ли текущее имя пользователя в / etc / passwd, когда пользователь входит в систему, отображает предупреждение, если оно найдено, и снова вызывает команду login в login ,

Я добавил следующую строку в /etc/pam.d/login

 session required pam_script.so runas=root 

Эта строка выполняет файл сценария, расположенный в /etc/security/onsessionopen который содержит:

 #!/bin/sh username=$1 if [ $(grep -c '^'$username':' /etc/passwd) = 1 ] then echo "Warning, please user your AD credentials" login fi 

Но тот же сценарий не работал в /etc/pam.d/sshd . При использовании SSH скрипт запускается, но не отображает текст или приглашение для входа.

Есть предположения ? спасибо

4 Solutions collect form web for “Проверьте, прошел ли вход в систему через SSH через Active Direcory”

Используя id относительно легко узнать, подключены ли вы из объявления или локального /etc/passwd . следующим шагом было бы иметь функцию в /etc/profile , которая выдаст предупреждающее сообщение.

Изменение оболочки для соответствующих учетных записей в /etc/passwd будет работать хорошо

Поместите это в (скажем) /usr/local/etc/mustuseadlogin и сделайте его исполняемым:

 #!/bin/sh echo echo "Please log in with AD authentication" >&2 echo sleep 10 exit 0 

Теперь отредактируйте /etc/passwd (в идеале с помощью vipw ) и измените последнее поле для всех затронутых учетных записей как /usr/local/etc/mustuseadlogin . Например,

 roaima:x:1001:1001:I am roaima:/home/roaima:/usr/local/etc/mustuseadlogin 

Удивительное решение для стандартного «входа». К сожалению, я не думаю, что вам удастся добиться такого же поведения, что и для sshd. Это связано с основными процедурами подключения, которые sshd использует при установлении соединения. К тому времени, когда мы получаем до того, как стек PAM (или биты профиля, как и в другом предложении), имя пользователя уже разрешено; как представлено клиентом SSH.

Вот ресурс, который может пролить свет на это: https://serverfault.com/questions/330310/force-ssh-to-prompt-for-user

Учитывая эту информацию, я бы предположил, что идеальным решением может быть использование вашего скрипта (или дополнение / etc / profile), однако для стека sshd; вместо того, чтобы нажимать «login», спать на 10 секунд или что-то делать (чтобы убедиться, что предупреждение видно), а затем закрыть сессию.

Модуль pam_script использует свой статус выхода, чтобы сообщить стек вызовов, что делать. Измените свой код на это, и он будет работать:

 #!/bin/bash username="$1" if [[ root != "$username" ]] && grep -q '^'"$username"':' /etc/passwd then echo "Warning, please user your AD credentials" exit 1 fi exit 0 

Я исключил root из блока. Вы можете настроить тест [[ ... ]] для UID <500 и т. Д. Для применения к вашему сценарию.

  • Влияние Openssl.Cnf на службы sshd amazon linux
  • Fedora 18 - Запустите sshd при загрузке
  • Вопросы безопасности сервера SSH в Интернете
  • Как ограничить доступ ssh только для локального хоста?
  • Подключение к хосту, закрытое удаленным хостом. Статус выхода -1
  • Как избежать вызова «startx» при входе в ssh
  • Демон SSH не установлен в встроенном устройстве Linux
  • зарегистрировать или ограничить исходный пользователь ssh login
  • Как настроить sshd на 1) требуется открытый ключ _and_ 2) требуется пароль для входа?
  • CentOS 6.4: проблема SSH RSA, « == rsa-key-20140711 \ n не удалось"
  • SFTP chroot jail / access на основе шаблона
  • Interesting Posts

    Столбец печати, если значения находятся между двумя другими значениями

    перемещать файл по списку в файл (с ведущими пробелами)

    Понимание backtick (`)

    Как исправить ошибку «Kernel panic – не синхронизация: VFS: невозможно монтировать root fs на неизвестном блоке» и «данные LZMA повреждены»

    Установленный SFTP для AWS Linux – Невозможно прочитать

    Что представляет собой файл по умолчанию / etc / inittab при новой установке Debian Jessie?

    Linux-сервер с чаем-деамоном, подключенным к активному каталогу, защищающему клиентов от использования драйверов или PPD

    Как исправить мою установку PHP на FreeBSD, используя pkg

    Обнаружение изображений, содержащих только черные пиксели

    Помните «локальную» историю bash в папке?

    Отключить вывод журнала на консоль

    Вино не работает в Linux Mint 18 Sarah. Попытка запустить Game Maker Studio без везения

    Подсчет экземпляров конкретных слов в тексте, используя awk

    Два 500GB (JBOD) вытесняют NAS-200 в UBUNTO 14-04 и возвращают в LVM для доступа к старой информации

    Можете ли вы указать iptables как пользователя без полномочий root и почему?

    Linux и Unix - лучшая ОС в мире.