대량의 방화벽 로그 분석에 대해서 방안을 정리합니다. 보통 비공개 글이 많은데 너무 블로그에 글이 없어 지인의 지탄이 있어 공개로 작성합니다.

대량의 방화벽을 로그를 전용 솔루션 없이 그냥 분석하는 방안 중 하나입니다. 소량의 로그분석은 방화벽에서 검색하는게 매우 효율적이고 아래 내용과 맞지 않습니다. 이점 참고 바랍니다.

대량의 방화벽 로그를 전용 솔루션 없이 효율적으로 분석하기 위해서는 Binary Log를 Text로 변환하여 각종 Text 툴을 활용하는 방안이 가장 효율적인거 같습니다.

기본 적으로 SECUI의 방화벽 로그는 F/W에서 제공하는 전용툴인 logconv를 통해서 평문 Text로변환이 가능하지만 운영중인 온라인 F/W에서 대량의 로그(수개월치)를 변환한다는 것은 리스크가 매우 높습니다.

온라인에 영향이 없는 PC에서 방화벽 로그를 TEXT로 변환하는 방안에 대해서 알아 보겠습니다.

1. lzo 압축해제


MF2 방화벽의 로그는 확장자가 lzo 압축파일로 아래와 같이 저장이 됩니다.

fw4_allow_130527123338_130527171055.log.lzo

fw4_allow_130527171054_130528103445.log.lzo

fw4_allow_130528103445_130528151514.log.lzo

fw4_allow_130528151514_130529084110.log.lzo

fw4_allow_130529084110_130529132832.log.lzo

fw4_allow_130529132835_130529183556.log.lzo

fw4_allow_130529183605_130530120959.log.lzo

fw4_allow_130530121000_130530170314.log.lzo


lzo확장자를 압축해제하면 Binary Log 파일 획득이 가능

압축해제 명령어 : lzop.exe -d *.lzo

fw4_allow_130527123338_130527171055.log

fw4_allow_130527171054_130528103445.log

fw4_allow_130528103445_130528151514.log

fw4_allow_130528151514_130529084110.log

fw4_allow_130529084110_130529132832.log

fw4_allow_130529132835_130529183556.log

fw4_allow_130529183605_130530120959.log

fw4_allow_130530121000_130530170314.log

www.lzop.org 사이트 하단에서 windows(win32 console version) 다운받아서 압축 해제


2. Binary Log를 Text로 변환


MF2 장비부터는 기존과 다르게 Windows용 변환툴을 제공하지 않고 있어 별도로 변환툴을 제작해야 합니다.

※ Act 로그만 변환 가능


Logconv v0.41 of Secui MF2 3000 by N3015M INNOVATION at Shinhan Bank in May. 2013.


USAGE:

  Logconv.exe -i MF2logfile -o output_filename

OPTION:

-i       : binary log file of Secui MF2 firewall.

-o       : output filename, csv file format.

-nxg2000 : NXG2000 Firewall logfile.

-deny : Denied log file.(Only MF2)

-split : split an output file on each 7000000 lines for logparser.
 

예시) *.log는 지원하지 않음
logconv.exe -i fw4_allow_130527123338_130527171055.log
logconv.exe -i fw4_allow_130527123338_130527171055.log -o fw4_allow_130527123338_130527171055.csv
logconv.exe -nxg2000 -i act.log


Batch 로그변환 방법


dir /b *.log | gawk "system(\"logconv -i \"$1\" -o \"$2\".txt\")"


로그를 변환하면 다음과 같이 평문의 로그를 획득 가능합니다.

fw4_allow_130527123338_130527171055.log.txt

fw4_allow_130527171054_130528103445.log.txt

fw4_allow_130528103445_130528151514.log.txt

fw4_allow_130528151514_130529084110.log.txt

fw4_allow_130529084110_130529132832.log.txt

fw4_allow_130529132835_130529183556.log.txt

fw4_allow_130529183605_130530120959.log.txt

fw4_allow_130530121000_130530170314.log.txt

 


3. 평문로그 데이터 검색

일반적으로 기업에서 한달치 로그를 평문으로 변환하면 대략 100G정도의 Text파일 용량이 나옵니다. 고속 검색을 위해서 몇가지 방안이 있으나 여기서는 솔루션 없이 Text처리 툴로만 검색하는 방안에 대해서 언급하겠습니다.
(Hadoop이 좋을거 같은데 아직 구축 방법을 모르겠네요. 좋은 방안이 있으면 공유좀 해주세요)

- LogParser 를 이용한 분석
 
 

logparser "select * from *.log.txt" -i:csv -iHeaderFile:header.txt
(항상 대량의 CSV 파일로그를 Query하면 결과에 문제가 있네요. 이유는 모르겠네요ㅠㅠ) 


- SQLlite3 DB를 이용한 분석
 


SQLite DB의 설명에는 이론상 2^64 개의 Row를 입력 가능하나 최대 DB 용량은 14Terabyes임

schema 생성
sqlite3 fwlog.db "CREATE TABLE fwlog (start_time datetime,end_time datetime,duration int,rule_id int,nat_id int,src_ip varchar(15),src_port int,dest_ip varchar(15),dest_port int,send_packet bigint,rev_packet bigint,send_byte bigint,rev_byte bigint,etc varchar(255))"

평문로그 Import
sqlite3 -separator "," fwlog.db ".import 평문파일명 fwlog"
(되도록이면 10G 미만으로 넣으세요)

분석결과 Export
sqlite3 fwlog.db "select * from fwlog order by duration limit 10000" -csv > fwlog_session_top10000.csv
(이렇게 하면 세션유지 시간이 높은 10000개를 가져옵니다.) 


※ SQLite 최대 적재 용량

Maximum Number Of Rows In A Table


The theoretical maximum number of rows in a table is 2^64 (18446744073709551616 or about 1.8e+19). This limit is unreachable since the maximum database size of 14 terabytes will be reached first. A 14 terabytes database can hold no more than approximately 1e+13 rows, and then only if there are no indices and if each row contains very little data.


지금까지는 가공 방법에 대한 제시였으며, Big Data라고 한다면 필요한 데이터만 골라내서 Reduce를 해서 자료를 처리해야 효율적입니다.

간단하게는 통계, 집계 등을 사용해서 Summary된 Data를 생성하고 활용하는 방안 등이 있습니다.

여기부터는 각자가 아는 지식을 활용하면 방대한 양의 데이터를 모두 검색할 필요 없이 필요한 부분만 활용 할 수 있습니다.

- p.s
갑자기 필요해서 맨손으로 진행해야 해서 logconv를 만들었지만 혹시 꼭 필요한 분이 있을지도 모르겠네요. 많은 도움이 되길 바랍니다. 버그는 알려주시면 바로 수정해 드릴게요.
Posted by n3015m
:
BLOG main image
'네오이즘'의 보안LAB 블로그입니다........... n3oism@gmail.com by n3015m

카테고리

분류 전체보기 (228)
[ HappyDevTool ] (29)
[ HappyToolRelease ] (4)
[Book] (6)
[ Security Studies ] (0)
- CII (2)
- BigData (2)
- Web Hacking (10)
- SQL Injection (25)
- Mobile Security (9)
- Network (6)
- OperatingSystem (4)
- Malware & Reversing (4)
- Phishing (5)
- Compliance (0)
- Programming (13)
- Tools (13)
- IoT (6)
- etc (21)
[Pentration Testing] (3)
[OS X] (4)
[ Security Trends ] (16)
[ Fixing Guideline ] (7)
My Way, My Life (34)
About Me (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :