모든 사용자가 SSH를 정상적으로 사용하도록 허용하고 싶습니다.와는 별개로IP 주소 집합을 기반으로 루트 액세스를 제한하고 싶습니다. 따라서 사용자 은 peter
( 는 paul
) lary
어디에서나 로그인할 수 있지만 root
호스트 a.b.c.d
및 에서만 로그인할 수 있습니다 q.r.s.t
.
sshd_config
AllowUsers
이 작업에는 작동하지 않습니다. 무엇이든 지정하려면 모든 사용자를 지정해야 합니다.- 매뉴얼 페이지에서 제안하는 방식과 달리
AllowGroups
사용자가 화이트리스트에 등록되어 있어도 무조건 확인됩니다AllowUsers
. 따라서 루트가 아닌 사용자를 그룹에 추가한 다음 해당 그룹을 화이트리스트에 추가하려고 하면AllowGroups
인증이 여전히 실패합니다. 루트가 유효한 허용 그룹에 속하지 않기 때문입니다. sshd_config
DenyUsers
거부될 루트 IP 주소 집합을 화이트리스트에 추가할 수 있다면 이 방법이 효과가 있을 수 있습니다. IP가 하나만 있다면 아마도!
통신사와 작동할 것입니다.options
authenticated_keys 파일의 키 섹션을 사용하여 이 작업을 수행할 수 있습니다.그리고루트 비밀번호를 완전히 비활성화합니다. 문제는 파일이 시스템 정책이 아니며 다른(루트 액세스) 사용자가 덮어쓸 수 있다는 것입니다. 현재로서는 이것이 내가 가진 최선의 선택이지만 마음에 들지 않습니다. 또한, 내가 루트 비밀번호를 어기면 내 그룹의 누군가가 나에게 정말 화를 낼 것입니다. (내가 루트 비밀번호를 변경하지 않으면 다른 사람이 임의의 IP 비밀번호를 사용하여 루트를 통해 로그인할 수 있습니다.)나는 PAM을 사용하여, 특히 를 통해 이 작업을 시도했지만
pam_listfile
내 접근 방식이 전혀 작동하지 않는 것 같습니다.auth required pam_sepermit.so auth required pam_listfile.so file=/etc/root-whitelist.txt sense=allow item=rhost apply=root auth include password-auth
허용된 IP 주소는 파일 내에
root-whitelist.txt
한 줄씩 표시됩니다 . 규칙을 알 수가 없어요부정적인목록에 없는 IP 액세스.
이 pam_listfile
방법을 사용할 수 있습니까? 제가 착각한 것인가요? 더 좋은 방법이 있나요?
답변1
내 동료는 나에게 /u/meuh와 같은 방향을 지시했지만 약간 다른 방식으로 지시했습니다.
Match Address "172.24.*.33"
PermitRootLogin yes
Match Address "192.168.1.18,192.168.1.20"
PermitRootLogin yes
답변2
SSH 버전에 따라 AllowUsers에 대한 일치 기준을 설정할 수 있습니다. man sshd_config
"일치"에서 허용되는 명령을 나열합니다. AllowUsers가 있으면 다음을 시도해 볼 수 있습니다. 파일 끝에 있는지 확인하세요.
Match User root
AllowUsers root@ a.b.c.d [email protected]
예를 들어 OpenSSH_6.0p1 Debian에서는 작동하지 않지만 OpenSSH_6.6.1p1 Ubuntu에서는 작동합니다.
답변3
다른 동료가 나에게 방향을 가리켰다.pam_access기준 치수. 이는 일반적으로 에 있는 형식을 사용 /etc/security/access.conf
하지만 모든 파일을 전체 시스템 또는 sshd 프로세스에 대해 활성화할 수 있습니다. 아직 시도하지는 않았지만 아마도 pam_access를 에 추가하면 파일 auth
이 다음과 같이 보일 것입니다./etc/pam.d/sshd
access.conf
+ : root : hosta hostb hostx
- : root : ALL