답변:
IIRC, DenyHosts는 SSH 서비스 만 감시합니다. 다른 서비스를 보호하기 위해 필요한 경우 Fail2ban이 더 나은 선택입니다. 구성을 조정하려는 경우 거의 모든 서비스를 감시하도록 구성 할 수 있지만 최신 버전의 Fail2ban에 많은 인기있는 서버 데몬에 적합한 규칙 세트가 포함되어 있으므로 필요하지 않습니다. 단순한 iptables 속도 제한보다 fail2ban을 사용하면 공격자가 서버를 얼마나 빨리 망치질 수 있는지를 줄이는 대신 지정된 시간 동안 공격자를 완전히 차단할 수 있다는 이점이 있습니다. 나는 여러 프로덕션 서버에서 fail2ban을 사용하여 훌륭한 결과를 얻었으며 사용하기 시작한 이후로 무차별 대입 공격으로 인해 침입 한 서버 중 하나를 본 적이 없습니다.
그들이 처음부터 당신의 기계에 도착하게하지 마십시오! 무차별 대입 시도가 호스트 또는 SSH 수준에 도달하기 전에 중지하는 방법은 많이 있습니다.
그럼에도 불구하고 fail2ban과 같은 것으로 운영 체제를 보호하는 것이 좋습니다. Fail2ban은 DenyHosts와 약간 다르지만 동일한 공간에서 재생됩니다. Fail2ban은 iptables를 사용합니다.
http://en.wikipedia.org/wiki/Fail2ban
Fail2ban은 DenyHosts와 유사하지만 SSH에 중점을 둔 DenyHosts와는 달리, 로그인 시도를 로그 파일에 기록하는 모든 서비스를 모니터링하고 /etc/hosts.deny를 사용하여 IP 주소 / 호스트 만 차단하는 대신 fail2ban을 구성 할 수 있습니다. fail2ban은 Netfilter / iptables 및 TCP Wrappers /etc/hosts.deny를 사용할 수 있습니다.
무차별 대입 로그인을 방지하기 위해 고려해야 할 여러 가지 중요한 보안 기술이 있습니다.
SSH :
신청:
iptables 규칙을 사용하여 동일한 IP 주소에서 새 연결의 속도를 제한합니다 (주로 SSH이지만 FTP에서도 잘 작동합니다). 내가 본 것처럼 "fail2ban"및 기타 도구와 비교할 때의 이점은 iptables 경로가 커널 모드에서 완전히 발생하며 로그 파일을 꼬리 / 파싱하기 위해 사용자 모드 도구에 의존하지 않는다는 것입니다.
가능하다면 문제의 프로토콜에 액세스 할 수있는 소스 주소를 제한하면 도움이 될 것입니다.
SSH를 사용하면 실제로 인증서 인증을 사용하고 암호를 수락하지 않아야합니다.
SSH를 보호하는 또 다른 좋은 방법 (10 년 이상 사용했습니다)은 iptables의 최신 라이브러리를 기본적으로 사용하는 것입니다 (배포에 따라 다름).
기본적으로 iptables에 내장 된 포트 노킹으로 사용할 수 있습니다. 이것은 당신에게 많은 두통을 저장합니다. tcp connect (telnet은 한 가지 방법입니다. 또한 ssh 클라이언트를 사용하여 포트를 가리 켰습니다. 지정된 포트 번호에 대한 tcp 연결을 수행하는 모든 것. 퍼티를보고 있습니다!) 클라이언트가 SSH 연결을 시작하면 이것을 사용할 수 있습니다.
다음은 호스트에서 포트 4103의 서버로 텔넷 할 때 iptables가 포트 22를 호스트로 여는 예입니다. 그런 다음 텔넷을 사용하여 포트 4102 또는 4104를 사용하여 sed 개구부를 닫을 수 있습니다. 4102 및 4104의 이유는 22를 여는 것으로부터 간단한 tcp 스캔을 유지하기위한 것입니다. 포트 4103에 대한 tcp connect (telnet) 만 허용됩니다.
즐겨!
오, 나는 Fail2Ban을 선호합니다. 더 많은 유연성과 나는 금지가 tcpwrappers 대신 iptables에서 발생한다는 것을 좋아합니다.
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name SSH -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4102 -m recent --name SSH --remove -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4103 -m recent --name SSH --set -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4104 -m recent --name SSH --remove -j DROP
Fail2ban과 Denyhosts의 또 다른 차이점은 Denyhosts가 다른 Denyhosts 사용자와 차단 목록을 공유 할 수 있다는 것입니다. Fail2ban을 사용하면 이전에 서버에서 보았던 IP 만 차단할 수 있습니다. Denyhost를 사용하면 다른 사람이 서버를 본 경우 무차별 대입 시도가 서버에 도달하지 못할 수 있으며 공격자 전에 차단 목록이 서버에 다운로드됩니다 컴퓨터에 도착합니다.
또 다른 차이점은 Fail2ban은 iptables를 사용하고 Denyhosts는 tcpwrapper를 사용한다는 것입니다. 다른 사람들은 이전에이 차이점을 언급했지만 언급 할만한 몇 가지 참고 사항이 있습니다.
iptables는 효율적으로 차단할 수있는 IP 주소 수로 제한됩니다. 이것이 Fail2ban에 차단 목록을 공유 할 메커니즘이없는 이유 중 하나 일 것입니다.
또 다른 효과는 iptables가 nftables로 교체 될 때 Fail2ban이 작동을 중지하거나 다시 작성해야한다는 것입니다. 거부 호스트는 계속 작동합니다.
따라서 둘 다 장점과 단점이 있습니다. 나는 둘 다 좋아한다. 나는 SSH를 보호하기를 원하기 때문에 Denyhosts를 사용하고 있으며 차단 목록을 공유하는 것을 좋아합니다.
denyhosts는 ssh 용입니다. fail2ban은보다 포괄적입니다 (HTTP, FTP 등). 둘 다 뒤에서 iptables를 사용합니다.
지루한 iptables 또는 fail2ban 구성을 엉망으로 만드는 대신 개방형 커뮤니티가 모든 작업을 수행하고 대신 CSF / LFD를 사용하는 이유는 무엇입니까? 나는 언급 된 다른 모든 옵션보다 강력하게 추천 할 수 있습니다. 서버에서 수행 할 수있는 작업 은 http://configserver.com/cp/csf.html 을 참조 하십시오 . CSF는 제어판이 필요하지 않으며 셸에서 원하지 않는 사람들을 위해 간단한 UI 자체를 제공합니다. 그리고 안정적인 안정적인 비거주 펄 스크립팅이 많이 있습니다.
fail2ban에는 성공적인 ssh 로그인을 인식하고 실패 횟수를 재설정하는 메커니즘이없는 것으로 보입니다.
sshd (적어도 나의 데비안 설치시)에 대한 표준 필터는 클라이언트가 서버가 거부 한 각 ssh 키에 대한 실패 횟수를 기록합니다. 일부 사용자는 몇 번의 키를 통과 한 후에도 로그인에 성공했지만 로그인 할 때마다 많은 키를 표시하고 정기적으로 잠 깁니다.
위의 결과로, 나는 현재 fail2ban에서 멀어 질 것을 생각하고 있습니다. 이와 관련하여 적어도 거부 호스트가 더 좋습니다. 그러나 더 이상 좋은 옵션이 아니며 더 최신 버전의 데비안에서는 더 이상 지원되지 않습니다 (일부 토론은 https://www.chrissearle.org/2015/06/16/replacing-denyhosts-with-fail2ban-for- 데비안 / )
여기에 좋은 해결책이 없습니다.
실제로 denyHost는 sshd 서비스 외에도 많은 다른 서비스를 막을 수 있다고 생각합니다. 구성 파일- /etc/denyhosts.conf
에 다음과 같은 코드 줄이 있습니다.
# BLOCK_SERVICE: the service name that should be blocked in HOSTS_DENY
#
# man 5 hosts_access for details
#
# eg. sshd: 127.0.0.1 # will block sshd logins from 127.0.0.1
#
# To block all services for the offending host:
BLOCK_SERVICE = ALL
# To block only sshd:
# BLOCK_SERVICE = sshd
BLOCK_SERVICE
변수를 ALL
위와 같이 설정하면 ssh 서비스를 볼 수 있습니다.
Denyhosts 버전 3.0 : IP 주소가 로그 파일에 나타날 때마다 Denyhosts는 hosts.deny 파일을 열고 주소와 일치하는 모든 내용을 읽습니다. 매번 메모리에 아무것도 캐시되지 않습니다. 거대한 hosts.deny 파일이 있고 많은 프로브 (많은 로그 파일 항목)의 영향을받는 경우 Denyhosts는 나타나는 모든 IP 주소에 대해 hosts.deny 파일을 읽고 다시 읽는 CPU 돼지가됩니다. 안좋다.
iptables 지원을 활성화하면 Denyhosts가 차단 된 IP 주소 목록을 느리게 생성합니다. 거부 호스트는 효율적인 IP 맵을 생성하기 위해 ipset 또는 nftables를 사용하지 않습니다.