여러 번 실패한 ssh 로그인 시도에서 IP 금지


0

내 sshd에서 brutforce 로그인 공격을 실행하는 IP를 차단하는 쉬운 방법이 있습니까? 로그인 프롬프트가 표시되는 시간이 길어질 수 있습니다.

나는 fail2ban을 알고 있지만 그것을 시도했을 때 멈추었습니다. 또한 semdmail이 필요합니다. 데스크탑에 설치하고 싶지 않습니다. 그리고 뭔가 일어나면 인터넷을 통해 이메일을 보내고 싶지 않습니다. fail2ban이 대신 데스크탑 알림 (D-Bus)을 사용할 수 있다면 좋을 것입니다. 그러나 왜 이와 같은 것을 위해 별도의 것을 설치 해야하는지 궁금합니다. 왜 sshd가 그렇게 할 수 없습니까? (동일한 IP에 여러 번의 로그인 시도 실패가있는 경우 대기 시간을 늘리십시오.)


fail2ban 문제 해결을 살펴 보겠습니다. 실제로 당신이하려는 일에 대한 완벽한 솔루션에 관한 것입니다.
bobmagoo

DOS (서비스 거부) 방지 기능이있는 APF (고급 정책 기반 방화벽)를 살펴 보겠습니다. 일반적으로 비밀번호 기반 인증을 허용하지 않고 높은 번호의 포트에서 작동하도록 SSHD를 구성합니다. 이것은 로그 혼란을 줄이는 데 도움이됩니다.
RedGrittyBrick

메일을 보내는 프로그램 을 구현하는 mailx 가 필요하다고 생각합니다 sendmail. sendmail 메일 전송 에이전트 와 직접 관련이 없습니다 .
Eroen

커널 수준에서 DOS 시도를 보호하지 않으면 DoS를 방지 할 수 없습니다.
EdH

답변:


2

대안 fail2ban은 규칙 을 관리하는 대신 DenyHosts업데이트하는 /etc/hosts.deny것입니다 netfilter.


나는 fail2ban이 제대로 작동하지 못하기 때문에 주로 Denyhosts를 사용합니다.
Eroen

hosts.deny는 TCP 래퍼입니다. 더 이상 사용되지 않습니다. 아래를 참조하십시오.
EdH

1

자체 fail2ban 조치 및 필터를 작성해야합니다. 예를 보여 드리겠습니다

/etc/fail2ban/jail.conf에 새 데스크탑 알림 작업에 대한 행을 추가하기 만하면됩니다.

[ssh-with-desktop-notification]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
         ssh-with-desktop-notification[title=<Title Here>, content=<Content Here>]
logpath = /var/log/secure
maxretry = 3

나무 상자에서 그 이름을 새 파일 /etc/fail2ban/actions.d/ssh-with-desktop-notification.conf 하고 모든 명령을 추가 actionstop, actionstart 이벤트. 예를 들어, 그놈을 데스크탑 환경으로 사용한다고 가정합니다.

actionban =  `which notify-send` <content>

이 모든 새 행 후에 fail2ban 서비스를 다시 시작하는 것을 잊지 마십시오.

/etc/init.d/fail2ban restart

결론적으로이 새로운 fail2ban 조치는 / var / log / secure 로그 파일에서 시도가 실패했는지 점검합니다 . 3 가지 실패한 동작은 3 개의 매개 변수 (이름, 포트 및 프로토콜)로 iptables 를 실행 합니다. iptables를 실행 한 후 fail2ban은 /etc/fail2ban/actions.d 폴더에서 ssh-with-descktop-notifications.conf 파일을 찾습니다 . 파일이 존재하면 파일에서 actionban 이벤트 를 찾습니다 . 그런 다음 actionban 이벤트가 존재하면 fail2ban은 IP를 금지 할 때 매개 변수 (제목 및 컨텐츠)와 함께 actionban 명령을 실행합니다.

