ssh에 대한 무차별 대입 공격을 방지합니까?


49

ssh 포트에 대한 무차별 대입 공격을 방지하기 위해 어떤 도구 또는 기술을 사용합니까? 보안 로그에서 ssh를 통해 다양한 사용자로 로그인하려는 수백만 번의 시도가 있음을 알았습니다.

이것은 FreeBSD 상자에 있지만 어디에서나 적용 할 수 있다고 생각합니다.

답변:


25

Rainer Wichmann의 주제 에 대한 좋은 소식이 있습니다.

이 작업을 수행하는 방법에 대한 장단점을 설명합니다.

  • 강력한 비밀번호
  • RSA 인증
  • 'iptables'를 사용하여 공격 차단
  • sshd 로그를 사용하여 공격 차단
  • tcp_wrappers를 사용하여 공격 차단
  • 포트 노킹

39

구성 가능한 시간 동안 몇 번의 시도 실패 후 IP를 잠그는 fail2ban 을 사용 합니다.

암호 강도 테스트 ( john (John the Ripper)를 사용)와 결합하여 무차별 대입 공격이 성공하지 못하도록합니다.


4
Fail2ban이 우수합니다. / var / log / maillog를 모니터링하도록 확장하고 내 메일 서버에 닿지 않는 영구 스팸 발송자를 차단하는 것이 간단했습니다
Dave Cheney

Fail2ban은 TARPITxtables-addons에서 불쾌감을 느끼면 TCP 트래픽을 대상으로 보내는 iptables 체인과 결합 할 수 있습니다 .
Tobu



15

이러한 공격을 피하는 가장 쉬운 방법 중 하나는 sshd가 수신하는 포트를 변경하는 것입니다


1
물론 시스템을 견딜 수 있다면.
C. Ross

13
매번 효과적인 모호함을 통한 보안.
Chris Ballance

1
포트를 많이 변경하는 것은 마음에 들지 않지만 대부분의 방화벽 (내 방화벽 이외의)은 일반적인 방화벽 (80,22, 443 등) 이외의 모든 포트를 잠그는 경향이 있다는 것을 알게되었습니다. 방화벽 뒤에 있으면 비표준 포트의 홈 서버로 이동할 수 없습니다. 나를 위해 그것은 갈 길이 없다.
슬픔

그런 다음 @grieve가 방화벽을 변경하여 해당 포트를 내 보냅니다.
Rory

@Roy 내가 소유 한 방화벽 이외의 방화벽에 대해 이야기하고 있습니다. 예를 들어 Starbucks에서 내 홈 컴퓨터로 ssh를 보내려면 방화벽이 나가는 포트를 차단합니다. 나는 그것을 바꿀 수 없습니다. 방금 Starbucks를 예로 사용했습니다. 실제로 포트가 어떤 포트인지 차단하지는 않습니다.
슬픔

12

Chris가 지적했듯이 암호 대신 암호화 키를 사용하십시오.

그것에 추가하십시오 :

  • 가능하면 화이트리스트를 사용하십시오.

플로팅 퍼블릭 IP를 사용하는 사람 또는 위치는 몇 명이나 공개 ssh 연결에 실제로 액세스해야합니까?

유지 관리하는 공개 ssh 호스트 수와 일반 연결 기준을 좁힐 수 있는지 여부에 따라 몇 가지 외부 호스트에 대한 액세스를 제한하는보다 간단하고 유지 관리 가능한 구성 일 수 있습니다.

이것이 효과가 있다면 관리 오버 헤드를 단순화 할 수 있습니다.


2
블랙리스트를 작성하지 않으려면 화이트리스트를 작성하는 것이 매우 중요합니다.
Ryaner

2
사전 화이트리스트에 +1.
Chris Ballance 15.37에

3
최고의 답변을 얻으려면 +1하십시오. 이 두 가지가 유일한 합리적인 단계이며 실제로 매우 효과적입니다. 어느 쪽이든 가치가 있으며 둘 다 더 그렇습니다. 모호함을 통해 보안을 옹호하는 다른 답변에 부!
dwc

11

다른 좋은 제안 이외에도 정말 쉬운 방법은 속도 제한 수신 연결입니다. 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

HTTP 오해가 2로 설정되었지만 많은 주류 브라우저가 한 번에 4-6 개의 연결을 연결합니다.
Joshua Enfield

1
예, 포트 80의 속도를 제한하려고하면 문제가됩니다. 웹 브라우저를 사용하여 ssh에 연결하지 않고 ssh 세션은 상태가 유지되고 수명이 짧은 상태 비 저장 세션이 아닌 수명이 긴 세션입니다. http. 그런 ssh 세션을 병렬화하는 것은 의미가 없습니다. ssh를 틈새로 사용하지 않는다고 말하는 것은 아니지만 드문 일입니다.
sherbang

