SSH를 통해 로그인한 사용자가 Active Direcory를 통과하는지 확인하세요.

SSH를 통해 로그인한 사용자가 Active Direcory를 통과하는지 확인하세요.

SSH를 통해 Linux 서버에 연결하는 사용자가 Active Directory(Centrify)를 사용하여 인증되었는지 확인하려고 합니다.

그가 로컬 계정( 위치 /etc/passwd)을 사용하는 경우 Active Directory 계정을 사용하라는 경고를 표시한 다음 다시 로그인하라는 메시지를 표시해야 합니다.

나의 첫 번째 시도는 PAM 모듈 pam_script를 사용하여 /etc/pam.d/login사용자가 로그인할 때 현재 사용자 이름이 /etc/passwd에 있는지 확인하고, 발견되면 경고를 표시하고 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

그러나 SSH를 사용할 때도 동일한 시나리오가 발생합니다 /etc/pam.d/sshd. 스크립트는 실행되지만 텍스트나 로그인 프롬프트는 표시되지 않습니다.

어떤 아이디어가 있나요? 감사해요

답변1

광고를 통해 연결되었는지, 로컬로 연결되었는지 확인하는 것은 비교적 사용 id하기 쉽습니다 /etc/passwd. 다음 단계는 /etc/profile경고 메시지를 내보낼 수 있는 기능을 갖추는 것입니다 .

답변2

문제의 계정 쉘을 변경하는 것이 /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

답변3

표준 "로그인"을 위한 훌륭한 솔루션입니다. 불행히도 "sshd"를 사용하여 동일한 동작을 수행할 행운이 많지 않을 것이라고 생각합니다. 이는 연결을 설정할 때 sshd에서 사용하는 기본 연결 프로세스 때문입니다. PAM 스택(또는 다른 제안에서와 같이 구성 파일 비트)에 도달할 때 사용자 이름은 이미 SSH 클라이언트에 의해 제출되었습니다.

이에 대해 더 자세히 설명하는 리소스는 다음과 같습니다.https://serverfault.com/questions/330310/force-ssh-to-prompt-for-user

이 정보를 고려하면 이상적인 해결책은 스크립트(또는 /etc/profile 추가)를 고수하는 것이지만 "sshd" 스택의 경우 "로그인"을 누르는 대신 10초 동안 잠자기 상태로 두는 것입니다. 뭔가(경고가 표시되는지 확인하기 위해) 세션을 닫습니다.

답변4

모듈 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 등에 대한 테스트를 조정하여 자신의 시나리오에 적용할 수 있습니다 .

관련 정보