^ Beyond Linux(r) From Scratch (systemd Edition) - Version 12.1 ^^^ ^ Chapter 4. Security ^^^ |[[.:libcap-2.69 with PAM|이전]] | [[.:Chapter 4. Security|위로]] / [[.:index|처음으로]] | [[.:liboauth-1.0.3|다음]]| |libcap-2.69 with PAM | liboauth-1.0.3| ---- ===== Linux-PAM-1.6.0 ===== ==== Linux PAM 소개 ==== Linux PAM 패키지에는 로컬 시스템 관리자가 애플리케이션 프로그램이 사용자를 인증하는 방법을 제어하는 데 사용하는 플러그형 인증 모듈(PAM: Pluggable Authentication Modules)이 포함되어 있습니다. 이 패키지는 LFS 12.1 플랫폼을 사용하여 빌드하고 제대로 작동하는 것으로 알려져 있습니다. === 패키지 정보 === * **다운로드:** [[https://github.com/linux-pam/linux-pam/releases/download/v1.6.0/Linux-PAM-1.6.0.tar.xz|Linux-PAM-1.6.0.tar.xz]] * MD5: 41a10af5fc35a7be472ae9864338e64a * 다운로드 크기: 1.0 MB * 디스크 공간: 39 MB (테스트 포함) * 빌드 시간: 0.4 SBU (테스트 포함) === 추가 다운로드 === == 선택적 문서 == * **다운로드:** [[https://github.com/linux-pam/linux-pam/releases/download/v1.6.0/Linux-PAM-1.6.0-docs.tar.xz|Linux-PAM-1.6.0-docs.tar.xz]] * **MD5**: db41b71435df078658b3db1f57bb2a49 * 다운로드 크기: 456 KB === Linux PAM 종속성 === == 선택 == * [[.:libnsl-2.0.1]] * [[.:libtirpc-1.3.4]] * [[.:rpcsvc-proto-1.4.4]] * [[.:Berkeley DB]] Deprecated * [[.:libaudit]] * [[.:libeconf]] * [[.:Prelude]] **참고** \\ Linux PAM을 설치 및 구성한 후 [[.:Shadow-4.14.5]] 및 [[.:Systemd-255]]를 다시 설치하고 재구성해야 합니다. Linux-PAM-1.4.0 이상에서는 pam_cracklib 모듈이 기본적으로 설치되지 않습니다. 강력한 비밀번호를 적용하려면 [[.:libpwquality-1.4.5]]를 사용하세요. ---- ==== Linux PAM 설치 ==== 추가 문서를 다운로드했다면 다음 명령을 실행하여 압축을 풉니다. tar -xf ../Linux-PAM-1.6.0-docs.tar.xz --strip-components=1 다음과 같이 컴파일하고 링크합니다. ./configure --prefix=/usr \ --sbindir=/usr/sbin \ --sysconfdir=/etc \ --libdir=/usr/lib \ --enable-securedir=/usr/lib/security \ --docdir=/usr/share/doc/Linux-PAM-1.6.0 && make 결과를 테스트하려면 적절한 ''/etc/pam.d/other'' 구성 파일이 있어야 합니다. **Linux PAM 재설치 또는 업그레이드** \\ Linux PAM이 설치되어 작동 중인 시스템에서 ''/etc/pam.d''의 파일을 부주의하게 수정할 경우 시스템을 완전히 사용할 수 없게 될 수 있으므로 주의하세요. 테스트를 실행하려는 경우 새로 ''/etc/pam.d/other'' 파일을 만들 필요는 없습니다. 기존 파일을 테스트에 사용할 수 있습니다. 또한 **make install**은 ''/etc/security''와 ''/etc/environment''의 구성 파일을 덮어쓴다는 점에 유의해야 합니다. 해당 파일을 수정한 경우 반드시 백업하세요. 처음 설치하는 경우 //root// 사용자로 다음과 같이 구성 파일을 만듭니다. install -v -m755 -d /etc/pam.d && cat > /etc/pam.d/other << "EOF" auth required pam_deny.so account required pam_deny.so password required pam_deny.so session required pam_deny.so EOF 이제 **make check**를 실행하여 테스트를 실행합니다. 설치를 계속하기 전에 테스트에서 오류가 발생하지 않았는지 확인하세요. 테스트가 매우 길다는 점에 유의하세요. 출력을 로그 파일로 리디렉션하여 꼼꼼히 검사할 수 있도록 하세요. 처음 설치하는 경우 //root// 사용자로 다음과 같이 앞서 만든 구성 파일을 제거합니다. rm -fv /etc/pam.d/other 이제 //root// 사용자로 make install && chmod -v 4755 /usr/sbin/unix_chkpwd ---- ==== 명령 설명 ==== * //--enable-securedir=/usr/lib/security//: \\ PAM 모듈의 설치 위치를 설정합니다. * **chmod -v 4755 /usr/sbin/unix_chkpwd**: \\ 루트 프로세스가 아닌 프로세스가 섀도 파일에 액세스할 수 있도록 **unix_chkpwd** 보조 프로그램의 setuid 비트가 켜져 있어야 합니다. ---- ==== Linux-PAM 설정 ==== === 설정 파일 === ''/etc/security/*'', ''/etc/pam.d/*'' === 설정 정보 === 설정 정보는 ''/etc/pam.d/''에 위치합니다. 다음은 예제 파일 입니다. # Begin /etc/pam.d/other auth required pam_unix.so nullok account required pam_unix.so session required pam_unix.so password required pam_unix.so nullok # End /etc/pam.d/other 다음과 같이 //root// 사용자로 몇 가지 일반적인 설정 파일을 생성합니다. install -vdm755 /etc/pam.d && cat > /etc/pam.d/system-account << "EOF" && # Begin /etc/pam.d/system-account account required pam_unix.so # End /etc/pam.d/system-account EOF cat > /etc/pam.d/system-auth << "EOF" && # Begin /etc/pam.d/system-auth auth required pam_unix.so # End /etc/pam.d/system-auth EOF cat > /etc/pam.d/system-session << "EOF" && # Begin /etc/pam.d/system-session session required pam_unix.so # End /etc/pam.d/system-session EOF cat > /etc/pam.d/system-password << "EOF" # Begin /etc/pam.d/system-password # use yescrypt hash for encryption, use shadow, and try to use any # previously defined authentication token (chosen password) set by any # prior module. password required pam_unix.so yescrypt shadow try_first_pass # End /etc/pam.d/system-password EOF 강력한 비밀번호 지원 정책을 사용하려면 [[.:libpwquality-1.4.5]]를 설치하고 해당 페이지의 안내에 따라 강력한 비밀번호를 지원하는 pam_pwquality PAM 모듈을 구성하세요. 그런 다음 제한적인 ''/etc/pam.d/other'' 구성 파일을 추가합니다. 이 파일을 사용하면 해당 애플리케이션에 대한 구성 파일이 존재하지 않으면 PAM을 인식하는 프로그램이 실행되지 않습니다. cat > /etc/pam.d/other << "EOF" # Begin /etc/pam.d/other auth required pam_warn.so auth required pam_deny.so account required pam_warn.so account required pam_deny.so password required pam_warn.so password required pam_deny.so session required pam_warn.so session required pam_deny.so # End /etc/pam.d/other EOF 여러가지 필드와 허용되는 항목에 대해 알아볼 수 있는 좋은 출발점은 PAM 매뉴얼 페이지(**man pam**)에서 확인할 수 있습니다. 자세한 내용은 [[https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/Linux-PAM_SAG.html|Linux-PAM 시스템 관리자 가이드]]를 참조하세요. **중요** \\ 이제 [[.:Shadow-4.14.5]] 및 [[.:Systemd-255]] 패키지를 다시 설치해야 합니다. ---- ==== 패키지 구성 ==== * **설치된 프로그램:** \\ faillock, mkhomedir_helper, pam_namespace_helper, pam_timestamp_check, pwhistory_helper, unix_chkpwd 그리고 unix_update * **설치된 라이브러리:** \\ libpam.so, libpamc.so, libpam_misc.so * **설치된 디렉토리** \\ /etc/security, /usr/lib/security, /usr/include/security 및 /usr/share/doc/Linux-PAM-1.6.0 === 간략한 설명 === * **faillock** \\ 인증 실패 레코드 파일을 표시하고 수정합니다. * **mkhomedir_helper** \\ 홈 디렉터리를 생성하는 헬퍼 바이너리. * **pam_namespace_helper** \\ 사용자 세션의 개인 네임스페이스를 구성하는 데 사용되는 헬퍼 프로그램. * **pwhistory_helper** \\ 암호 해시를 passwd 또는 shadow에서 opasswd로 전송하는 헬퍼 프로그램입니다. * **pam_timestamp_check** \\ 기본 타임스탬프가 유효한지 확인하는 데 사용됩니다. * **unix_chkpwd** \\ 현재 사용자의 비밀번호를 확인하는 헬퍼 바이너리입니다. * **unix_update** \\ 주어진 사용자의 암호를 업데이트하는 헬퍼 바이너리입니다. * libpam.so \\ 애플리케이션과 PAM 모듈 간의 인터페이스를 제공합니다.