CentOS 8 - AWStats FTP/메일로그 분석하기

CentOS 8 - AWStats FTP/MAIL Log Analysis

AWStats 경우는 스트리밍/메일/FTP 다양하게 로그 분석이 가능합니다. 스트리밍은 사용할 일이 없어 제외하고 메일 및 FTP를 추가로 로그 분석해보도록 하겠습니다. 방식은 같습니다. 다만 아파치나 IIS처럼 디폴트가 설정이 없기 때문에 LogFormat을 직접 설정해야 하는 부분이 있습니다.

 

들어가기 전

※ 이미 만들어져 있는 AWStats.#.conf 파일 열기(스크린샷 참고)

[root@localhost ~]# vim /etc/awstats/awstats.#.conf

[정리(번역기)]

※ 숫자 4번 아래부터 "사용자 고유의 로그 형식" = 로그가 FTP, 메일 또는 기타 형식인 경우 다음 키를 사용하여 로그 형식 문자열을 정의해야 합니다. [FTP, 메일 또는 다른 유형의 웹 로그 형식 예제는 FAQ 참조) 하면 됩니다.

quote 차이는 " ~ " (양쪽 따옴표) 포함(인용부)의 강조 의미로 받아들이면 됩니다.

 

# %host / Client hostname or IP address (or Sender host for mail log)

→ 클라이언트 호스트 이름 또는 IP 주소 (메일 로그에서는 발송자 호스트로 표시)

 

# %host_r / Receiver hostname or IP address (for mail log)

→ 수신자 호스트 이름 또는 IP주소 (메일 로그 전용)

 

%lognamequot / Authenticated login/user with format: "john"

→ 인증된 로그인 / 사용자 형식 : "john"

 

# %logname / Authenticated login/user with format: john

→ 인증된 로그인 / 사용자 형식 : john

※ 뒤 QUOT 차이는 " ~ " (양쪽 따옴표) 인용부의 강조 의미로 받아들이면 될 듯합니다.

 

# %time1 / Date and time with format: dd/mon/yyyy:hh:mm:ss +0000 or dd/mon/yyyy:hh:mm:ss

→ 날짜 및 시간 형식 [예시] : [26/10/2020:13:59:59 +0000] 또는 [26/10/2020:13:59:59]

 

# %time2 / Date and time with format: [yyyy-mm-dd hh:mm:ss]

→ 날짜 및 시간 형식 [예시] : [2020-10-26 13:59:59]

 

# %time3 / Date and time with format: Mon dd hh:mm:ss or Mon dd hh:mm:ss yyyy

→ 날짜 및 시간 형식 [예시] : [Mon 26 13:59:59] 또는 [Mon 26 13:59:59 2020]

 

# %time4 / Date and time with unix timestamp format: dddddddddd

→ 유닉스 타임스탬프 형식의 날짜 및 시간 [예시] : [1234567890]

※일반 시간으로 표시하기 위해서는 변환해야 함

 

# %time5 / Date and time with format iso: yyyy-mm-ddThh:mm:ss, with optional timezone specification (ignored)

→ 국제표준시간 ISO 형식의 날짜 및 시간 [예시] : [2020-10-26 13:59:59], 선택적 시간대 지정 (무시됨)

 

# %time6 / Date and time with format: dd/mm/yyyy, hh:mm:ss

→ 날짜 및 시간 형식 [예시] : [26/10/2020, 13:59:59]

 

%methodurl / Method and URL with format: "GET /index.html HTTP/x.x"

메소드 및 URL 형식 [예시] : "GET /index.html HTTP/1.1"

 

# %methodurlnoprot / Method and URL with format: "GET /index.html"

→ 메소드 및 URL 형식 [예시] : "GET /index.html"

 

# %method / Method with format: GET

→ 메소드 및 URL 형식 [예시] : GET

 

# %url / URL only with format: /index.html

URL 형식 [예시] : /index.html

 

# %query / Query string (used by URLWithQuery option)

쿼리 문자열 (URLWithQuery 옵션에서 사용)

 

# %code / Return code status (with format for web log: 999)

code 리턴 코드 상태 (웹 로그 형식 : 999)

 

# %bytesd / Size of document in bytes

문서 크기 (바이트 단위)


# %refererquot / Referer page with format: "http://from.com/from.htm"

참조 페이지 형식 [예시] : "http://from.com/from.htm"


# %referer / Referer page with format: http://from.com/from.htm"

→ 참조 페이지 형식 [예시] : http://from.com/from.htm

 

