[보안]로그모니터링 대시보드 만들기

방패맨·2025년 3월 17일
post-thumbnail

최근 솔루션이 공격을 받았다.
여러번의 중국발 IP로 공격시도가 확인되었으며 그 과정에서 로그를 많이 찾아보게되었다.
웹 서버 로그를 보다가 필요한 정보를 파싱해서 보고싶은 마음이 생겨 파이썬으로 데이터 가공 후 취합하는 과정을 겪다가 외부교육을 신청하여 수강 후 파케이 파일 변환 및 대시보드를 만들게되었다.

210.xx.xx.xx /- - /[16/Dec/2024:18:45:27 +0900] /"GET/ /shield/shield_list.php /HTTP/1.1" /200 /47464 "https://shield.market.com/shield/shield_list.php"/ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0"

위와 같은 로그정보가 있으면 각각 다음과 같은 정보로 분류 할수 있다.
(물론 로그포맷은 Combined)

1. Client IP
2. Identity , username
3. Timestamp
4. HTTP Method
5. Request URL
6. HTTP Version
7. HTTP Status Code 
8. Response Size 
9. Referrer 
10. User-Agent 
11. logFormat

생각보다 유용한 정보가 많기에 원하는 데이터를 파싱해서 대시보드를 만들거나 솔루션에 도움이 되는 부분을 DB에 저장해서 분석자료로 활용하기에 좋다고 생각하였다.

가장먼저 파케이 파일 변환을 진행하게되는데,

보이는 것과 같이 용량이 어마어마하게 차이가난다.
대용량 로그 파일 관리를 위해 파케이 파일저장은 필수 인 것 같다.

Pandas를 활용해서 data frame을 만들고 파케이파일변환을 했으면 재료준비는 끝.

이제는 양념준비를 해야한다.
양념은 공격 탐지코드다.

각각 공격탐지 패턴은 교육내용과 GPT의 도움을 받아 작성하였다.

이제 플레이팅을 구상해야한다.

기본적인 차트 구성은 4개로 진행하고 왼쪽에는 서버를 목록화하여 고를 수 있게 구상하였다.

다음과 같은 과정을 겪어 DATA를 저장하거나 즉시 시각화(대시보드)를 구성하게되었다.
최신 로그를 가져오기위해 방화벽 예외신청과 같은 자잘한 난관을 겪고 결과적으로 아래와 같은 대시보드를 만들었다.

결과적으로 6개의 차트, 서버목록을 구성했지만 중요정보가 있기에 일부 가렸습니다.

결과물을 보니 파이썬의 다양한 라이브러리의 활용도는 무궁무진 한 것 같다.
기본적으로 Streamlit을 활용해서 빠르게 웹사이트를 구상하고
차트별 디테일을 챙겼다.

보안도 꾸준하게 관심을 갖고 다양한 것을 해봐야겠다.
오늘의 요리 끝.

profile
개발자 방패맨의 기술블로그

0개의 댓글