it-swarm-ko.tech

잘못된 비밀번호를 입력 한 후 왜 큰 지연이 발생합니까?

암호에 대해 이상한 점이 있습니다. 예를 들어, 로그인 중에 잘못된 암호를 입력하면 시스템에서 알려주기까지 몇 초가 지연됩니다. 잘못된 비밀번호로 Sudo을 시도 할 때 쉘이 "죄송합니다. 다시 시도하십시오"라고 말하기 전에 기다려야합니다.

잘못된 비밀번호를 "인식"하는 데 왜 그렇게 오래 걸립니까? 이것은 내가 사용하는 여러 배포판 (그리고 심지어 OSX)에서도 보였으므로 배포 관련 내용이 아니라고 생각합니다.

93
phunehehe

이것은 보안상의 문제입니다. 실제로 그것을 깨닫는 데 오랜 시간이 걸리지 않습니다. 2 가지 취약점으로 해결 :

  1. 이것은 로그인 시도를 스로틀합니다. 이는 누군가가 시스템을 부수려고 시도하는 것만 큼 빨리 파운드를 낼 수 없다는 것을 의미합니다 (1M은 1 초 시도? 모르겠습니다).

  2. 자격 증명이 잘못되었다고 확인한 즉시 자격 증명의 일부가 올바른지 추측하기 위해 자격 증명을 무효화하는 데 걸리는 시간을 사용하여 추측 시간을 크게 줄일 수 있습니다.

이 두 가지를 시스템이 수행하는 데 특정 시간이 걸리는 것을 막기 위해 PAM으로 대기 시간을 구성 할 수 있다고 생각합니다 ( Michaels 답변 참조 ).

보안 엔지니어링 ( 2ed, Amazon | 1ed, free )은 이러한 문제에 대한 훨씬 더 나은 설명을 제공합니다.

94
xenoterracide

이것은 무차별 강제를 시도하고 제한하려는 의도적 인 것입니다. 일반적으로 FAIL_DELAY 구성 항목 /etc/login.defs 및 값 변경 (광산은 3 기본적으로 _ 초), 해당 파일의 주석이 PAM에서 적어도 2 무슨 일이 있어도 두 번째 지연

42
Michael Mrozek

현대 리눅스 시스템에서 그 이유는 pam_unix.so가 그러한 지연을 부과하기 때문입니다. 이전에보고 된대로 FAIL_DELAY에서 /etc/login.defs를 변경하여 2 초로 구성 할 수 있습니다. 지연을 더 줄이려면 pam_unix.so에 "nodelay"옵션을 제공해야합니다. 예를 들어, 내 시스템에서 /etc/pam.d/Sudo에서 시작하는 포함을 추적하면 /etc/pam.d/system-auth의 다음 행을 편집해야합니다.

auth      required  pam_unix.so     try_first_pass nullok

그리고 이것을 다음과 같이 변경하십시오 :

auth      required  pam_unix.so     try_first_pass nullok nodelay

불행히도, 내 리눅스 배포판 (Arch)이 물건을 구성하는 방식은 sshd가 사용하는 system-auth 파일과 동일한 system-remote-login 파일이 포함됩니다.

Sudo에서 지연을 제거하는 것이 안전하지만 로컬 사용자 만 사용하고 로컬 공격자가 우회 할 수 있기 때문에 원격 로그인에 대한 지연을 제거하고 싶지 않을 수 있습니다. 물론 공유 시스템 인증 파일을 포함하지 않는 사용자 정의 Sudo를 작성하여 문제를 해결할 수 있습니다.

개인적으로, Sudo의 지연 (SIGINT 무시)은 큰 실수라고 생각합니다. 암호를 잘못 입력했다는 것을 알고있는 사용자는 프로세스를 종료하고 좌절 할 수 없습니다. 물론 Sudo가 SIGTSTP를 포착하지 않기 때문에 Ctrl-Z를 사용하여 Sudo를 중지 할 수 있으며 중지 한 후 kill -9 (SIGKILL)로 죽일 수 있습니다. 그냥 짜증나. 즉, 자동 공격은 의사 터미널의 sudos를 매우 높은 속도로 발사 할 수 있습니다. 그러나 지연은 합법적 인 사용자를 좌절시키고 Sudo를 다시 사용하지 않기 위해 루트 쉘을 종료하지 않고 일시 중단하도록 권장합니다.

12
user3188445