나는 중국으로부터 사기를 당하고 있는데 왜 내 서버에 대한 그들의 요청을 차단할 수 없는지 모르겠습니다.
//호스트.거부
ALL: item.taobao.com
ALL: 117.25.128.*
하지만 웹서버의 오류 로그를 보면 tail -f /var/log/apache2/error.log
요청이 계속 허용됩니다.
질문:/etc/hosts.deny 구성이 작동하지 않는 이유는 무엇입니까?
답변1
/etc/hosts.deny
대신 파일 이름이 지정됩니다 .host.deny
모든 서비스가 TCP 래퍼를 사용하는 것은 아닙니다.
sshd
예를 들어, 기본적으로는 그렇지 않습니다. 아파치도 마찬가지입니다.iptables
이를 사용하여 117.25.128/24의 모든 패킷을 차단할 수 있습니다 . 예를 들면 다음과 같습니다.iptables -I INPUT -s 117.25.128.0/24 -j DROP
더 나은 방법은 다음과 같습니다.실패 2 금지로그 파일(예: Apache의 access.log 및/또는 error.log)을 모니터링하고 서버 공격을 시도하는 IP 주소를 자동으로 차단합니다.
데비안 fail2ban
패키지의 설명:
Fail2ban은 로그 파일(예: /var/log/auth.log, /var/log/apache/access.log)을 모니터링하고 기존 방화벽 규칙을 업데이트하여 오류가 발생하기 쉬운 주소를 일시적 또는 영구적으로 금지합니다.
Fail2ban을 사용하면 iptables 또는 ports.deny 규칙을 사용하여 IP를 금지하거나 단순히 알림 이메일을 보내는 등 취해야 할 다양한 조치를 쉽게 지정할 수 있습니다.
기본적으로 다양한 서비스(sshd, apache, qmail, proftpd, sasl 등)에 대한 필터 표현식이 제공되지만 구성을 쉽게 확장하여 다른 텍스트 파일을 모니터링할 수 있습니다. 모든 필터와 동작은 구성 파일에 제공되므로 Fail2ban은 다양한 파일 및 방화벽과 함께 사용할 수 있습니다.
답변2
원래 질문에 관해서. 내 데비안의 Apache에는 libwrap이 구성되어 있지 않으므로 ports.deny를 참조하지 않습니다. [이전 답변에서 언급한 바 있습니다. 현실은 tcpwrapper가 90년대 보안의 전형이 아니라는 것입니다. 특히 블랙리스트에 관한 경우에는 더욱 그렇습니다. 데몬으로 실행하는 것이 아니라 (x)inetd에서 실행해야 합니다. 그러면 (상당히) 속도가 느려집니다.
Apache 수준에서 액세스를 차단/허용할 수 있으며 Apache의 tcp 래퍼[또는 iptables]가 필요하지 않습니다. 당신은 SSH에 대해 언급하지 않았지만 저는 SSH 서버를 외부 세계에 직접 열어 둔 적이 없습니다. 하지만 계속 읽어보세요.
우리는 300개 이상의 도메인 이름을 가진 가상 호스트를 보유하고 있으며 Taobao, Baidu, 심지어 Google Spider에서도 비슷한 문제를 겪고 있습니다. Baidu 거미가 매우 공격적이고 끈질긴다는 점은 주목할 가치가 있습니다.
이미 알고 있듯이 서버 팜이 있으며 특정 IP를 차단하더라도 곧 다른 IP 주소에서 다시 나타날 것입니다.
IP 주소/네트워크 블록 목록을 수동으로 유지하는 것은 비실용적입니다.
우리에게 매우 효과적이었던 것은 modsecurity가 사용자 에이전트 문자열을 영구적으로 차단하는 반면 mod_evasive는 악의적인 IP를 일시적으로 차단한다는 것입니다.
검색 엔진 스파이더의 속도를 늦추는 것 외에도 이 설정은 CMS 비밀번호를 추측하려는 봇의 시도를 제한하는 이점이 있습니다.
modsecurity.conf의 관련 부분
SecRule REQUEST_HEADERS:User-Agent "Yandex" phase:1,deny,nolog,id:'6972'
SecRule REQUEST_HEADERS:User-Agent "ichiro" phase:1,deny,nolog,id:'6973'
SecRule REQUEST_HEADERS:User-Agent "Baiduspider" phase:1,deny,nolog,id:'6974'
SecRule REQUEST_HEADERS:User-Agent "Baiduspider/.*" phase:1,deny,nolog,id:'6975'
SecRule REQUEST_HEADERS:User-Agent "Baiduspider-video" phase:1,deny,nolog,id:'6976'
SecRule REQUEST_HEADERS:User-Agent "Baiduspider-image" phase:1,deny,nolog,id:'6977'
SecRule REQUEST_HEADERS:User-Agent "sogou spider" phase:1,deny,nolog,id:'6978'
SecRule REQUEST_HEADERS:User-Agent "YoudaoBot" phase:1,deny,nolog,id:'6979'
SecRule REQUEST_HEADERS:User-Agent "bingbot(at)microsoft.com" phase:1,deny,nolog,id:'6980'
SecRule REQUEST_HEADERS:User-Agent "msnbot(at)microsoft.com" phase:1,deny,nolog,id:'6981'
SecRule REQUEST_HEADERS:User-Agent "BLEXBot/1.0" phase:1,deny,nolog,id:'6982'
SecRule REQUEST_HEADERS:User-Agent "Bot.*" phase:1,deny,nolog,id:'6984'
SecRule REQUEST_HEADERS:User-Agent "AhrefsBot.*" phase:1,deny,nolog,id:'6985'
그리고 mod-evasive.conf
DOSHashTableSize 2048
DOSPageCount 10
DOSSiteCount 300
DOSPageInterval 2.0
DOSSiteInterval 1.0
DOSBlockingPeriod 600.0
DOSLogDir /var/log/apache2/evasive
DOSWhitelist 127.0.0.1
DOSWhitelist 1xx.xxx.xxx.xx
나는 또한 매우 현실적인 가능성을 잊었습니다. 중국을 상대하지 않거나 홈서버를 운영하고 있다면 그냥 중국 전체를 차단하세요. 이들로부터 발생하는 공격과 맬웨어의 수준으로 인해 많은 전문가가 이러한 작업을 수행하는 것이 정당화되었습니다.
http://www.cyberciti.biz/faq/block-entier-country-using-iptables/
나는 또한 이 다소 긴 답변에 각주를 추가하는 것을 잊었습니다. 사람들은 종종 직장에서 이와 같은 문제를 해결하기 위해 robots.txt를 사용하라고 제안합니다. 요점은 robots.txt가 원격 프로그램에 대한 제안일 뿐이라는 것입니다. 물론 악의적인 행위자들은 이를 무시할 것이며 오늘날 다른 웹 크롤러가 이를 존중할 것이라는 보장도 없습니다. 테스트에서 Baidu를 예로 들어 보겠습니다.~인 것 같다그들을 무시하십시오. (robots.txt는 조폭에게 묻는 것과 같습니다. 때리지 말고 긁어주세요)