의도
내 서버에 대한 SSH 루트 액세스를 허용하고 싶지만 보안상의 이유로 로컬 네트워크에서만 가능합니다.
환경
- 운영 체제: GNU/Linux Debian 9 Stretch가 완전히 업데이트되었습니다.
- SSH: OpenSSH 버전 1: 7.4p1-10+deb9u3.
프로그램
기본 구성 파일에서:
/etc/ssh/sshd_config
직접적인 루트 액세스를 허용하지 않는 전역 라인을 제거했습니다. 즉,
PermitRootLogin no
다음과 같이 설정합니다.
# root is allowed from local network only Match Address 192.168.0.* PermitRootLogin yes # otherwise you need to log in as a user Match all PermitRootLogin no
일시적으로 비밀번호 액세스를 활성화했습니다.
PasswordAuthentication yes
루트 계정에 대한 개인-공개 키 쌍을 생성했습니다.
ssh-keygen -t rsa -b 8192
물론, 루트로 로그인했을 때입니다.
그런 다음 클라이언트 랩톱에서 다음을 사용하여 공개 키를 복사했습니다.
ssh-copy-id [email protected] -p yyyyy # I have hidden the port number and ip
그런 다음 공개 키를 사용하여 루트로 내 서버에 성공적으로 로그인할 수 있었기 때문에 비밀번호 액세스를 비활성화했습니다.
# use only public key, never a password PubkeyAuthentication yes PasswordAuthentication no AuthenticationMethods publickey
질문
로컬이 아닌 컴퓨터가 내 서버에 로그인을 시도할 수도 없도록 필요한 모든 단계를 따랐습니까?
아직 제안하지 않았다면 제안 사항을 자세히 설명해 주세요.
답변1
로컬이 아닌 컴퓨터가 내 서버에 로그인을 시도할 수도 없도록 필요한 모든 단계를 따랐습니까?
귀하의 서버에 로그인하려는 시도를 차단합니다.루트 사용자로. 따라서 이것은 달라질 것입니다:
- 두 번째 계정에 SSH 키를 추가하는 경우.
- 이러한 유지 관리 단계 중에 일시적으로 비밀번호 로그인을 활성화합니다. 인터넷에서 네트워크 연결을 대략적으로 끊지 않는 한, 단계에서 해당 내용을 언급하지 않은 것으로 나타났습니다.
위의 문제를 해결하고자 한다면 코드를 직접 작성하는 것이 더 좋을 것 같습니다. 예를 들어, 한 줄로 모든 사용자의 로그인을 제어할 수 있다고 생각합니다. 이렇게 하면 인터넷 기반 비밀번호 추측 공격에 "일시적으로" 노출될 필요가 없습니다. :-).
AllowUsers *@192.168.0.*
그러나 SSH 데몬 구성에 의존해서는 안 됩니다. 왜 이 정책이 중앙 방화벽에서 시행되지 않는지 물어봐야 합니다. 예를 들어, 로컬이 아닌 로그인을 원하지 않는 경우 SSH 서버의 사전 인증 코드에서 what-if 오류에 자신을 노출할 필요가 없습니다.
나는 원치 않는 제안 하나만으로 제한하겠습니다. 호스트 이름을 IPv6 주소로 확인하기 위해 로컬 시스템을 수정하면 의도하지 않은 일이더라도 놀랄 수 있습니다. 위의 내용은 IPv6 주소에 대한 연결을 허용하지 않기 때문입니다 :). 순수하게 중앙 방화벽에만 의존하는 경우에도 이에 대해 걱정할 필요가 없습니다.
가장 간단한 네트워크 구성은 로컬 네트워크를 인터넷 트래픽(및 게스트 무선 네트워크와 같은 기타 트래픽)에서 분리하는 중앙 집중식 방화벽을 보유하는 것입니다. 특별한 이유가 없는 한 인터넷 연결을 차단합니다.
이는 가정/소규모 기업 라우터의 기본 설정으로 표준화되었습니다. (이러한 장치는 매우 저렴하고 보안이 취약하므로 이러한 가정을 검증해야 합니다. 이 특정 문제는 활동가에게 매우 눈에 띄는 문제입니다.하다그러나 일부 장치는 IPv6가 처음 구현될 때 "잘못된" 선택을 하는 것으로 알려져 있습니다.
물론 원하는 경우 호스트 자체에 "중복" 방화벽을 구성할 수도 있습니다. 예를 들어 "기본적으로 포트가 열리지 않음" 정책을 시행하는 데 유용할 수 있습니다.우분투또는더반. 단점은 방화벽이 깨졌을 때 기억, 구성 및 문제 해결이 어렵다는 것이며 이제 두 개의 별도 방화벽이 있다는 것입니다! 하나에서 두 개로 이동하면 순수 서버 애플리케이션(예: SSH) 또는 가장 신뢰할 수 있는 일부 변형용으로 설계되지 않은 P2P 애플리케이션을 사용하기 시작할 때마다 상당한 복잡성이 추가됩니다.펀치 구멍.
다음으로 간단한 네트워크 구성은 sshd를 통해 중복성 옵션을 추가하는 것입니다 ListenAddress
. 일부 IPv6 지원을 추가하려면 라우터가 전역적으로 라우팅 가능한 주소뿐만 아니라 고유한 로컬 주소를 할당하고 고유한 로컬 주소를 수신하는지 확인할 수 있습니다. IPv6가 있는 경우 특정 '사용을 강제하면 ListenAddress
상당한 보안 마진이 추가됩니다. 이는 IPv4만 있던 시절과 달리 NAT 때문에 인터넷이 서버를 공격할 수 없었습니다.
- 귀하의 서버는 라우터이거나
- 모뎀+라우터 콤보가 아닌 순수 모뎀을 사용하는 경우
- 최소 한 개 이상의 방을 임대했습니다.추가의서버에 할당된 글로벌 IP 주소입니다.
일반적으로 방화벽을 사용하는 것은 여전히 의미가 있지만(특정 예외는 기억나지 않습니다) 이와 같은 것을 ListenAddress
두 번째 안전 한계로 취급합니다.
서버 자체의 IP 주소를 사용할 뿐만 아니라,범위나열된 기술 중에서 가장 이상적인 IMO입니다. :).