2010-12-14 176 views
1

私は、サーバー上のさまざまなコードをcsvに解析するプロジェクトを進めています。誰もCSVへの標準PIX/ASAログを解析できる良いperlスクリプトやgawkステートメントを持っていますか?CSVへのPIX/ASAログをフォーマットするためのスクリプトが必要

ありがとうございました。

+0

サンプルPIX/ASAログを投稿してください。ここで誰かがCSVに変換するために必要な数行のPerlを書いてくれます。 – Narveson

+0

%PIX-7-710001:TCPアクセスが192.168.2.10/19067から外部に要求されました:192.168.2.14/ssh %PIX-7-710005:192.168.1.2/137からUDP要求が192.168.1.255/netbiosに破棄されました-ns %:PIX-6-315011:SSHサーバによってユーザ "roo "の接続が切断された192.168.2.10からのSSHセッション、理由: "TCP接続が閉じました"(0x03) %DHCP-6-604103:DHCPデーモンインターフェイス内部:アドレスに000c.29e4.ebc3(12.168.1.3)が割り当てられました – deFonza

+0

%PIX-6-605004:ログインが192.168.2.10/13269から外部へ:192.168.2.14/sshがユーザー "root"に対して拒否されました %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"; 
} 
} 

しかし、それはあなたが望むすべてだ場合、私はのような設定ではsyslog-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のWebフロントエンドを作成することもできます。

関連する問題