LDAP에서 /home 디렉토리를 사용하는 사용자로 SSH 로그인을 제한합니다.

LDAP에서 /home 디렉토리를 사용하는 사용자로 SSH 로그인을 제한합니다.

현재 사용자 인증을 위해 Active Directory 환경에 연결되어 있는 여러 사용자 웹 페이지를 호스팅하는 Apache 서버(RHEL 6)가 있습니다. 서버는 사용자가 /home/<user>/public_html 폴더에 넣는 콘텐츠를 자동으로 호스팅하는 데 사용됩니다. 또한 사용자가 서버의 홈 폴더 이외의 다른 항목을 탐색할 수 없도록 chroot를 사용하도록 이 서버를 구성했습니다. 로그인 스크립트는 사용자의 홈 폴더를 생성하지 않습니다. 특정 사용자만 이 서버에서 웹 페이지를 호스팅할 수 있기를 원하기 때문에 이는 수동으로 생성됩니다.

문제는 현재 서버에 로그인할 수 있는 모든 사용자가 /home 폴더(존재하지 않기 때문에)로 이동하지 않고 자동으로 /로 이동한다는 것입니다. 이를 통해 해당 그룹이 읽기 액세스 권한을 갖고 있는 서버의 모든 파일/폴더를 볼 수 있습니다. 이는 보안 문제입니다. 로그인을 /home 디렉토리를 소유한 사용자로 제한하고 싶습니다. PAM 모듈을 작성하는 것보다 쉬울 수도 있지만 목록이 매우 길어지고 관리하기 어려워질 수 있기 때문에 AD 그룹 또는 사용자 목록을 인증된 것으로 지정하고 싶지 않습니다.

/home 디렉토리를 이미 소유한 사용자로만 LDAP 로그인을 제한하는 방법이 있습니까?PAM 옵션이나 문서에서 아무것도 찾지 못했습니다.

답변1

액세스 관리에는 로컬 호스트에서 많은 작업이 필요하므로 Active Directory에 그룹을 만들고 해당 그룹의 사용자로 로그인을 제한하기로 결정했습니다.

다음 필드와 액세스를 제한하려는 그룹 또는 사용자의 SID(쉼표로 구분)를 사용하여 /etc/security/pam_winbind.conf 파일을 편집하면 됩니다.

require_membership_of=

그런 다음 이 그룹에 대한 chroot 제한을 필터링하여(또는 사용자를 로컬 그룹에 배치) 자신의 홈 디렉토리에 대한 SFTP 액세스를 제한합니다. 이를 통해 pam에 다시 이상한 작업 mkhomedir을 추가할 수 있으며 서버에 대한 액세스를 허용하기 위해 사용자를 해당 그룹에 추가하기만 하면 됩니다. 그런 다음 로그인하면 홈 디렉터리가 자동으로 생성됩니다.

모든 분들의 도움/아이디어에 감사드립니다. 하지만 결국 AD 그룹이 관리하기 가장 쉬운 것 같습니다.

답변2

이 문제를 해결하는 한 가지 방법은 SSH 키를 사용하도록 강제하고 SSH 로그인에 비밀번호 사용을 비활성화하는 것입니다. 이렇게 하면 /home/<user>/.ssh/authorized_keys 파일을 소유한 사람만 연결할 수 있습니다.

답변3

해결 방법 1:

PAM 모듈을 사용할 수 있습니다pam_homecheck

이것이 하는 일은 사용자의 홈 디렉토리가 존재하는지 확인하고, 홈 디렉토리가 없으면 세션을 거부하는 것뿐입니다.

문제는 openSUSE에서만 사용할 수 있지만 pam_homecheck.so다운로드한 패키지에서 삭제하여 ldd pam_homecheck.so.

해결 방법 2: 다음을 추가할 수 있지만 /etc/bashrc쉘/퍼티 로그인에만 해당됩니다.

[[ $HOME == / ]] && { echo "Error: Home Dir not define.."; exit 1; }

해결 방법 3:

홈 디렉터리가 설정되지 않은 경우 거부합니다(아래 단계에 따라 Ubuntu에서 테스트 및 작동).

DenyWinScp

aptitude install libpam-script

원하는 편집기를 사용하여 " "을 열고 /etc/pam.d/common-auth다음 항목을 추가하세요.

auth optional pam_script.so  # add at the last 

원하는 편집기로 " "을 열고 /usr/share/libpam-script/pam_script_auth다음 항목을 추가하세요.

#!/bin/bash

Pam_home=$(awk -v u=$PAM_USER -F: '($1 == u ){print $6}' /etc/passwd)

if [[ $Pam_home == / ]]; then
        echo "Error: Home Dir not define.."
        kill -9 $PPID # Force fully kill winscp pid
else
        /usr/lib/openssh/sftp-server
fi

쉘/퍼티에서 로그인 거부

기본 위치(예: " ")에서 동일한 스크립트를 참조하고 실행 /usr/share/libpam-script/pam_script_auth하거나 로그 " tail -f /var/log/auth.log" 에서 확인할 수 있습니다.

관련 정보