# %uabracket / User agent with format: [Mozilla/4.0 (compatible, ...)]

사용자 에이전트 형식 [예시] : [Mozilla/4.0 (compatible, ...)]


# %uaquot / User agent with format: "Mozilla/4.0 (compatible, ...)"

사용자 에이전트 형식 [예시] : "Mozilla/4.0 (compatible, ...)"


# %ua / User agent with format: Mozilla/4.0_(compatible...)

사용자 에이전트 형식 [예시] : Mozilla/4.0_(compatible...)


# %gzipin / mod_gzip compression input bytes: In:XXX

압축 입력 바이트 [예시] : In:XXX


# %gzipout / mod_gzip compression output bytes & ratio: Out:YYY:ZZpct.

→ 압축 출력 바이트 및 비율 [예시] : Out:YYY:ZZpct.


# %gzipratio / mod_gzip compression ratio: ZZpct.

압축 비율 : ZZpct.


# %deflateratio / mod_deflate compression ratio with format: (ZZ)

→ 압축 비율 형식 : (ZZ)


# %email / EMail sender (for mail log)

→ EMail 이메일 발신자 (메일 로그 전용)

 

# %email_r / EMail receiver (for mail log)

→ EMail 이메일 수신자 (메일 로그 전용)

 

# %virtualname / Web sever virtual hostname.

Use this tag when same log contains data of several virtual web servers.

AWStats will discard records not in SiteDomain nor HostAliases.

웹 서버 가상 호스트 이름. 동일한 로그에 여러 가상 웹 서버의 데이터가 포함된 경우에 태그를 사용합니다. AWStats는 SiteDomain 또는 HostAliases에 없는 레코드를 삭제합니다.

 

%cluster / If log file is provided from several computers (merged by logresolvemerge.pl),

use this to define cluster id field.

→ 로그 파일이 여러 컴퓨터에서 제공되는 경우 (logresolvemerge..pl에 의해 병합됨), 이를 사용하여 클러스터 ID 필드를 정의합니다.

 

%extraX / Another field that you plan to use for building

a personalized report with ExtraSection feature (See later).

→ ExtraSection 기능을 사용하여 개인화된 보고서를 작성하는 데 사용할 또 다른 필드입니다 (나중에 참조).

 

※ 로그 형식에 위 목록에 포함되지 않은 일부 필드가 있는 경우 다음 Key를 이용.

# %other / Means another not used field

사용되지 않는 다른 필드를 의미합니다.

# %otherquot / Means another not used double quoted field

→ 사용되지 않은 다른 큰 따옴표 필드를 의미합니다.

 

※ 로그 형식에 데이터 필드 앞에 오는 literal strings 이 있는 경우 다음 Key를 이용.

status=%code / Means your log files have HTTP status logged as

"status=200" Literal strings that follow data field must be separated from said data fields by space.

로그 파일에 "status = 200"으로 기록된 HTTP 상태가 있음을 의미합니다. 데이터 필드를 따르는 리터럴 문자열은 해당 데이터 필드와 공백으로 구분해야 합니다.


AWStats FTP 설정

[root@localhost ~]# cd /etc/awstats/  (경로 이동)

 

※ 이미 설정으로 만들어진 파일을 복사하여 이름만 변경합니다.

[root@localhost ~]# cp awstats.foxydog11.com.conf awstats.ftp.conf (파일 복사 및 이름 변경)

