MaxAuthTries
내 Linux 컴퓨터에서는 1로 설정했습니다 . 그런 다음 ssh
로컬 네트워크의 다른 컴퓨터에서 내 Linux 컴퓨터에 접속하려고 시도했지만 " Too many authentication failures
" 오류로 인해 실패했습니다.
이전에 설정에 몇 가지 실패가 있었지만 여전히 총계에 포함되기 때문이라고 가정합니다.
페이지 man
내용은 다음과 같습니다.
MaxAuthTries
연결당 허용되는 최대 인증 시도 횟수를 지정합니다. 실패 횟수가 이 값의 절반에 도달하면 더 많은 실패가 기록됩니다. 기본값은 6입니다.
연결로 간주되는 것은 무엇입니까? 이는 MaxAuthTries
특정 IP 주소에서만 정보를 얻을 수 있다는 뜻인가요 ? 이는 TCP 연결을 의미합니까? 연결을 끊고 새 연결을 만들고 다시 시도하려면 어떻게 해야 합니까 ssh
?
답변1
sshd
SSH의 경우 TCP 포트(일반적으로 포트 22) 에 연결됩니다 . 추가 인증 시도 수락을 중지 하면 sshd
연결이 종료되고 연결이 완료됩니다.
SSH 프로토콜에서는 사용자가 인증을 시도하기 전에 암호화 및 기타 프로토콜 옵션 협상, 세션 키 설정, 호스트 키 교환이 필요합니다. 따라서 각각의 새로운 연결에는 몇 가지 중요한 작업이 필요합니다. 여러 소스에서 시도되는 수많은 SSH 연결 시도는 확실히 서버를 DoS하는 데 사용됩니다.
인증 시도는 sshd
현재 구성에서 활성화된 인증 방법에 대한 시도입니다. 예를 들어:
- 클라이언트가 인증을 위해 SSH 키를 제공하는 경우 제공된 각 키는 시도 횟수로 계산됩니다.
- Kerberos/GSSAPI 인증 방법이 활성화된 경우 해당 방법을 사용하여 클라이언트를 인증할 수 있는지 확인하는 것은 시도로 계산됩니다.
- 비밀번호 확인 프롬프트에 입력된 각 비밀번호는 분명히 하나로 계산됩니다.
처음 두 가지 경우 상황이 발생할 수 있습니다. 이를 MaxAuthTries
1로 설정하고 Kerberos/GSSAPI 인증을 활성화하면 비밀번호 인증을 시도하기 전에 한 번의 시도가 소진될 수 있습니다. 마찬가지로, SSH 클라이언트에 사용 가능한 인증 키가 있지만 대상 사용자의 대상 시스템에 공개 키를 추가하지 않은 경우 ~/.ssh/authorized_keys
공개 키 인증 시도로 인해 단일 시도가 소진되고 비밀번호 확인도 시도할 수 없게 됩니다.
pam_unix
일반적으로 비밀번호 인증을 처리하는 PAM 라이브러리인 는 기본적으로 인증 시도 실패 후 2초의 지연을 적용합니다.
주요 위협이 암호 추측 웜과 인터넷의 다른 감염된 시스템에 있는 봇이라면 MaxAuthTries를 줄이는 것은 아마도 나쁜 조치일 것입니다. 봇은 지치지 않기 때문에 항상 다시 연결하고 다시 시도합니다. 시도할 때마다 SSH 프로토콜 협상을 위해 일부 CPU 용량을 확장해야 합니다. 먼저 봇이 있는지 확인해야 합니다.성공하지 못할 것이다, 둘째, 로봇은최대한 많은 시간을 낭비하다기존 연결에서가장 저렴한 비용. 하나의 연결에서 여러 인증 시도를 허용하지만 응답이...아주...천천히...이렇게 됩니다.
이는 비밀번호 확인이 완전히 비활성화된 경우에도 클라이언트에 비밀번호를 묻는 메시지가 표시되는 이유이기도 합니다 sshd
. 프롬프트는 완전히 거짓이며 클라이언트가 어떤 비밀번호를 입력하든 거부됩니다. 그러나 고객은 이를 확신할 수 없습니다.
물론 연결에 대한 인증 시도를 너무 많이 허용하고 봇 프로그래머가 이러한 "타르핏 방어"의 효과를 제한하기 위해 시간 초과를 구현한 경우 봇이 결국 연결을 종료할 수 있습니다.
답변2
광범위하게 말하면 연결은 특정 사용자로 연결하려는 모든 시도로 정의됩니다.
pam_tally
pam_tally2
사용 중인 배포판에 따라 또는 명령이 여기에서 유용할 수 있습니다. 다음 명령은 특정 사용자가 겪은 실패 횟수를 표시합니다.
pam_tally --user=username
특정 사용자에 대해 재설정하려면:
pam_tally --reset --user=username
모든 사용자의 경우:
pam_tally --reset
재설정되었는지 확인하려면:
pam_tally --user=username
pam_tally
옵션 없이 이 명령을 실행하면 pam_tally2
시도에 실패했거나 잠긴 모든 사용자가 표시됩니다. pam_tally2
이런 일이 발생하면 반드시 로 변경하세요.
답변3
이는 수정구슬 응시와 약간 비슷하지만 연결은 그대로이며 연결 다중화 및 지연( , )과 관련하여 클라이언트에서 ControlMaster
옵션을 명시적으로 설정하지 않는 한 즉시 종료되어야 합니다.ControlPersist
내 생각에 일어나고 있는 일은(그리고 ssh -v
확인하는 데 도움이 되도록 "개인 키 시도"를 찾아보세요) 이 컴퓨터에 대해 암호 기반 인증을 사용하려는 것입니다. 그러나 클라이언트에는 비밀번호 없는 인증을 위한 키 쌍이 있을 수 있습니다 ~/.ssh
. 표준 구성에서는 비밀번호보다 키를 우선시하므로 사용자가 ssh
키를 제공하면 서버가 이를 좋아하지 않으며 시도가 실패하게 됩니다. (테마의 변형: 여러 개의 키 쌍이 설정되어 있고 그 중 하나만 서버에 승인될 수 있습니다.) 다음을 -oPreferredAuthentications=keyboard-interactive,password
제공하기 위해 인증 메커니즘을 재정의할 수 있습니다. 클라이언트가 제안을 중지하면 키를 기반으로 할 수 있습니다. 그러면 로그인하여 서버에서 더 높은 값을 다시 설정할 수 있도록 비밀번호를 묻는 메시지가 표시됩니다.