참고 : fail2ban 사용자 권한으로 명령이 실행되었는지 확인하십시오.


0

구성에 대해 많은 정보를 제공하지는 않지만 라우터를 사용하는 경우 일반적으로 지정된 IP 또는 IP 범위의 항목을 차단하는 인바운드 필터를 사용하여 프로그래밍 할 수 있습니다. 예를 들어, D-Link에서 Advanced Settings (고급 설정) 탭으로 이동하여 Inbound Filter (인바운드 필터) 페이지를 선택합니다.


내 라우터 (speedtouch DSL 모뎀)가 꽤 나쁩니다. 웹 인터페이스는 혼란스럽고 번거롭고 거짓말입니다 (인터페이스를 통해 일부 포트를 차단했지만 여전히 해당 포트에서 연결할 수 있습니다!). 그래서 내가 그것을 사용하지 않는 이유입니다.
panzi

-1

이를 수행하는 가장 좋은 방법은 netfilter의 내장 기능을 사용하는 것입니다. 주어진 시간 내에 TCP 포트에 너무 많은 시간이 걸리면 시간 초과를 원합니다.

마지막으로 본 각 호스트에 대한 타임 스탬프는 ...

$ sudo iptables -A INPUT  -p tcp -m tcp --dport 22 -m state \
    --state NEW -m recent                                   \
    --update --seconds 60 --hitcount 4 --name DEFAULT --rsource -j DROP

여기에서 전체 기사를 읽으십시오. http://blog.bigdinosaur.org/securing-ssh-with-iptables/

netfilter를위한 더 정교한 플러그인도 많이 있습니다.

hosts.deny오래 되지 않은을 (를) 사용하지 마십시오 . 그것은 고대이며 프로그래밍 지원이 필요한 TCP Wrappers입니다.

프로덕션 방화벽에서이 기술을 사용했으며 제대로 작동합니다.


이러한 규칙을 통해 공격자는 스푸핑 된 소스 IP 주소를 가진 패킷을 충분히 높은 속도로 보내어 DoS 임의 클라이언트를 할 수 있습니다. DenyHosts OTOH는 인증 시도가 실패한 주소 만 차단합니다. 이 시점에서 TCP 연결이 이미 설정되었으므로 주소 스푸핑이 거의 배제됩니다.
Ansgar Wiechers

어 ... ISP와 다운 라인 라우터 (및 피어링 파트너 라우터)가 어떻게 든 스푸핑 된 IP 패킷을 허용하는 경우 위험하다고 생각합니다. 우리는 1994 년에 돌아왔습니까? :)-계속 진행되는 경우 SSH 로그인보다 훨씬 더 큰 문제가 있습니다.
EdH

IT Security 계몽 에서이 질문 에 대한 답변을 찾을 수 있습니다 .
Ansgar Wiechers

음, IP 스푸핑을 시도해보십시오. 일부 네트워크에서는 네트워크의 일부에서 성공을 거둘 수 있습니다. 주요 문제는 BGP 수준에서 패킷이 일반적으로 전송되는 피어링 서비스가 팩을 통과하지 못하는 BGP 수준입니다. 그들이 할지라도 당신은 또한 자신의 ISP를 탐색해야합니다. 특이한 인터페이스에서 충분한 이상한 팩이 있으며 IDS를 설정합니다. 그러나 여기서 요점은 사람들이 SSH에 침입하는 것을 막는 것이라면 적중 횟수를 기준으로 거부하는 것이 합리적입니다.
EdH

HTTP 또는 일부 HA 서비스에 권장합니까? 아니. 이상 감지 IDS를 사용해야합니다. TCP Wrappers의 문제 는 OpenSSH의 컴파일 에서 지원 될 수 있지만이 사용자가 Dropbear 또는 무언가를 말하거나 SSH를 다시 ​​컴파일 할 때 스왑 할 때 보호되지 않는다는 것입니다. TCP Wrappers는 슈퍼 서버 시대를 위해 설계되었습니다.
EdH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.