지난번에 포트폴리오로 블로그까지 했는데, 이번에 로그부분을 구현 했습니다.
근데 이게 그냥 crowdsec.log나 nginx.log가져와서 읽고 쓰면 끝! 인줄 알았는데 생각보다 많이 복잡하더라고요.
일단 logs가 핵심 기능구현이기 떄문에 logs는 페이지를 따로 만들거고

이렇게 구현을 했습니다.
방문자에 대한 구조체를 만들고, nginx로그를 읽어온 뒤, visitor_cache라는 1행 데이터베이스에 값을 계속 쓰는 방식으로 방문자와 로그를 읽어왔습니다.
go언어를 선택한 만큼 장점을 살리려고 구성을 했는데, 로그를 띄울 때 매 요청마다 로그를 읽고 파싱하면 너무 느리기 때문에 데이터베이스에 구조체를 넣어두고, goroutine으로 5분에 한 번씩 최신화를 하는 방식으로 구현을 했습니다. 대신 최신 로그를 확인하기 위한 접속자를 위해 새로고침 기능도 구현을 했습니다.
그리고 자세히 보기를 누르면 nginx의 로그들을 파싱해서 읽어와서 띄워둡니다.
주석이랑 설명은 어차피 깃허브에 있으니 생략하겠습니다
https://github.com/poiri3r/poiri3r.com/tree/main/backend
poiri3r.com/backend at main · poiri3r/poiri3r.com
portfolio website. Contribute to poiri3r/poiri3r.com development by creating an account on GitHub.
github.com
처음에 더미데이터로 nginx.log를 추가하고 그 뒤에 aws에 이식했습니다.
깃허브 쓰는게 너무 어색하네여


로그가 뜨긴 하는데, 요청을 보낸 /ap/visitors 이런거를 띄우고 싶었는데 단순히 요청만 뜨는게 이상하네요 ..
아깐 잘 떴는데 ui 이런걸 좀 바꾸고 나니까 안뜹니다.
그래프도 crowdsec나 wazuh처럼 깔끔한 대시보드를 표현하고 싶었는데


없느니만 못한 그래프가......
프론트엔드는 ai한테 맡겨서 이건 조금만 수정을 거치면 될 것 같은데, crowdsec에서 로그를 읽어오는게 안되는 듯 합니다.
crowdsec.log를 읽어오는게 아니라 crowdsec.db를 읽어와야 되는데 이걸 읽는 과정에서 조금 문제가 있는것 같습니다.
로컬환경에서 테스트 할땐 db가 없어서 더미db없이 그냥 코드만 구현하고 aws에 넣었는데, 데이터베이스를 제대로 못 읽어오는 것 같네요. crowdsec관련 데이터가 아예 안보입니다
그리고 전체 방문자 국가를 넣기 위해서 nginx로그에서 ip만 파싱한 뒤 geoip로 분석하는 로직도 넣었는데 마찬가지로 nginx.log가 더미 데이터만 있다보니 테스트가 안된 상태로 넣었더니 이것도 오류가 많습니다.
어느정도 틀은 잡혔는데 갈길이 머네요.
그리고 로그가 같은 요청도 계속 찍히니, ip당 몇개를 찍던 이런식으로 나누긴 해야할 것 같습니다.
logs.html의 칸도 4칸으로 나누고 크기도 조절하고 데이터베이스 연동도.. 갈길이 많네요
'취약점분석 (Blue Team) > Network' 카테고리의 다른 글
| 세미나 발표 자료 - 망분리로 보는 내부망 구조 (0) | 2026.05.12 |
|---|---|
| 국가 망분리 N2SF 가이드라인 1.0 정리 (0) | 2026.05.08 |
| 망분리 환경 운영 (vdi, 원격접속 통제) 토스 가디언즈 세미나 (0) | 2026.05.05 |
| [Network] ELK Stack (Elastic Stack) (0) | 2026.04.30 |
| [Network] Wazuh Manager 로그 분석 (3월 ~ 4월) (0) | 2026.04.29 |