본문 바로가기
  • 배움에는 끝이 없다.
Security/Mod_security

[Mod_security] Mod Security 로그 분석 - 간략하게 정리

by 줘패자 2023. 1. 29.

색깔 칠한 부분만 보면된다.

■ 파란색 글씨

딱 보면 알겠지만 로그가 쌓일때 로그 ID이다. 

a~f / 0~9  8자리 랜덤 조합 그 뒤에 A, B, F, Z 등은 시간,접근방법, 탐지된 정책등의 정보가 담겨있다. 

SecAuditLogParts "ABIFHZ"  모드시큐리티 설정에 있다.

추가로 SecAuditLogRelevantStatus "^(?:5|4\d[^4])"  설정을 통해 404 등의 쓸때없는 페이지는 로그를 안 쌓을 수 있다.

 

빨간색 글씨

중요한 부분이다. 어떤식으로 접근했을때 탐지되었는지 알 수 있다.

 

■ 초록색 글씨

어떤 정책에서 걸렸는지 알 수 있다. 

 

자세한건 로그 보면서 적겠지만 요약하자면

 

1.운영중인 홈페이지인 경우 2 주정도의 탐지 기간을 거쳐 로그를 검토하여 차단모드로 변경하는 것을 권장
ㄴ정상적인 접근도 차단 될 수 있기에 충분히 로그 적재 기간을 두어 검토 후 차단 모드로 변경하는 걸 권장한다.

ㄴ바로 차단모드 적용 시 서비스 장애 발생 위험 있음

ㄴ만약 개발중인 사이트라면 처음부터 차단모드로 해놓고 안되는것들은 소스를 수정 & 정책을 주석하면 된다.

 

2.로그 분석

ㄴ먼저 파랑색 부분에서 동일한 로그끼리 보고 
ㄴ빨간색 부분 체크하여 정상/비정상 유무 판단, (본인이 못하면 관리자, 개발자, 홈페이지 운영자등이 확인 가능)

ㄴ정상 시 초록색 부분에서 정책적용되지 않도록 해당 라인을 주석 / 비정상이라면 걸려서 접근 안된거니까 냅두면되고.. 아니면 안걸리게 소스 수정하거나 룰 커스텀하면 된다.

ㄴ룰 커스텀 부분은 시간되면 포스팅 하도록 하겠습니다.

 

--892b4e44-A--   접근 시간 / 아아피등의 정보
[11/Aug/2017:13:44:57 +0900] WY02SX8AAAEAAAucFrcAAAAa 0.0.0.0 49410 0.0.0.0 443
--892b4e44-B-- 접근 URL 
GET /test/test.html?jb_type=G&ipZe%3D6199%20AND%201%3D1%20UNION%20ALL%20SELECT%201%2C2%2C3%2Ctable_name%20FROM%20information_schema.tables%20WHERE%202%3E1--%20..%2F..%2F..%2Fetc%2Fpasswd HTTP/1.1

Host: rsync.net
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ACEUCI=1; PHPSESSID=a68fb899645d3c714231582cdd838ede; new_connect=0.0.0.0; ACEFCID=UID-598BEEBEC8E8787061A4F93F; ACEUCI=1; wcs_bt=s_23983
7b585db:1502424521

Cookie 부분에서 php 세션 아이디 확인 가능### 만약 비정상적인 접근이라면 아이피확인하여 차단시켜도 좋다.

 

--892b4e44-F--
HTTP/1.1 200 OK    
X-Powered-By: PHP/5.2.17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, X-Prototype-Version
Keep-Alive: timeout=30, max=1000
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8

이부분 체크해야한다. 404 인지 400인지 혹은 200인지.. 404나 403 처럼 파일이 없거나 퍼미션 denied 면 어차피 접근이 안된거라 상관없겠지만 200 이면 접근이 되기는 한거니..

 

--892b4e44-H--
Message: Warning. Pattern match "/etc/passwd" at REQUEST_URI. [file "/usr/local/apache/conf/mod_security.conf"] [line "300"]
##어느 정책에 걸렸는지 확인 가능하다. 위 내용은 /etc/passwd 라는 패턴이 URL에 들어가서 mod_security.conf 파일의 300째 라인의 정책에 탐지됐다는 내용
Message: Warning. Pattern match "\.\./" at REQUEST_URI. [file "/usr/local/apache/conf/mod_security.conf"] [line "306"]
##마찬가지로 URL에 ../ 라는 특문이 포함돼있어 306 라인의 정책에 탐지됐다.


Stopwatch: 1502426697568606 27545 (118 559 -)
Producer: ModSecurity for Apache/2.5.12 (http://www.modsecurity.org/).
Server: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips DAV/2 PHP/5.2.17


--892b4e44-Z--

위 로그를 정리하자면

도메인/../../../etc/passwd 로 접속했기 때문에 ../ 와 /etc/passwd 두가지 정책에 걸려서 로그가 쌓인거다. 
보통 도메인 홈디렉토리는 /home/계스트명/www 처럼 어느정도 유추가 되기 때문에(실제 절대 경로도 확인 할 수 있음) 위와같이 도메인/../../../etc/passwd  도메인을 접속하게 되면 서버에서는 /home/계스트명/www/../../../etc/passwd 파일을 확인 할 수 있다.

ex) https://naver.com/../../../etc/passwd 

 

사실 모드시큐리티 로그는 비정상적인 접근을 확인하고 해당 아이피를 차단하는데에도 쓰이겠지만

정상적인 접근을 확인해서 서비스중인 홈페이지에 장애가 되지 않도록 설정하는데 더 의미가 있다고 봅니다.

물론 바로 차단모드 해놓고 실제 싸이트 안뜨는 부분 (어느정도 장애는 감수하고)만 체크하는게 가장 빠름

댓글