GNU/Linux 배포판에 로그인하는 데 시간이 너무 오래 걸림

GNU/Linux 배포판에 로그인하는 데 시간이 너무 오래 걸림

그래서,

내 사용자 이름과 비밀번호(tty에서)를 사용하여 로그인하려고 시도하고 잘못된 비밀번호를 입력하면 기다려야 합니다.5 초시스템에서 비밀번호가 틀렸다고 알려줍니다.

인증 절차가 왜 이렇게 오래 걸리나요?

GNU/Linux 배포판: Archlinux.

답변1

약간의 역사적 관점을 추가하자면, 잘못된 비밀번호를 입력한 후 잠을 잔다는 생각은 PAM 기반 시스템에만 존재하는 것이 아닙니다. 아주 오래됐어요. 예를 들어4.4BSD 로그인 소스코드다음과 같은 맛있는 조각을 찾을 수 있습니다.

/* we allow 10 tries, but after 3 we start backing off */
if (++cnt > 3) {
        if (cnt >= 10) {
                badlogin(username);
                sleepexit(1);
        }
        sleep((u_int)((cnt - 3) * 5));
}

따라서 처음 3개의 실패는 무료이고 다음 7개의 실패는 지연(5초, 10초, 15초...)을 추가하고 10회 후에는 sleepexit(1)5초 지연을 수행한 다음 실행합니다 exit(1).

절전 모드는 콘솔에 암호를 입력할 때 귀찮은 일이지만 프로세스를 자동화할 수 있는 원격 사용자가 입력을 하는 경우에는 중요합니다.

다음 10개의 sleepexit실패에 대해서는 특별한 설명이 필요합니다. 로그아웃한 후에 logingetty다른 로그인 프롬프트를 인쇄하고 루프를 다시 시작합니다. 그렇다면 잠만 자지 말고 잠을 자고 그만둘 이유가 무엇입니까? 이 기능이 도입되었을 때는 전화 접속을 통한 로그인이 일반적이었기 때문입니다. (1995년 이전에 모뎀을 사용해 본 적이 없는 사람이라면 주목하세요.로그인전화 접속 PPP나 기타 패킷 기반 프로토콜이 아닌 전화 접속을 통해. 터미널 에뮬레이터에서 전화를 걸고 로그인 프롬프트를 받을 수 있습니다. )

전화 접속 세계에서는 누구나 자신의 번호로 전화를 걸어 비밀번호를 입력할 수 있습니다. 따라서 비밀번호 login를 몇 번 잘못 입력하면 프로세스가 종료되어 모뎀 연결이 종료되고 비밀번호를 다시 시도하기 전에 다시 전화를 걸어야 합니다. 오늘날에도 동일한 원칙이 적용되지만 ssh(구성 옵션 MaxAuthTries) 모뎀에 전화를 거는 것이 TCP 핸드셰이크보다 훨씬 느리기 때문에 과거에는 더 잘 작동했습니다.

답변2

이것 좀 봐StackOverflow에 대한 답변인용됨Linux-PAM 모듈 작성자 가이드:

이 파일의 지침에 따르면 여러 모듈 중 하나가 실패하여 pam_...() 호출이 오류를 반환할 수 있습니다. 신청이 계속되기 전에 일시 중지가 있기를 바랍니다.이러한 지연의 주된 이유는 보안입니다. 지연은 주로 무차별 사전 공격을 방지하기 위한 것이지만 타이밍(은밀한 채널) 공격을 방지하는 데도 도움이 됩니다.

pam_fail_delay() 함수는 애플리케이션이나 모듈이 micro_sec 마이크로초 단위의 최소 지연을 제안할 수 있는 메커니즘을 제공합니다. Linux-PAM은 이 기능을 사용하여 요청된 최대 시간을 추적합니다. pam_authenticate()가 실패하면 실패한 애플리케이션 반환은 최대값에 대해 무작위로 분포된 시간(최대 25%)만큼 지연됩니다.

성공 또는 실패에 관계없이 Linux-PAM이 애플리케이션에 제어권을 반환하면 지연 시간이 기본값 0으로 재설정됩니다.

답변3

다른 사람들이 대답했듯이 PAM이 원인일 가능성이 높습니다. 실제로 비밀번호를 확인하는 데는 짧은 시간만 걸리며, 나머지는 무차별 대입 공격을 방지하기 위해 설계된 지연 시간입니다. 데비안에는 다음 줄이 있습니다 /etc/pam.d/login.

# Enforce a minimal delay in case of failure (in microseconds).
# (Replaces the `FAIL_DELAY' setting from login.defs)
# Note that other modules may require another minimal delay. (for example,
# to disable any delay, you should add the nodelay option to pam_unix)
auth       optional   pam_faildelay.so  delay=3000000

5초의 딜레이가 너무 길다면 (물론 급하다면 이번에는 기다려야 하겠지만)느끼다너무 긴 것처럼) 시스템에서 해당 파일을 찾아 언제든지 시간을 단축할 수 있습니다. 위 코드 조각의 설명에 표시된 것처럼 PAM이 없는 경우 아래에서 /etc/login.defs값 을 찾을 수 있습니다 FAIL_DELAY.

답변4

저는 Archlinux를 직접 사용하지 않아서 잘 모르겠지만, 무차별적인 비밀번호 크래킹을 방지하기 위한 메커니즘처럼 들립니다.

관련 정보