줄을 추가했어요
auth required pam_tally2.so deny=3 unlock_time=180
내 /etc/pam.d/login
파일에 저장하면 tty에서는 괜찮고 멋집니다. 3번의 시도 후에는 testuser
일시 중지됩니다.
그러나 동일한 줄은 /etc/pam.d/sshd
아무런 효과가 없습니다.
xieerqi:$ ssh testuser@localhost
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
xieerqi:$ ssh testuser@localhost
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
3번의 시도 실패 후에도 볼 수 있듯이 사용자는 여전히 비밀번호 입력을 시도할 수 있습니다.
ssh
3회 경고 후 사용자를 차단하려면 어떻게 해야 하나요 ?
답변1
SSH의 경우 pam과 다른 것을 사용하는 것이 더 나을 수 있습니다. iptables와 파일을 통해 만들어진 훌륭한 솔루션이 있습니다 sshd_config
. 이는 원하는 것을 얻을 수 있는 한 가지 방법일 뿐이며 문서에 따르면 일반적으로 비밀번호 인증 방법 확인 대신 SSH 키를 사용하는 것이 좋습니다.https://help.ubuntu.com/community/SSH/OpenSSH/구성.
/etc/ssh/sshd_config
줄 추가를 변경해야합니다MaxAuthTries 1
다음 방화벽 규칙을 만들어야 합니다.
새 체인 생성
iptables -N SSHATTACK iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7 iptables -A SSHATACK -j DROP
120초 내에 3개 이상의 연결을 설정하는 각 IP 주소를 120초 동안 차단합니다. 네 번째 연결 시도의 경우 요청은 가능한 SSH 공격을 기록하고 최종적으로 요청을 삭제하는 SSHATTACK 체인에 위임됩니다.
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
파일에 대한 시도를 확인할 수 있습니다
/var/log/syslog
.
답변2
일반적인 관행은 fail2ban
pam 수준 대신 네트워크 수준에서 작동하고 sshd
.
어쨌든, 인증 실패 후 올바른 비밀번호를 입력해 보셨나요? 받아들여지나요? 무엇이 로그인되어 있나요 /var/log/auth.log
?
sshd
서버는 사용자가 존재하지 않거나 일시 중단되거나 잠긴 경우에도 항상 모든 pam 스택을 실행하여 사이드 채널(예: 기존 사용자 식별)을 사용하는 공격을 제거합니다. 이것이 당신이 겪고있는 문제입니다. 작동할 수 있지만 ssh
보안 때문에 다시 볼 수는 없습니다 .
답변3
줄 순서를 변경해 보세요. PAM이 1개씩 실행합니다.
예:
/etc/pam.d/common-auth
auth required pam_tally2.so deny=3 onerr=fail unlock_time=300 debug
auth [success=1 default=ignore] pam_unix.so nullok
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
나를 위해 일합니다.