1000명이 넘는 사용자가 사용하는 RedHat Linux 서버가 있습니다.
사용자 이름은 LDAP 프로토콜을 통해 서버에 도달하므로 로그인 인증은 LDAP에서 옵니다.
내 질문: 사용자 이름이 LDAP에서 오는 경우 사용자가 로컬 컴퓨터에 로그인하는 것을 방지할 수 있습니까?
답변1
오늘날 인증 논리는 일반적으로 PAM에 의해 처리됩니다. 내 생각엔 PAM의 구성 파일(내 경우에는 )에서 이를 설정할 수 있어야 할 것 같습니다 /etc/pam.d
.
일반적인 인증 로직은 에 저장되어 있습니다 common-auth
. 귀하의 경우 다음과 같은 것이 있어야 할 것 같습니다.
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_ldap.so use_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
...또는 다음과 같이 더 간단한 것일 수도 있습니다.
auth sufficient pam_unix.so nullok_secure
auth sufficient pam_ldap.so use_first_pass
...표준 UNIX 인증과 비교하여 LDAP가 첫 번째 소스인지 두 번째 소스인지에 따라 달라집니다(그것도 포함된다는 점을 고려).
이제 컴퓨터에서 LDAP 인증을 비활성화하려는 경우 또는부정적인LDAP 인증 사용자에 액세스하려면 PAM 구성에서 소스를 제거하고 UNIX 인증에만 의존하도록 하기만 하면 됩니다.
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
- 성공하면 나머지 체인에서
pam_unix.so
1개 요소( )를 건너뛰고 다음 요소( )를 평가합니다. 이는 UNIX 인증이 실패하면 사용자가 갇히게 되어 인증이 실패함을 의미합니다. 성공하면 도착 하고 시스템에 대한 액세스 권한이 부여됩니다.pam_deny.so
pam_permit.so
pam_deny.so
pam_permit.so
- 여기에는 LDAP가 포함되어 있지 않습니다. 즉, 저장되지 않은 사용자는
/etc/passwd
시스템에 액세스할 수 없습니다.
이제 LDAP 사용자를 구체적으로 차단하려면...
auth [success=die] pam_ldap.so
auth sufficient pam_unix.so
- 성공하면
pam_ldap.so
실패 코드가 반환되고 체인이 종료됩니다. 실패하면pam_unix.so
시스템에 액세스하는 것으로 충분합니다. - 그러면 LDAP 자격 증명이 일치하는 한 모든 PAM 인증이 중단됩니다. UNIX 사용자는 계속해서 시스템에 액세스할 수 있습니다.
물론 PAM을 구성하는 다른 방법도 많이 있으며 그 중 일부는 방금 설명한 것보다 더 좋고/더 효율적일 수 있습니다. 이에 대한 자세한 내용은 다음을 확인하세요.이 페이지.그러나 주의할 점은 PAM 구성을 시작하기 전에 root
어딘가에 보안 터미널이 실행되고 있는지 확인하십시오. 인증 논리가 엉망인 경우 기꺼이 /etc/pam.d
다시 방문하여 변경 사항을 되돌릴 수 있습니다.:)
또 다른 참고 사항: PAM이 인증(및 기타 몇 가지 사항)을 처리하는 동안 이름 확인은 NSS(이름 서비스 스위치), 해당 구성은 에서 찾을 수 있습니다 /etc/nsswitch.conf
. 이 파일에 LDAP를 남겨두면 시스템은 이러한 LDAP 사용자에 대해 계속 알 수 있지만 해당 사용자는 허용되지 않습니다. 기본적으로 이를 통해 시스템은 UID를 이름과 일치시킬 수 있습니다. 예를 들어 디렉토리( ls -l
)에 있는 파일의 내용을 나열하고 파일의 소유자를 가져올 때입니다.
NSS 구성을 편집하여 이 LDAP 이름 소스를 삭제할 수도 있지만 사용자가 실제로 자신의 컴퓨터에서 사용할 수 있는 파일을 소유하고 있는 경우에는 이 방법을 권장하지 않습니다.