IP당 분당 SSH 로그인 시도 횟수를 제한하는 방법은 무엇입니까?
로그인 실패 후 5초 이내에 로그인 시도를 비활성화하고 싶습니다. 가능합니까? Fail2ban처럼 로그를 구문 분석한 후 사용자를 금지하는 것에 대해 말하는 것이 아닙니다.
답변1
질문 1
이는 모듈을 통해 수행할 수 있습니다 hashlimit
.
iptables -A INPUT -p tcp --dport 22 -m hashlimit \
--hashlimit-mode srcip --hashlimit-above 3/minute -j DROP
질문 2
Netfilter는 실패한 로그인 연결만 볼 수 있습니다. Fail2ban과 같이 두 수준 모두에서 작동하는 도구가 필요합니다. 차단된 IP 체인을 생성하고 로그인이 실패할 때마다 다음과 같은 스크립트를 실행할 수 있습니다.
iptables -A blocked_ips -s $evil_ip -j DROP
sleep 5
iptables -D blocked_ips -s $evil_ip -j DROP
답변2
iptable 보기
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 5 --hitcount 2 -j DROP
5초마다 IP당 1개의 새로운 연결만 허용됩니다.
답변3
GNU/Linux 시스템에서 인증을 담당하는 구성 요소는 PAM(플러그형 인증 시스템)입니다.
모듈을 추가하여 구성할 수 있습니다. 귀하의 경우 흥미로운 모듈은 pam_tally
로그인 시도 횟수를 제한하고 사용자를 금지하는 데 사용됩니다.
구성 파일 중 하나 /etc/pam.d/
에 다음 줄을 추가하는 경우:
auth required pam_tally.so deny=1 unlock_time=5 per_user
로그인에 실패한 사용자가 다음 5초 이내에 다시 시도하는 것을 방지할 수 있습니다. 따라서 분당 연결 시도 횟수는 12회로 제한됩니다.
인용하다:
답변4
/etc/ssh/sshd_config 파일에는 도움이 될 것이라고 생각하는 지시어가 있습니다.
MaxAuthTries 6
매뉴얼 페이지의 MaxAuthTries 정의는 다음과 같습니다.
MaxAuthTries - 연결당 허용되는 최대 인증 시도 횟수를 지정합니다. 실패 횟수가 이 값의 절반에 도달하면 더 많은 실패가 기록됩니다. 기본값은 6입니다.