이 솔루션은 나와 같이 ssh를 통해 Subversion을 제공하는 경우 좋지 않습니다. 단일 SVN 쿼리는 연속적으로 많은 수의 연결을 만들 수 있습니다. 해당 서비스를 제공하는 경우 다른 포트에서 두 번째 sshd 서비스를 사용하거나 알려진 IP를 허용 목록에 추가 할 수 있습니다. 정당한 사용자를 처벌하지 않고 fail2ban 또는 sshdfilter를 사용하여 처음으로 명백한 공격을 잡을 생각입니다.
paddy

이 옵션도 알아두면 좋을 것 같습니다.
ZEE

6

sshd_config의 "AllowUsers"옵션을 사용하면 소수의 사용자 만 로그인 할 수 있습니다. 사용자 이름과 비밀번호가 정확하더라도 다른 모든 사용자는 거부됩니다.

특정 호스트 에서 로그인하도록 사용자를 제한 할 수도 있습니다 .

예를 들어

AllowUsers user1 user2@host.example.com

이렇게하면 검색 공간이 줄어들고 실수로 배치되거나 활성화 된 기존 사용자를 피할 수 있습니다 (물론 비활성화해야하지만 SSH 기반 항목에 사용되지 않도록하는 쉬운 방법 임).

이것은 무차별 대입 공격을 완전히 막을 수는 없지만 위험을 줄이는 데 도움이됩니다.


3

PF와 같은 것을 사용하십시오 :

<ssh-brute> 테이블
ssh_brute 레이블에서 빠른 로그의 블록
을 $ ext_if proto tcp에서 ($ ext_if) 포트 ssh 변조 상태 \
(max-src-conn-rate 3/10, 과부하 플러시 글로벌)로 전달합니다.


2

포트 노킹 은 이런 종류의 일을 막는 확실한 방법입니다. 약간 성 가시고 때로는 성가 시지만 문제가 사라집니다.


나는 이것을 시도했고 사용자는 성가신 것을 발견했다. 만약 한두 사람이라면 이것이 좋은 선택이 될 수 있고 무차별 대입 공격을 거의 제거 할 것입니다.
Brent

2

상황은 중요하지만 다음과 같이 추천합니다.

  • FreeBSD를 사용하고 있으므로 PF 방화벽을 실행하고 견고한 연결 속도 제한 기능을 사용하십시오. 이것은 당신이 무차별 강제로 그들이 자주 연결하는 경우 블랙리스트에 보낼 수 있습니다
  • 외부에서이 상자에 액세스해야하는 경우 PF rdr 규칙을 사용하여 포트 22 로의 트래픽을 허용하지 않고 일부 포트를 포트로 리디렉션하십시오. 즉, 22 대신 포트 9122에 연결해야합니다. 불분명하지만 두드리는 사람을 멀리합니다.
  • 키 기반 인증으로 만 이동하여 사전 공격을 쓸모 없게 만드는 것을 고려하십시오.

2

또한에 sherbang의 속도 제한 제안 , 지연의 길이는 중요하다. 3 번의 로그인 시도 그룹 간 지연 시간을 2 분에서 20 분으로 늘림으로써, 한 번의 내 컴퓨터에서 2 주간의 기간을 44 번의 시도에서 3 번으로 비교하여 3 번 이상의 로그인 시도를 시도한 여러 IP 주소의 수가 줄었습니다. 이 세 주소 중 어느 것도 11 시간 이상 계속 시도하지 않았습니다.

매우 일화 적이지만 auth.log는 훨씬 더 읽기 쉽습니다.


1

난 그냥 신경 쓰지 않아 항구에서 벨트를 떼어 놓으면 열쇠를 무차별 적으로 다루지 않을 것입니다.


-1 DoS 공격에 대해 들어 본 적이 있습니까?
Chris Ballance

8
SSH는 무차별 대입 공격에 취약한 유일한 서비스이기 때문입니다. 인터넷에 포트가 열려 있으면 컴퓨터를 망각시키는 데 사용할 수 있습니다. HTTP 서버를 이상한 포트에 배치하고 포트 노킹 뒤에 "DoS 공격을 피"하기 위해 ...
womble

1

OSSEC을 설치하십시오. 반복되는 로그인을 모니터링 할뿐만 아니라 문제가되는 ip에 대해 iptables가있는 임시 블록으로 들어갑니다. 그리고 마지막에 세부 사항을 설명하는 보고서를 보내드립니다. 그것은 모든 것을 기록합니다. Somone은 로그인을 위해 8000 명 이상의 로그인 이름을 시도했습니다. 나는 로그를 파싱하고 멋진 사용자 목록을 얻었습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.