저는 조직의 새로운 시스템 관리자이며 NSS, PAM 및 WINBIND가 함께 작동하는 방식의 인증 프로세스에 대해 배우고 싶습니다. winbind에 문제가 있어서 구성을 개선하려고 합니다.
다음은 몇 가지 주요 구성 파일입니다. 간결함을 위해 일부만 복사했음을 참고하세요.
/etc/ssh/sshd_config
UsePAM yes
/etc/nsswitch.conf
passwd: files ldap winbind
shadow: files ldap winbind
group: files ldap winbind
services: files ldap
/etc/pam.d/ssh
auth required pam_env.so
auth sufficient pam_winbind.so
auth sufficient pam_krb5.so
auth sufficient pam_unix.so nullok
auth required pam_deny.so
예를 들어, AD 도메인의 계정을 사용하여 SSH를 통해 Linux 시스템에 액세스하려고 한다고 가정해 보겠습니다. Linux 시스템은 winbind를 사용하여 AD와 상호 작용합니다.
프로세스 작동 방식은 다음과 같습니다.제 생각에는이것은 작동합니다:
- SSH 서비스는 포트 22를 통해 액세스 요청을 받습니다. 사용자가 자격 증명을 입력합니다.
- SSH 서비스는 인증을 위해 PAM을 사용하도록 구성되었으므로 "/etc/pam.d/ssh"를 참조하여 사용할 PAM 모듈을 확인합니다.
- PAM에서 SSH는 "pam_winbind.so" 모듈을 먼저 시도하도록 구성됩니다. 이 모듈의 기능은 인증을 위해 AD를 쿼리하는 것입니다. 성공하면 PAM을 만족하기에 충분하므로 사용자에게 액세스 권한을 부여합니다. 그렇지 않으면 목록 아래로 계속 이동합니다.
이 과정에서 NSS는 어떤 역할을 합니까? NSS가 실제로 어떤 용도로 사용되는지 이해하는 데 어려움을 겪고 있습니다. 내 생각엔 익스플로잇이 특정 "이름"을 찾도록 OS에 알려주는 시스템인 것 같습니다. 예를 들어, 위의 nsswitch.conf 파일을 사용하여 사용자 계정을 찾는 경우 먼저 로컬 "파일"을 찾습니다. 거기에서 계정 정보를 찾을 수 없으면 "ldap" 서버를 찾고 마지막으로 "winbind"를 찾습니다.
그런데 그게 PAM이 하는 일이 아닌가요?
PAM은 "pam_winbind.so" 라이브러리를 활용하여 도메인 컨트롤러의 winbind 구성 내용에 대해 인증합니다. NSS에 "winbind"가 나열된 이유는 무엇입니까? 어쩌면 이것이 PAM을 사용하지 않는 서비스에도 적용될 수 있을까요? 보통 둘 중 하나인가요?
여기에 지식을 전달해 주시면 대단히 감사하겠습니다!