나는 아파치가있는 서버를 가지고 있으며 최근에 많은 공격을 받기 때문에 mod_security2를 설치했습니다.
내 아파치 버전은 apache v2.2.3이며 mod_security2.c를 사용합니다.
이것은 오류 로그의 항목입니다.
[Wed Mar 24 02:35:41 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:31 2010] [error]
[client 202.75.211.90] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:48:03 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
access_log의 오류는 다음과 같습니다.
202.75.211.90 - -
[29/Mar/2010:10:43:15 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:11:40:41 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:12:37:19 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
다음과 같이 mod_security2를 구성하려고 시도했습니다.
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
mod_security2의 것은 SecFilterSelective를 사용할 수 없으며 오류가 발생한다는 것입니다. 대신 나는 다음과 같은 규칙을 사용합니다.
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
이것조차도 작동하지 않습니다. 더 이상 무엇을해야할지 모르겠습니다. 누구든지 조언이 있습니까?
업데이트 1
아무도 mod_security를 사용 하여이 문제를 해결할 수 없음을 알았습니다. 지금까지 ip-tables를 사용하는 것이 가장 좋은 옵션 인 것처럼 보이지만 ip는 하루에 서버 시간을 변경하기 때문에 파일이 매우 커질 것이라고 생각합니다.
나는 2 가지 다른 해결책을 생각해 냈습니다. 누군가가 좋은지에 대해 의견을 말할 수 있습니까?
내 마음에 오는 첫 번째 해결책은 아파치 오류 로그에서 이러한 공격을 제외하는 것입니다. 이렇게하면 다른 긴급한 오류가 발생하기 쉬워지고 긴 통나무를 뱉을 필요가 없습니다.
두 번째 옵션은 내가 생각하는 것이 더 좋으며 올바른 방식으로 보내지지 않은 호스트를 차단하고 있습니다. 이 예에서 w00tw00t 공격은 호스트 이름없이 전송되므로 올바른 형식이 아닌 호스트를 차단할 수 있다고 생각합니다.
업데이트 2
답을 구한 후 나는 다음 결론에 도달했다.
아파치에 대한 사용자 정의 로깅을 받으려면 불필요한 도움이 필요하며 실제로 문제가있는 경우 누락되지 않은 전체 로그를보고 싶을 것입니다.
적중을 무시하고 오류 로그를 분석하는 더 나은 방법에 집중하는 것이 좋습니다. 로그에 필터를 사용하면 이에 대한 좋은 접근 방식입니다.
주제에 대한 최종 생각
위에서 언급 한 공격은 최소한 최신 시스템을 갖추고있어 기본적으로 걱정할 필요가없는 경우 시스템에 도달하지 않습니다.
오류 로그와 액세스 로그가 모두 매우 커지기 때문에 잠시 후 실제 공격의 모든 가짜 공격을 필터링하기가 어려울 수 있습니다.
어떤 식 으로든 이런 일이 발생하지 않도록하려면 리소스 비용이 들며 중요하지 않은 리소스에 리소스를 낭비하지 않는 것이 좋습니다.
내가 지금 사용하는 솔루션은 Linux logwatch 입니다. 로그 요약 정보를 보내며 필터링 및 그룹화됩니다. 이렇게하면 중요하지 않은 것과 중요한 것을 쉽게 분리 할 수 있습니다.
도움을 주셔서 감사합니다.이 게시물이 다른 사람에게도 도움이되기를 바랍니다.