답변:
구성 가능한 시간 동안 몇 번의 시도 실패 후 IP를 잠그는 fail2ban 을 사용 합니다.
암호 강도 테스트 ( john (John the Ripper)를 사용)와 결합하여 무차별 대입 공격이 성공하지 못하도록합니다.
TARPIT
xtables-addons에서 불쾌감을 느끼면 TCP 트래픽을 대상으로 보내는 iptables 체인과 결합 할 수 있습니다 .
당신이 할 수있는 작은 일은 DenyHosts와 같은 것을 사용하는 것입니다.
http://denyhosts.sourceforge.net/
내장 된 hosts.allow / hosts.deny를 사용하여 SSH 남용자를 차단합니다.
이러한 공격을 피하는 가장 쉬운 방법 중 하나는 sshd가 수신하는 포트를 변경하는 것입니다
Chris가 지적했듯이 암호 대신 암호화 키를 사용하십시오.
그것에 추가하십시오 :
플로팅 퍼블릭 IP를 사용하는 사람 또는 위치는 몇 명이나 공개 ssh 연결에 실제로 액세스해야합니까?
유지 관리하는 공개 ssh 호스트 수와 일반 연결 기준을 좁힐 수 있는지 여부에 따라 몇 가지 외부 호스트에 대한 액세스를 제한하는보다 간단하고 유지 관리 가능한 구성 일 수 있습니다.
이것이 효과가 있다면 관리 오버 헤드를 단순화 할 수 있습니다.
다른 좋은 제안 이외에도 정말 쉬운 방법은 속도 제한 수신 연결입니다. IP 당 분당 3 개의 연결로 제한 :
iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
sshd_config의 "AllowUsers"옵션을 사용하면 소수의 사용자 만 로그인 할 수 있습니다. 사용자 이름과 비밀번호가 정확하더라도 다른 모든 사용자는 거부됩니다.
특정 호스트 에서 로그인하도록 사용자를 제한 할 수도 있습니다 .
예를 들어
AllowUsers user1 user2@host.example.com
이렇게하면 검색 공간이 줄어들고 실수로 배치되거나 활성화 된 기존 사용자를 피할 수 있습니다 (물론 비활성화해야하지만 SSH 기반 항목에 사용되지 않도록하는 쉬운 방법 임).
이것은 무차별 대입 공격을 완전히 막을 수는 없지만 위험을 줄이는 데 도움이됩니다.
PF와 같은 것을 사용하십시오 :
<ssh-brute> 테이블
ssh_brute 레이블에서 빠른 로그의 블록
을 $ ext_if proto tcp에서 ($ ext_if) 포트 ssh 변조 상태 \
(max-src-conn-rate 3/10, 과부하 플러시 글로벌)로 전달합니다.
상황은 중요하지만 다음과 같이 추천합니다.
또한에 sherbang의 속도 제한 제안 , 지연의 길이는 중요하다. 3 번의 로그인 시도 그룹 간 지연 시간을 2 분에서 20 분으로 늘림으로써, 한 번의 내 컴퓨터에서 2 주간의 기간을 44 번의 시도에서 3 번으로 비교하여 3 번 이상의 로그인 시도를 시도한 여러 IP 주소의 수가 줄었습니다. 이 세 주소 중 어느 것도 11 시간 이상 계속 시도하지 않았습니다.
매우 일화 적이지만 auth.log는 훨씬 더 읽기 쉽습니다.
난 그냥 신경 쓰지 않아 항구에서 벨트를 떼어 놓으면 열쇠를 무차별 적으로 다루지 않을 것입니다.