ssh가 로컬 네트워크에서만 루트 사용자를 허용하는 방법은 무엇입니까?


38

CentOS 6.5 컴퓨터에 Google-Authenticator를 설치하고 OTP를 제공하도록 특정 사용자를 구성했습니다.

편집하는 동안 /etc/ssh/sshd_config지시문 " PermitRootLogin"이 (가) 기본적으로 주석 처리되어 있습니다.

" PermitRootLogin no" 를 설정하고 싶지만 로컬 네트워크에서만 루트로 머신에 ssh 할 수 있습니다.

가능합니까?


5
절대 이러지 마 사용자로 SSH를 입력 한 후 sudo를 사용하여 권한을 높이십시오. 이렇게하면 종이 흔적이 남게되어 어떤 계정이 도용되었는지 알 수 있습니다.
SnakeDoc

3
@SnakeDoc : 그것은 하나의 생각의 학교이지만 명확하지는 않으며 반대의 주장을합니다. sudo는 거대한 복잡한 공격 영역이며 내가 설치하고 싶었던 것이 아닙니다. SSH pubkey auth는 훨씬 작은 공격 영역입니다. 어느 쪽이든 기록 할 수 있지만 사용자 (루트)가 로그를 편집하거나 삭제할 수있을 때 로깅은 그다지 유용하지 않습니다. 외부 추가 전용 스토리지에 로그인하지 않는 한 항상 그렇습니다.
R ..

1
@R .. 최소 권한 원칙을 사용하여 sudoers를 올바르게 설정 한 경우 설명 된 이러한 문제는 크게 문제가되지 않습니다. 어떤 사용자도 sudo - su루트로 들어가거나 루트로 들어가거나 사용자가 필요로하지 않는 모든 것을 할 수 없어야 합니다 (sudoers에서는 명령에 화이트리스트를 사용합니다). 루트가 필요한 경우 물리적으로 콘솔에 있어야합니다. 즉. SSH를 통한 루트는 절대 허용되지 않아야합니다 ... 키 여부.
SnakeDoc

1
@SnakeDoc : 당신은 착각입니다. Sudo는 고유 한 복잡한 공격 영역 execve에서 상속 된 모든 상태의 형태로 suid 바이너리 인 고유의 기본 복잡한 공격 영역을 모두 가지고 있습니다. 어떤 경우에는 suid 프로그램 자체의 버그 (suid)도 필요하지 않습니다. 동적 링커 (예 : CVE-2010-3856)와 같은 기본 인프라의 버그로 충분할 수 있습니다.
R ..

1
@R .. 당신은 항상 키가 유출되는지 알 것이라고 가정합니다. 그것은 가정의 하나입니다. 또한 침입자는 루트 권한을 갖습니다. 권한이없는 계정을 통해 전송하여 루트로 상승시켜야합니다. 이런 식으로 유출해야하는 키, 암호 해독 키 및 일반 사용자 계정 암호가 손상됩니다. 그리고 공격자가이 모든 것을 통과하면 ...이 사용자는 기능이 매우 제한된 sudoers 아래에 설정되어 있기 때문에 아무것도 할 수 없습니다 ... 지금 이점을 보시겠습니까? ssh ... 기간 동안 직접 루트 로그인을 허용하지 마십시오. 좋은 위생입니다
SnakeDoc

답변:


54

다음에서 Matchconfig 매개 변수를 사용하십시오 /etc/ssh/sshd_config.

# general config
PermitRootLogin no 

# the following overrides the general config when conditions are met. 
Match Address  192.168.0.*
    PermitRootLogin yes

보다 man sshd_config


왜 그렇게 생각하지 않았습니까? 고마워 친구
Itai Ganot

8
에서 인증 키 소스를 제한 할 수도 있습니다 ~root/.ssh/authorized_keys. 키 앞에 접두사를 붙입니다 from="192.168.0.0/24 ".
BillThor

9
IPv6 링크 로컬 주소도 허용하도록 변경하겠습니다. IPv6에서 링크 로컬 주소가 작동하는 방식은 잘못 구성된 네트워킹에 매우 강력합니다. 즉, 네트워크 구성 오류를 해결하기 위해 ssh를 사용해야하는 경우 IPv6 링크 로컬 주소를 사용하는 것이 유일한 옵션 일 수 있습니다.
kasperd

참고 추가로 AllowUser 지시문을 추가로 사용하는 경우 추가로 (반 직관적으로) 수행해야합니다.AllowUser root
Robert Riedl

14

Match address방법은 이미 언급되었지만 시스템에 로그인 할 수있는 사용자 (또는 그룹)를 제한 할 수도 있습니다. 예를 들어, 로그인을 사용자 itai(어디서나) 및 root특정 네트워크에서 로그인으로 제한 하려면 다음을 사용하십시오.

AllowUsers itai root@192.168.0.*

이렇게하면 (와 같은 apache) 다른 모든 사용자가 SSH를 통해 로그인 할 수 없습니다.

sshd_config (5) 매뉴얼 의 AllowUsers키워드 도 참조하십시오 .


4
AllowGroupsSSH를 사용하여 로그인 할 수 있어야하는 모든 사용자를 특정 그룹에 추가하고 선호합니다 . 그것은 맛의 문제라고 생각하지만, sshd_config를 덜 편집하는 것처럼 보입니다 (이는 모든 사람들을 망치고 잠글 위험이 적습니다).
CVn

1
@ MichaelKjörling 또한 AllowGroups는 팀이 확장되거나 축소되는 경우 sshd_config에 대한 편집 권한이 필요하지 않음을 의미합니다. 이를 통해 더 많은 관리 유형이나 인턴이이를 수행 할 수도 있습니다.
Nzall

좋은 점, 당신은 옵션을 결합 할 수 있습니다 AllowUsers itai root@192.168.0.*그리고 AllowGroups ssh-users당신이 실수로 인턴 실수 그룹 : 클리어 경우에 잠금 발생하지 않습니다
Lekensteyn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.