[root@localhost ~]# vim awstats.ftp.conf  (파일 수정)

 

     52 LogFile="/var/log/xferlog"  [FTP 로그 (디폴트) 경로 잡아주기]

 

     ※ 예시 참고

     57 #  W - For a web log file [웹 로그]
     58 #  S - For a streaming log file [스트리밍 로그]
     59 #  M - For a mail log file [메일 로그]
     60 #  F - For an ftp log file [FTP 로그]

     64 LogType=F  [FTP로 변경]

 

    ※ FTP의 경우는 로그 형식을 직접 맞춰줘야 합니다. (xferlog 확인해보면)

  Fri Oct 23 15:06:28 2020 1 ::ffff:124.111.208.234 0 /BMP1.bmp b _ i r test ftp 0 * i

  로그가 쌓이며 아래와 같은 로그 형식으로 변경해줘야 AWStats에서 인식합니다.

 

    123 LogFormat = "%other %time3 %other %other %host %bytesd %url %other %other %method %other %host %code %other %other %other"  [(#)주석 해제 후 다음과 같은 Key 설정]

 

    128 #LogFormat=1  [(#)주석 처리]

 

    159 SiteDomain="FTP"  [본인 서버 IP 또는 호스트 이름 변경]

 

    174 HostAliases="FTP 127.0.0.1 localhost"  [본인 서버 IP 또는 호스트 이름 변경]

[root@mail awstats]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=ftp -update  (설정 업데이트)

Create/Update database for config "/etc/awstats/awstats.ftp.conf" by AWStats version 7.8 (build 20200416)

From data in log file "/var/log/xferlog"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 43)
Jumped lines in file: 43
 Found 43 already parsed records.
Parsed lines in file: 0
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 0 new qualified records.

웹 URL 확인 : http://localhost/awstats/awstats.pl?config=ftp  [스크린샷 참고]

※ 테스트 서버는 로그 수집이 적어 공식 사이트에서 제공하는 테스트 페이지를 직접 확인하시면 됩니다.

공식 사이트 FTP 데모 페이지 : https://awstats.sourceforge.io/awstats.ftp.html

( 다만 데모 페이지는 상당히 예전 버전이라 약간의 인터페이스 차이가 발생할 수 있습니다. )

 

 

AWStats 메일 설정

[root@localhost ~]# cd /etc/awstats/  (경로 이동)

 

※ 이미 설정으로 만들어진 파일을 복사하여 이름만 변경합니다.

[root@localhost ~]# cp awstats.foxydog11.com.conf awstats.mail.conf  (파일 복사 및 이름 변경)

[root@localhost ~]# vim awstats.mail.conf  (파일 수정)

 

     ※ 메일의 경우는 메일 컨버터 파일을 이용해야 AWStats 통계가 제대로 나옵니다.

     ※ AWStats 툴 경로 확인(/usr/local/awstats/tools)

     52 LogFile="perl /usr/local/awstats/tools/maillogconvert.pl standard < /var/log/mail.log |"

     [메일(Postfix) 로그 잡아주기]

 

     ※ 예시 참고

     57 #  W - For a web log file [웹 로그]
     58 #  S - For a streaming log file [스트리밍 로그]
     59 #  M - For a mail log file [메일 로그]
     60 #  F - For an ftp log file [FTP 로그]

     64 LogType=M  [해당 설정]

 

    ※ MAIL의 경우는 로그 형식을 직접 맞춰줘야 합니다. (maillog 확인해보면)

Oct 13 03:36:10 mail postfix/smtpd[18172]: NOQUEUE: reject: RCPT from unknown[IP]: 454 4.7.1 <메일주소>..

    로그가 쌓이며 아래와 같은 로그 형식으로 변경해줘야 AWStats에서 인식합니다.

 

    123 LogFormat = "%time2 %email %email_r %host %host_r %method %url %code %bytesd"

    [(#)주석 해제 후 다음과 같은 Key 설정]

 

    128 #LogFormat=1  [(#)주석 처리]

 

    158 SiteDomain="mail"  [본인 서버 IP 또는 호스트 이름 변경]

 

    173 HostAliases="mail 127.0.0.1 localhost"  [본인 서버 IP 또는 호스트 이름 변경]

[root@mail awstats]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mail -update  (설정 업데이트)

Create/Update database for config "/etc/awstats/awstats.mail.conf" by AWStats version 7.8 (build 20200416)

From data in log file "perl /usr/local/awstats/tools/maillogconvert.pl standard < /var/log/maillog-20201018 |"...

Phase 1 : First bypass old records, searching new record... 
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 4
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 4 new qualified records.

웹 URL 확인 : http://localhost/awstats/awstats.pl?config=mail  [스크린샷 참고]

※ 테스트 서버는 로그 수집이 적어 공식 사이트에서 제공하는 테스트 페이지를 직접 확인하시면 됩니다.

공식사이트 FTP 데모 페이지 : https://awstats.sourceforge.io/awstats.mail.html

( 다만 데모페이지는 상당히 예전 버전이라 약간의 인터페이스 차이가 발생 할 수 있습니다. )

 

마치며

AWStats는 이 정도만 해도 반이상은 먹고 들어갈 수 있습니다. 윈도우도 가능하나 개인적으로 라인선스를 따로 가지고 있지 않아 설치는 가능하다고 해도 라이선스 적용하지 않는 이상 추가 서비스를 이용하지 못하기 때문에 미루고 있는 상황입니다. 기회가 된다면 따로 포스팅하도록 하겠습니다.

이 글을 공유하기

댓글(0)

Designed by JB FACTORY