sshd“UseDNS”옵션의 요점은 무엇입니까?


78

나는 그것이 무엇을하는지 알지만 왜 그런지 모르겠다 . 어떤 공격을 방지합니까?

모든 종류의 인증 방법과 관련이 있습니까? (호스트 기반, 비밀번호, 공개 키, 키보드 대화 형 ...)


2
여기에 CoreOS에도 추가했습니다 : github.com/coreos/bugs/issues/92

답변:


65

UseDNS옵션은 대부분 쓸모가 없습니다. 클라이언트 컴퓨터가 인터넷에있는 경우 역방향 DNS가 없거나 역방향 DNS가 앞으로 확인되지 않거나 DNS에서 "이 외에는 다른 정보를 제공하지 않을 가능성이 높습니다. 이미 IP 주소를 알려주는 ISP”를 참조하십시오.

일반적인 구성에서 DNS는 로깅에만 사용됩니다. 인증에 사용할 수 있지만 IgnoreRhosts no에 지정된 경우에만 사용할 수 있습니다 sshd_config. 이것은 당신이 "라는 사용자 말할 수 RSH, 사용 된 설치와의 호환성을 위해이다 bob라는 컴퓨터에이 darkstar로 로그인 할 수 있습니다 alice(작성하여 자격 증명을 표시하지 않고"을 darkstar bob에서 ~alice/.rhosts). ssh 서버에 연결되어있을 수있는 모든 시스템을 신뢰하는 경우에만 안전합니다. 다시 말해, 이것은 안전한 방법으로 사용하기가 매우 드 very니다.

DNS 조회는 매우 특별한 상황을 제외하고 유용한 정보를 제공하지 않기 때문에 해제해야합니다. 내가 알 수있는 한, 기본적으로 켜져있는 유일한 이유는 소규모 환경에만 적용되지만 기술적으로 더 안전하다는 것입니다 (사용 가능성이 아닌 인증에 관심이있는 경우).

이 기능을 해제하는 또 다른 주장은 불필요한 기능은 모두 불필요한 보안 위험이라는 것 입니다.


따라서 UseDNS는 호스트 기반 인증에만 관련이 있습니까? 호스트 기반 인증을 사용하지 않고 호스트 이름 또는 IP가 로그에 나타나는지 상관하지 않는다면 UseDNS는 아무런 차이가 없습니까?
user368507

5
@ user368507 그렇습니다. 키 기반 호스트 인증 UseDNS을 사용하는 경우에도 호스트 이름 기반 호스트 인증 (예 : 매우 약한 인증) 을 사용하는 경우에는 유용하지 않습니다 .
Gilles

3
물론 키 기반 호스트 이름 기반 인증 을 사용하는 경우 @Gilles UseDNS는 매우 유용하고 중요합니다. MAC 주소에 할당 된 키 및 호스트 이름을 기준으로 서버를 기반으로 사용자를 인증합니다.
kara deniz

38

나는 이것에 관해 우분투에서 버그 보고서 (오래되었지만 여전히 최신)를 추가했습니다.

https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371

기본값을 아니요로 변경하고 최신 문서를 추가하도록 제안했습니다.

# UseDNS - Determines whether IP Address to Hostname lookup and comparison is performed
# Default value is No which avoids login delays when the remote client's DNS cannot be resolved
# Value of No implies that the usage of "from=" in authorized_keys will not support DNS host names but only IP addresses.
# Value of Yes supports host names in "from=" for authorized_keys. Additionally if the remote client's IP address does not match the resolved DNS host name (or could not be reverse lookup resolved) then a warning is logged.

2
upvote up ... 이것은 내가 찾고 있던 정보를 포함하기 때문에 더 유용합니다.
0xC0000022L

1
마찬가지로 UseDNS가 없으면 pam_access 규칙에서 호스트 이름을 일치시킬 수 없으며 대신 IP를 사용해야합니다.
ColinM

1
몇 년 전이 답변을 찬성했지만 오늘만 우분투 15.10 이상에있는 OpenSSH 6.8p1에서 기본값이 "UseDNS no"로 변경되었습니다 .
Anthony Geoghegan

RedHat (RHEL7에서)은 최근 기본값을 아니요로 변경하여 호스트 이름 기반 액세스 제어를 중단합니다 (이것은 단독 액세스 제어 메커니즘이 아닌 인트라넷에서 주로 자문 제어로 유용함).
dannysauer

8

맨 페이지에서 sshd_config(5):

 UseDNS  Specifies whether sshd(8) should look up the remote host name and
         check that the resolved host name for the remote IP address maps
         back to the very same IP address.  The default is “yes”.

이를 사용하면 적절한 (정방향 및 역방향) DNS없이 위치에서 액세스하여 로그에 경고를 생성합니다.

따라서 경고를 기록하지 않으려면 클라이언트의 정규화 된 원격 주소가 필요하다는 점을 제외하고는 어떠한 공격도 막을 수 없습니다. 이러한 경고는 해당 PTR 레코드가 의미가있는 경우에만 공격자를 추적하는 데 도움이 될 수 있습니다.

편집 : Andrey Voitenkov의 의견에 따라 업데이트되었습니다 .


따라서 DNS 서버에있는 것을 기반으로 누가 연결이 허용되는지에 대한 필터입니까?
user368507

2
왜 액세스가 불가능합니까? DNS A / PTR 레코드가 일치하지 않으면 sshd가 경고를 생성합니다. 문제 해결시 로그온 순서가 느려집니다.
안드레이 Voitenkov

공격자가 from=해당 승인 된 키 (사용 된 경우) 이전에 필드 의 값을 스푸핑 할 수없는 경우 인증 된 키가 손상된 경우 액세스를 방지 할 수 있습니다 .
Alecz

7

certified_keys 파일에서 FROM 옵션을 사용하고 IP만이 아닌 이름으로 필터링하려는 경우에 필요합니다.

authorized_keys 파일의 행에있는 FROM 옵션을 사용하면 특정 키를 사용할 수있는 호스트를 제한 할 수 있습니다.
이를 통해 머신의 복제본이 일반적으로 의도하지 않은 방식으로 원래 시스템을 남용하지 않고 서로 액세스 할 수있는 여러 서버를 관리 할 수 ​​있습니다 (남은 크론 탭, 휴먼 오류).


3

CentOS 7 (7.1.1503)에 Red Hat Enterprise Linux 7에 추가하고 싶습니다 . 기본 설정 인 for 로 로그인 할 수 없었yes 습니다 UseDNS. 주석 처리를 해제하고로 설정 한 후 no로그인 할 수있었습니다. 따라서 DNS가 제대로 작동하지 않으면 서비스가 거부 될 수 있습니다. CentOS 6에서는 기본 설정 인 것처럼 보이 no므로 ssh작동하는 DNS가 없어도됩니다!

나는 실험이 차이가 나는 경우를 대비하여 실제 기계가 아닌 LXC 컨테이너에서 실험하고 있다고 덧붙이고 싶습니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.