2010-12-14 3 views
1

저는 서버에서 여러 가지를 구문 분석하여 CSV 파일로 만드는 프로젝트를 진행하고 있습니다. 누구나 CSV로 표준 PIX/ASA 로그를 구문 분석 할 수있는 좋은 perl 스크립트 또는 gawk 문을 가지고 있습니까?CSV로 PIX/ASA 로그를 포맷하기위한 스크립트가 필요합니다

감사합니다.

+0

샘플 PIX/ASA 로그를 게시하십시오. 여기 누군가가 CSV로 변환하는 데 필요한 몇 줄의 Perl을 작성할 수 있습니다. – Narveson

+0

% PIX-7-710001 : 192.168.2.10/19067에서 외부로 TCP 액세스 요청 : 192.168.2.14/ssh % PIX-7-710005 : UDP 요청을 192.168.1.2/137에서 내부 192.168.1.255/netbios로 삭제했습니다. -ns % PIX-6-315011 : 사용자 "roo "에 대한 외부 인터페이스의 192.168.2.10에있는 SSH 세션이 SSH 서버에 의해 연결이 끊어졌습니다. 이유 : "TCP 연결이 닫혔습니다"(0x03) % DHCP-6-604103 : DHCP 데몬 인터페이스 내부 : 주소가 000c.29e4.ebc3 (12.168.1.3)으로 지정됨 – deFonza

+0

% PIX-6-605004 : 사용자 "root"에 대해 192.168.2.10/13269에서 192.168.2.14/ssh로 로그인이 거부되었습니다. % PIX-3- 305006 : TCP src에 대한 포트 맵 변환 생성 실패 : 192.168.1.2/2893 dst 외부 : 192.168.2.99/3128 % PIX-3-201008 : PIX가 새 연결을 허용하지 않습니다. % PIX-3-106011 : 수신 거부 (xlate 없음) udp src 외부 : 192.168.2.1/137 dst 외부 : 192.168.2.14/137 – deFonza

답변

1

필자는 공유 할 수없는 PIX/ASA 로그에 대한 사내 구문 분석을 작성하는 것을 도왔습니다. 예를 들어 모든 트래픽 관련 메시지에 대한 소스 및 대상 정보를 원했습니다. 각 메시지 코드를 개별적으로 파싱 한 모듈을 만들었습니다. 또 다른 장애물은 프로토콜 이름 및 name 선언과 같은 일부 정보가 로그의 번호 또는 IP가 아닌 별칭으로 표시된다는 것입니다. CPAN 모듈 PIX :: Walker는 이러한 문제를 해결하는 데 도움을 줄 수 있습니다.

당신이 원하는 모든 사용자가 사용할 수있는 심각도 코드 및 메시지 인 경우 :

#!/usr/bin/perl 

use strict; 

if (-e $ARGV[0]) { 
open(INFILE,$ARGV[0]); 
} else { 
die "Cannot open logfile $ARGV[0]\n"; 
} 

foreach my $line (<INFILE>) { 
chomp $line; 
if (/^%(ASA|PIX)-(\d{1})-(\d{6}): (.*)/) { 
    print "\"" . $1 . "\",\"" . $2 . "\",\"" . $3 . "\"\n"; 
} 
} 

는하지만이 있다면 당신은 내가 같은 설정으로 시스템 로그-NG와 MySQL을 사용하는 것이 좋습니다 것입니다 원하는 모든 :

options { 
     long_hostnames(off); 
     sync(100); 
     stats(43200); 
     use_fqdn(no); 
     keep_hostname(yes); 
     owner (nglog); 
}; 

source udpsource { udp(ip(0.0.0.0) port(514));}; 

parser asa { 
csv-parser(colunms("ASA_SEV", "ASA_CODE", "ASA_TXT") 
flags(escape-none) 
delimiters("-:") 
); 
}; 

destination d_sql { 
    sql(type(mysql) 
    host("logserver") username("syslog-ng") password("password") 
    database("logs") 
    table("ASAlogs") 
    columns("datetime", "host", "severity", "code", "message") 
    values("$R_DATE", "$HOST", "$ASA_SEV", "$ASA_CODE", "$ASA_TXT") 
    indexes("datetime", "host", "severity", "code")); 
}; 

log { source{udpsource}; 
    log {parser(asa); destination(d_sql)}; 
}; 

이렇게하면 보고서를 실행할 수있는 데이터베이스에 있습니다. 매우 간단한 PHP 또는 Ruby on Rails 웹 프론트 엔드를 만들 수도 있습니다.

관련 문제