그래서 로컬 네트워크에 OpenSSH 서버를 실행하는 서버가 있습니다. 서버는 예상되는 외부 네트워크의 SSH를 허용하도록 구성되었습니다. 그러나 내 LAN 외부에서 로그인이 허용되지 않는 특정 사용자(localUser)를 생성하고 싶습니다.
현재 SSH를 통해 로그인할 수 있는 유일한 그룹인 sshusers라는 그룹이 있습니다.
매뉴얼 페이지에 따르면 사용자를 "허용/거부"하는 것이 가능해야 하지만 어떻게 해야 할지 모르겠습니다. 내가 시도한 것은 다음과 같습니다.
첫 시도:
AllowGroups sshusers
AllowUsers [email protected].* # 2 is not a typo
# localUser not in group sshusers. Intention: AllowUsers should override
# previous configuration, allowing access for localUser, even if he is
# not member of sshusers
두 번째 시도:
AllowGroups sshusers
DenyUsers localUser@!192.168.2.*
# localUser is member of sshusers. Intention: Access is granted, but with
# the negotiation of the match-expression for the LAN, access should be
# denied for external login.
# Also tried "[email protected].*"
LAN에 대한 사용자 액세스를 거부하지만 외부 액세스 권한을 부여하는 것은 가능하다는 점을 언급해야 합니다.
# localUser member of sshusers
AllowGroups sshusers
DenyUsers [email protected].*
그런데 저는 이 구성을 반대로 하고 싶습니다.
도움을 주셔서 감사합니다. 하지만 저는 이를 위해 PAM이나 iptables를 사용하는 것을 좋아하지 않습니다.
답변1
다음을 시도해 볼 수 있습니다.
AllowGroups sshusers
DenyUsers localuser@!192.168.2.*,
별표 뒤의 쉼표를 참고하세요. 따라서 호스트 이름 일치를 부정하는 구문은 다음과 !
같아야 합니다.
DenyUsers localuser@!192.168.2.*,!10.8.0.*,
이는 호스트가 목록에 있는 것과 다른 경우 로컬 사용자가 연결할 수 없어야 함을 의미합니다.
댓글에서 언급했듯이 이 기능은 OpenSSH_7.4p1
. 그래서 나는 다음을 시도했습니다 ( test 사용 openssh-7.5p1
). 완벽하게 작동합니다.
DenyUsers localuser@*,!10.8.0.*
이 방법으로 로컬 사용자는 10.8.0.*을 제외한 모든 곳에서 거부됩니다.