암호에 대해 이상한 점이 있습니다. 예를 들어, 로그인 중에 잘못된 비밀번호를 입력하면 시스템에서 알려주기까지 몇 초 지연 될 수 있습니다. sudo
잘못된 암호 를 사용 하려고 할 때 쉘에 "죄송합니다. 다시 시도하십시오"라고 말하기 전에 기다려야합니다.
잘못된 비밀번호를 "인식"하는 데 왜 그렇게 오래 걸립니까? 이것은 내가 사용하는 여러 배포판 (그리고 심지어 OSX)에서도 보였으므로 배포 관련 내용이 아니라고 생각합니다.
암호에 대해 이상한 점이 있습니다. 예를 들어, 로그인 중에 잘못된 비밀번호를 입력하면 시스템에서 알려주기까지 몇 초 지연 될 수 있습니다. sudo
잘못된 암호 를 사용 하려고 할 때 쉘에 "죄송합니다. 다시 시도하십시오"라고 말하기 전에 기다려야합니다.
잘못된 비밀번호를 "인식"하는 데 왜 그렇게 오래 걸립니까? 이것은 내가 사용하는 여러 배포판 (그리고 심지어 OSX)에서도 보였으므로 배포 관련 내용이 아니라고 생각합니다.
답변:
이것은 보안상의 문제이며 실제로 그것을 깨닫는 데 오랜 시간이 걸리지 않습니다. 2 가지 취약점으로 해결 :
이것은 로그인 시도를 스로틀합니다. 이는 누군가가 시스템을 부수려고 시도하는 것만 큼 빨리 파운드를 낼 수 없다는 것을 의미합니다.
신임 정보가 올바르지 않은 것으로 확인 된 즉시 신임 정보를 무효화하는 데 걸리는 시간을 사용하여 신임 정보의 일부가 올바른지 추측하여 추측 시간을 크게 줄일 수 있습니다.
이 두 가지를 시스템이 수행하는 데 특정 시간이 걸리는 것을 막기 위해 PAM으로 대기 시간을 구성 할 수 있다고 생각합니다 ( Michaels 답변 참조 ).
보안 공학 ( 2ed , amazon | 1ed, free )은 이러한 문제에 대해 훨씬 더 잘 설명합니다.
이것은 무차별 강제를 시도하고 제한하려는 의도적 인 것입니다. 일반적으로 FAIL_DELAY
구성 항목 을 찾아서 /etc/login.defs
값을 변경하여 값을 수정할 수 있습니다 ( 3
기본적으로 광산은 초입니다). 파일의 주석은 PAM이 2
무엇이든 상관없이 적어도 두 번째 지연을 강제하는 것처럼 들립니다.
/etc/pam.d/login
. 찾으십시오pam_faildelay.so delay=
현대 리눅스 시스템에서 그 이유는 pam_unix.so가 그러한 지연을 부과하기 때문입니다. 이미 보도 된 바와 같이,이 변화에 의해 이초까지 구성 할 수 있습니다 FAIL_DELAY
에 /etc/login.defs
. 지연을 더 줄이려면 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
불행히도 내 리눅스 배포판 (아치)이 구성 하는 방식은 sshd가 사용 하는 매우 동일한 system-auth
파일이 포함됩니다 system-remote-login
.
sudo에 대한 지연을 제거하는 것이 안전하지만 로컬 사용자 만 사용하고 로컬 공격자가 우회 할 수 있기 때문에 원격 로그인에 대한 지연을 제거하고 싶지 않을 것입니다. 물론 공유 시스템 인증 파일 만 포함하지 않은 사용자 정의 sudo를 작성하여 문제를 해결할 수 있습니다.
개인적으로 sudo 지연 (SIGINT 무시)은 큰 실수라고 생각합니다. 암호를 잘못 입력했다는 것을 알고있는 사용자는 프로세스를 종료하고 좌절 할 수 없습니다. 물론 sudo는 SIGTSTP를 포착하지 않기 때문에 Ctrl-Z를 사용하여 sudo를 중지 할 수 있으며, 중지 한 후에 kill -9 (SIGKILL)로 죽일 수 있습니다. 그냥 짜증나. 즉, 자동 공격은 의사 터미널의 sudos를 초고속으로 발사 할 수 있음을 의미합니다. 그러나 지연은 합법적 인 사용자를 좌절시키고 다시 sudo를 피하기 위해 루트 쉘을 종료하지 않고 일시 중단하도록 권장합니다.
nodelay
설정하면 대기 시간이 0으로 설정되고 FAIL_DELAY가 무시됩니다.