무차별 강제 SSH 공격을 차단하는 다양한 방법의 장단점은 무엇입니까?


20

시스템에서 무차별 SSH 공격이 시작되는 IP를 차단하기위한 다양한 패키지가 있습니다. 예를 들면 다음과 같습니다.

이것들 또는 다른 것들의 장단점은 무엇입니까?

내 현재 솔루션은 logwatch 가 매일 생성 하는 전자 메일을 가져 와서 엄청난 IP 주소를 텍스트 파일로 덤프하여 스크립트에 피드 한 다음 iptables를 다시 작성하는 것입니다. 해킹되고 시간이 많이 걸리며 수동이며 더 나은 방법을 원합니다.

(문제를 해결할 수있는 "최상의"방법이 없기 때문에 문제를 해결하는 "최상의"방법이 무엇인지 묻지 않았습니다.)

답변:


15

DenyHosts를 사용하므로 적어도 그것에 대해 대답 할 수 있습니다.

찬성

  • 완전 자동입니다
  • 구성 가능 (블랙리스트 이전에 실패한 시도 횟수, 존재하지 않는 사용자 이름, 존재하는 사용자 이름 및 루트에 대한 특수 항목)
  • 정기적으로 새로 블랙리스트 된 호스트 목록을 이메일로 보내거나 새 호스트가 블랙리스트에 올 때마다 지정된 프로그램을 실행할 수 있습니다.
  • 잠시 후 자동으로 블랙리스트 해제 호스트를 지원합니다

단점

올바르게 사용하는 한 돌이킬 수없는 단점이 없습니다.

  • 기본 구성에서는 새로 블랙리스트 된 호스트에 대해 경고하지 않으므로 누군가가 수백 개의 다른 주소에서 네트워크를 공격하는 경우 수동으로 로그를 모니터링하는 경우와 같이 즉시 눈에 띄지 않을 수 있습니다. pros 섹션) 새로운 호스트가 추가되면 경고 이메일 또는 이메일로 실행 파일을 실행할 수 있습니다
  • 기본적으로 호스트를 다른 호스트와 동일하게 블랙리스트에 추가하므로 호스트를에 추가하고 싶을 것입니다 /etc/hosts.allow. 비밀번호를 입력하는 데 실패한 후 본인을 잠그고 직장의 누군가가 농담으로 내 루트 계정에 로그인하려고 시도하고 내 직장 IP를 블랙리스트에 올렸는데 갑자기 왜 연결할 수 없는지 알아내는 데 며칠이 걸렸습니다. 더 이상 직장에서 내 네트워크로

19

또 다른 하나는 iptables에 의존하는 fail2ban입니다 (따라서 ssh뿐만 아니라 모든 서비스에서 작동합니다). fail2ban을 사용하면 다음을 수행 할 수 있습니다.

  • 모든 로그 파일의 경로를 지정하십시오 (apache, ssh, nginx, mail server 등).
  • 공격 패턴에 대한 정규식을 지정하십시오 (예 : 6 초 내에 nginx 액세스 로그에서 동일한 IP로 10 개 이상의 "404 오류")
  • 특정 패턴을 무시하도록 정규 표현식을 지정하십시오 (매우 유용합니다!)
  • 금지 시간 지정
  • 이메일 보내기 (또는 다른 알림 ...)
  • 완벽하게 사용자 정의 가능 (자신의 경고 및 필터를 작성할 수 있음)

DenyHosts의 "단점"은 tcp 래퍼가 필요하다는 것입니다. 따라서 /etc/hosts.deny 파일을 보는 서비스에서만 작동합니다. 그러나 DenyHosts와 공평하게 sshd는 대부분의 Linux 배포에서 TCP 래퍼를 사용하도록 컴파일되었습니다. 또한 fail2ban보다 DenyHosts를 즉시 구성하는 것이 더 쉽지만 강력하지는 않습니다.

유사한 SF 질문에 대한 언급


고맙게도 fail2ban은 iptables뿐만 아니라 pf 와도 작동합니다
Good Person

10

스캔 기반 공격에 대한 간단하고 효과적인 효과적인 보호는 표준 포트를 사용하지 않는 것입니다. 443 (https 포트)은 약한 암호를 해독하지 않는 다른 무차별 공격에 노출되며 기본 포트 (22)보다 더 많은 방화벽을 통해 작동 할 수 있습니다.

ssh brute force 공격을 방지하는 대부분의 방법은 self-DoS를 수행하는 좋은 방법입니다. , 공격자는 나와 동일한 서브넷 (동적 IP 범위, 대학 네트워크 ...)에서 컴퓨터를 옮겼습니다. 또한 차단되었습니다!).

