여기서 /usr/local/nginx/logs/modsecurity/*는 해당 경로의 모든 하위 디렉토리와 파일에 대한 소유자를 nobody 및 nogroup으로 설정합니다.
Nginx 구성 리로드 Nginx 구성을 다시 로드하면 SecAuditLogStorageDir 경로에 많은 JSON 형식의 파일이 생성됩니다.
이제 감사 로그 파일을 파싱하고 Elasticsearch로 전송할 시간입니다.
GitHub에서 파서 클론 및 설정
$ cd /opt/
$ git clone https://github.com/theMiddleBlue/modsecurity-to-elasticsearch.git
$ cd modsecurity-to-elasticsearch/
$ vi modsec_parser.py
여기서 modsec_parser.py 파일을 열어 Elasticsearch URL이 올바른지 확인합니다.
es = Elasticsearch(['http://127.0.0.1:9200'])
elasticsearch-py SDK 설치 만약 설치되어 있지 않다면, elasticsearch-py SDK를 설치해야 합니다. pip를 사용하여 설치할 수 있습니다. (apt-get install python-pip가 필요할 수 있습니다.)
pip install elasticsearch
스크립트 실행 다음 명령을 사용하여 스크립트를 실행합니다. <auditlog directory>는 ModSecurity 감사 로그가 저장된 디렉토리입니다.
python modsec_parser.py -d <auditlog directory>
이 스크립트는 간단하게 "-d" 디렉토리에 있는 각 파일을 재귀적으로 읽고 파일 내용에서 JSON을 로드한 다음 elasticsearch-py 모듈을 사용하여 Elasticsearch로 전송합니다. "messages" 목록을 여러 다른 배열로 변환하여 "객체 배열" 문제를 해결합니다. 스크립트를 시작하면 다음과 같은 출력이 표시됩니다.
이는 매일 인덱스를 생성하고 해당 날짜에 파일이 읽힌 날짜로 인덱스에 모든 수신 로그를 작성합니다. 모든 로그를 단일 인덱스에 저장해야 하는 경우 이를 변경할 수 있습니다.
"Index pattern" 필드에 modsecurity_*와 같은 패턴을 입력하고 "Next step"을 클릭합니다.
"Time Filter field name"에서 "unixts"를 선택하고 "Create index pattern"을 클릭합니다.
검색 및 보고서 생성
이제 Kibana 대시보드에서 "Discover" 섹션으로 이동하여 검색을 시작할 수 있습니다.
ModSecurity 로그 확인
"Discover" 섹션에서는 ModSecurity 로그를 자세히 볼 수 있습니다. 필요한 필드를 선택하고 해당 로그를 확인할 수 있습니다.
msg.tags 필드에 대한 쿼리
"Discover" 섹션에서 "msg.tags" 필드에 대한 쿼리를 수행할 수 있습니다. 예를 들어, 특정 태그를 가진 로그를 검색하는 쿼리를 작성할 수 있습니다.
msg.tags 필드로 분할된 파이 차트 생성
"Visualize" 섹션으로 이동하여 "Create a visualization"을 선택합니다.
"Pie chart"를 선택하고 "msg.tags" 필드를 사용하여 파이 차트를 생성합니다.
필요에 따라 차트를 구성하고 저장한 다음 대시보드에 추가할 수 있습니다.
이제 Kibana를 사용하여 ModSecurity 로그에 대한 검색 및 시각화를 시작할 수 있습니다.
Nginx Ingress에서 ModSecurity를 활성화하고, ModSecurity Audit 로그를 Elasticsearch에 Fluentd를 사용하여 수집하는 방법은 다음과 같습니다. 이를 위해서는 Kubernetes 클러스터와 관련된 설정도 함께 고려해야 합니다.
ModSecurity 설치 및 구성
Nginx Ingress에 ModSecurity를 적용하기 위해 먼저 ModSecurity를 설치하고 구성해야 합니다.
댓글