PAM 정책으로 OpenVPN 로그인을 하나의 그룹으로 제한하기
전용 PAM 서비스를 사용하면 시스템 전체 로그인 규칙을 건드리지 않고 VPN 그룹 구성원만 허용할 수 있습니다. auth-pam 플러그인을 그 서비스로 지정하고 결과를 확인하십시오.
모든 계정이 정상적으로 로그인할 수 있게 유지하되, VPN은 한 그룹만 사용하도록 허용합니다. PAM은 두 번째 비밀번호 저장소 없이 그 차이를 표현할 수 있고, OpenVPN 플러그인은 의도한 검사만 포함하는 서비스로 지정할 수 있습니다. 요령은 시스템 전체 스택을 실수로 상속하지 않고 그 서비스를 구축하는 것입니다.
여기서의 진행은 플러그인의 서비스 이름에서 시작해 정책을 만들고, 구성원, 유효한 비밀번호를 가진 외부인, 잘못된 자격 증명이라는 중요한 세 가지 결과를 시험합니다.
별도 PAM 서비스가 필요한 이유
auth-pam 플러그인은 인수로 서비스 이름을 받습니다. 그 이름이 /etc/pam.d 아래의 파일을 선택하고, 그 파일의 스택이 VPN 로그인 중에 실행됩니다. 시스템 전체 로그인이 쓰는 것과 같은 이름을 넘기면 그 스택의 모든 판단을 상속하게 되며, 나중에 무관한 이유로 추가된 것까지 포함됩니다.
대신 전용 서비스를 만드십시오. 의도한 백엔드에 이미 인증하는 동작하는 스택(예: 로컬 비밀번호 파일, SSSD, 디렉터리 서비스)에서 시작해 자격 규칙을 추가하십시오. 빈 파일에 두 줄을 복사하는 것이 흔한 실수이며, 비밀번호 만료, 계정 잠금 및 기타 검사가 복사하지 않은 스택에 남아 있을 수 있습니다.
서비스를 분리하면 피해 범위도 제한됩니다. 공유 스택의 VPN 전용 규칙은 모든 사람의 SSH 또는 콘솔 접근을 거부할 수 있으며, 이는 접근 변경을 장애로 바꿉니다.
그룹 규칙 작성하기
자격 검사는 자격 증명이 확인된 후 계정 단계에 속합니다. account required pam_succeed_if.so user ingroup vpnusers와 같은 규칙은 인증된 사용자가 그 그룹의 구성원일 때만 처리를 계속하도록 허용합니다.
그 줄은 단편이며 완전한 서비스가 아닙니다. 수용되는 모든 경로가 도달하는 곳에 통합하고 주변의 제어 플래그를 확인하십시오. 스택 앞쪽의 sufficient 또는 점프 제어는 당신의 규칙이 실행되기 전에 처리를 끝낼 수 있으며, 그러면 제한이 제안으로 바뀝니다.
습관적으로 use_uid를 추가하지 마십시오. 이것이 없으면 모듈은 인증되는 사용자를 평가하고, 이것이 있으면 모듈은 OpenVPN 프로세스가 실행되는 계정을 평가하며, 그 계정은 보통 root 또는 서비스 계정이므로 로그인하는 사람이 아닙니다.
그룹 구성원 자격은 시스템의 신원 확인에서 오며, 당신이 아는 이름에서 오지 않습니다. 디렉터리 사용자의 경우 익숙한 이름의 로컬 그룹이 같은 이름의 디렉터리 그룹과 다른 객체이므로, 같은 백엔드가 그 사용자의 그룹 질의에 응답하는지 확인하십시오.
순서와 신원의 함정
그룹 규칙은 인증 스택 뒤, 그리고 여전히 적용되어야 하는 모든 검사 뒤에 두되, 유지하는 계정 검사 앞이나 옆에 두십시오. PAM은 파일 순서로 모듈을 평가하며, 각 줄의 제어 값이 실패가 최종인지 결정합니다.
중복 스택을 주의하십시오. 흔한 패턴은 이미 계정 규칙을 포함하는 include 뒤에 당신의 그룹 규칙이 오는 것이며, 이는 하나를 기대한 곳에서 두 개의 판단을 만듭니다. 편집한 파일만이 아니라 포함된 파일도 읽으십시오. 실제 순서를 빨리 보려면 파일을 위에서 아래로 읽고 각 제어 값을 적으십시오.
다른 입장 요건은 그대로 두십시오. 성공한 비밀번호는 인증서 검사, 두 번째 요소 또는 연결 후 권한 부여를 대체하지 않으며, 이 정책도 그것들 중 어느 것의 대체가 아닙니다. 이 정책은 계정이 VPN 접근 검토 대상으로 적격한지만 결정합니다.
구성원, 외부인, 잘못된 비밀번호 시험하기
정책을 완료로 보기 전에 세 가지 경우를 시험하십시오. 구성원은 성공적으로 연결됩니다. 그룹 밖의 유효한 계정은 비밀번호를 인증하지만 VPN 접근이 거부됩니다. 어느 계정이든 잘못된 비밀번호는 인증 단계에서 거부되며, 그룹 규칙에 의한 것이 아닙니다.
클라이언트에 보이는 오류와 서버 로그를 함께 보십시오. 연결하는 사람에게 두 실패가 비슷하게 보일 수 있으므로 이 구분은 지원에 중요하며, 올바른 비밀번호를 가진 외부인은 그룹 변경이 필요하고 잘못된 비밀번호는 자격 증명 재설정이 필요합니다.
PAM을 편집하는 동안 두 번째 세션을 열어 두고, 변경 후 일반 SSH 로그인도 확인하십시오. 전용 서비스의 요점은 시스템 로그인이 영향을 받지 않아야 한다는 것이며, 그것을 아는 유일한 방법은 시험하는 것입니다.
무언가 깨지면 복사본에서 이전 서비스 파일을 복원하십시오. 원하는 규칙은 간단하며, 구성원 자격이 계정을 VPN 접근에 적격하게 만들고 다른 모든 필수 검사는 여전히 적용됩니다.