반응형

 

  • GoAccess X-Forwarded-For 웹 로그 파일 분석 방법 

X-Forwarded-For 웹 로그 파일의 경우 아래와 같이 IP가 두개로 출력될 수 있기 때문에 GoAccess에서 LogFormat을 맞춰줄 필요가 있습니다.

10.10.10.10, 20.20.20.20 - - [15/May/2020:10:51:14 +0900] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

 

LogForamt을 맞춰주는 방법은 비교적 굉장히 간단 합니다. 기존에 사용하던 LogFormat이 --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^' 이거였다면, 가장 앞단의 %h를 %h, 으로 변경만 해주시면 X-Forwarded 에서 IP가 2개로 출력되는 웹로그 파일을 분석할 수 있습니다.

goaccess access_log --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^' --date-format=%d/%b/%Y --time-format=%T

 

위의 예시는 Apache에서 아래와 같은 LogFormat을 사용중일 때 정상적으로 작동 합니다.

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

 

반응형
반응형

 

  • 웹 로그 분석 툴 GoAccess 설치 및 사용 방법

GoAccess는 웹 로그 파일을 기반으로 분석해서 CLI 환경이나 HTML형태로 보고서를 출력해주는 오픈소스 입니다. yum으로 간단하게 설치할 수 있습니다.

yum -y install goaccess

 

로그 파일을 기반으로 분석하기에 사용 환경에 따라 goaccess 실행 시 logformat을 웹로그와 동일하게 맞춰 주어야할 수 있습니다. 터미널에서 실행 커맨드와 UI는 아래와 같습니다.

goaccess access_log --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^' --date-format=%d/%b/%Y --time-format=%T

 

만약 HTML으로 보고서를 출력받고 싶다면 아래와 같이 커맨드를 입력하면 됩니다. HTML을 띄우기 위해 apache가 필요하고, 저의 경우 /var/www/html/report.html 이라는 이름으로 파일을 추출하여 웹로그에서 출력 하였습니다. 브라우저를 띄우고 접속 시 httpd가 실행중인지 확인하고 http://서버IP/report.html 를 입력하여 접속하면 됩니다.

저의 경우 웹로그에 데이터가 없어서 출력되는것이 거의 없습니다.

goaccess access_log --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^' --date-format=%d/%b/%Y --time-format=%T -a > /var/www/html/report.html

 

반응형
반응형

 

  • ELK 로그 수집을 위한 filebeat 설치

ELK에서 로그를 수집하기 위해 filebeat을 에이전트 노드에 설치해야 합니다.

* ELK 서버에 filebaet을 설치하지 않고 ELK서버가 로그를 수집하기 위한 대상 서버들에게 설치합니다.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.2-x86_64.rpm
rpm -vi filebeat-6.6.2-x86_64.rpm
systemctl start filebeat
systemctl enable filebeat

 

  • filebeat 로그 수집 설정 방법-1

위의 커맨드를 입력하여 설치 이후 filebeat modules list 를 입력하면 활성화된 모듈과, 비활성화된 모듈을 확인할 수 있습니다.

[root@test ~]# filebeat modules list
Enabled:

Disabled:
apache2
auditd
elasticsearch
haproxy
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
suricata
system
traefik

 

확인 하였다면 아래와 같이 filebeat modules enable apache2 를 입력하여 apache2 모듈을 활성화 시킨 후 filebeat modules list를 입력하고 재대로 활성화 되었는지 확인 합니다.

[root@test ~]# filebeat modules enable apache2
Enabled apache2
[root@test ~]# filebeat modules list
Enabled:
apache2

Disabled:
auditd
elasticsearch
haproxy
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
suricata
system
traefik

 

활성화된것까지 확인 했다면 filebeat setup -e 를 입력하면 초기 환경이 셋팅되는데 elasaticsearch와 커넥션이 맺어지질 않아 마지막에 에러를 발생 시키니 무시 합니다. 이후 vi 편집기를 이용해 /etc/filebeat/modules.d/apache2.yml를 연 뒤 아래 코드를 입력 해줍니다.

- module: apache2
  # Access logs
  access:
    enabled: true
    input:
      fields:
        server_name: test-web
        log_type: apache2_access
    var.paths: ["/var/log/httpd/access_log"]

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

  # Error logs
  error:
    enabled: true
    input:
      fields:
        server_name: test-web
        log_type: apache2_error
    var.paths: ["/var/log/httpd/error_log"]

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

 

  • filebeat 로그 수집 설정-2

vi 편집기로 /etc/filebeat/filebeat.yml 파일을 열은 후 아래를 참고하여 수집할 로그의 경로와 정보를 작성 합니다. fields의 server_name과 log_type은 이후 kibana에서 해당 키워드들을 이용하여 로그를 검색하거나 할 때 사용하므로 임의로 설정하시면 됩니다.

이 방법으로 설정할 시 위의 apache module은 필요 없으므로 filebeat modules disable apache2를 이용해 비활성화 시켜주시면 됩니다.

 

  • filebeat 마무리 설정

ELK 서버에게 전송할 로그들의 경로를 맞춰주고 server_name과 log_type을 이용해 kibana쪽에서 필터링을 할 수 있다고 하니 임의로 작성해 줍니다. 아파치 모듈 설정은 끝났으므로 vi 편집기로 /etc/filebeat/filebeat.yml 파일을 열고 filebeat 설정 파일을 수정 합니다.

초기 설정은 아래 이미지와 같이 되어 있는데, 변경할 부분은 빨간색 체크박스를 참고하여 로그 경로에 맞게 변경 하시면 됩니다.

초기 설정
초기 설정

 

변경 후 설정
변경 후 설정

마지막 Logstash output에 적힌 ELK-Server-IP는 ELK 서버의 IP를 작성 해주시면 됩니다. (ex. hosts: ["10.10.10.10:5044"])

이제 filebeat 서비스를 재시작하여 변경한 config들을 적용시켜주면 filebeat 설정은 끝납니다.

systemctl restart filebeat

 

반응형

+ Recent posts