몇 곳에서만 로그인하면 소스 IP 주소를 화이트리스트에 추가 할 수 있습니다. 이동 중에 랩톱이나 휴대 전화에서 ssh를 원한다면 분명히 좋지 않습니다.

IPv6 연결 만 수신하는 ssh 데몬이 있으면 몇 년 동안 스캔되지 않도록 보호해야합니다. 그러나 많은 방화벽은 합리적인 방법으로 IPv6를 전송하도록 허용하지 않습니다.

언급하지 않은 또 다른 방법은 포트 노킹 입니다. 구성 오류 이외의 자체 DoS 문제로 고통받지는 않지만 방화벽을 잘 통과하지 못하며 연결 ​​설정에 몇 초의 대기 시간을 추가 할 수 있습니다.

암호가 양호하거나 암호 인증없이 살 수있는 경우 암호 인증을 비활성화하십시오. 키와 일회용 암호는 대부분의 경우에 충분합니다. ssh 키를 저장하기에 충분한 클라이언트 시스템을 신뢰하지 않으면 키로거도 가지고 있지 않다고 신뢰하지 않습니다. 그런 다음 무차별 대입 공격에는 약간의 CPU와 대역폭이 필요하지만 데비안 엔트로피 OpenSSL 에서 키가 없는지 확인하지 않는 한 침입에 노출되지는 않습니다 .

포트를 변경해도 노출이 크게 줄어드는 것은 아닙니다. 검색 횟수 는 줄어들지 만 오래된 취약점과 취약한 암호를 악용하려는 낮은 매달려 과일 만 있으면됩니다. 데몬을 최신 상태로 유지하고 합리적인 암호 또는 합리적인 시도 속도 제한을 적용하는 한 포트를 전환하는 것은 보안 조치보다 더 큰 책임입니다.


1
기본 포트를 변경하고 암호를 사용하지 않고 암호로 보호 된 키를 사용하는 것도 좋은 조언입니다. 그러나 ssh와 웹 서버가 시간당 수천 건의 요청을 거부 해야하는 동안 봇 네트워크가 액세스 로그 파일을 채우도록 해야하는 이유를 정말로 알지 못합니다. fail2ban을 사용하면 액세스 로그가 깨끗하고 서버 응용 프로그램에이 트래픽이 전혀 표시되지 않습니다 (처음 X 잘못된 요청 :-) 제외).
Barthelemy

비표준 포트를 사용한다고해서 전혀 보호가되지는 않습니다. 비표준 포트에서 SSH를 스캔하는 데는 포트 22에서 SSH를 스캔하는 것보다 몇 분만 더 걸립니다 (크래커가 스캔을 수행하고 스캔이 IDS에 의해 차단되지 않았다고 가정하지만 IDS가있는 경우 포트 난독 화는 아마도 불필요합니다) ). 내가 크래커이고 비표준 포트에서 SSH를 발견했다면 관리자 가이 서비스가 숨길 정도로 가치가 있다고 생각하고 모호함에 의해 보안에 의존하고 있기 때문에 더 관심이있을 것입니다.
Stefan Lasiewski

1
@Stefan : 대부분의 공격은 지정된 호스트에 대한 것이 아니라 지정된 서비스에 대한 것입니다. 이를 위해 각 주소의 많은 포트보다 여러 주소의 단일 포트를 스캔하는 것이 훨씬 효과적입니다. 실제로 공격자가 자신을 대상으로하는 경우 더 잘 알고 있으므로 강력하거나 금지 된 암호와 공격을 기록하고 싶을 것입니다.
Gilles 'SO- 악마 중지

1
@Stefan 저는 비표준 포트를 귀찮은 (브 루트 포스 스캔)에 대한 효과적인 솔루션으로 간주하고 실제로 보안 조치 (예 : 누군가가 내 서버를 제어하지 못하도록 방지)로 간주하지 않습니다.
Barthelemy

1
@sudowned 다른 포트를 지정하는 것은 성가신 일이 아닙니다. 의 한 줄에 불과 .ssh/config합니다. 방화벽이 통과하지 못하면 잠금이 문제이며 가장 쉬운 해결책은 포트 22를 고수하고 443을 수신하는 것입니다. 포트를 전환해도 보안이 실제로 향상되지는 않는다는 데 동의합니다. . SSH 데몬이 암호 인증을 지원하지 않는 것이 왜 불가능하다고 생각하는지 모르겠습니다 sshd_config. 가장 일반적인 구현 인 OpenSSH 를 사용 하여 행을 추가하는 것입니다.
질 'SO- 악마 그만'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.