"n"회 SSH 로그인 실패 후 IP 주소를 일시적으로 금지하는 방법은 무엇입니까?

"n"회 SSH 로그인 실패 후 IP 주소를 일시적으로 금지하는 방법은 무엇입니까?

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입니다.

관련 정보