2012-02-27 16 views
-2

tcpdumpopenbsdの下に使用するスクリプトを、ファイアウォールの監視よりも書き込もうとしています。DDOS perlスクリプト

rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 1, length 64 
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 2, length 64 
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 3, length 64 
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 4, length 64 
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 5, length 64 
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 6, length 64 
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 7, length 64 
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 8, length 64 

IP 88.198.46.51しようとしているDoS攻撃:送信元IPアドレスは、tcpdumpの出力からライン[ラインの重複を]エブリーに等しい場合 私の目標は、たとえば、アラートをgenereateすることです。 これまでのところ、私のコードは:

あなたのサンプル入力で
open(SNIFF, "/usr/sbin/tcpdump -s 1024 -enlti pflog0 |"); 
while(<SNIFF>){ 
     $|++; 
     $_ =~ /(\d+.\d+.\d+.\d+)(.)(\d{2,5}) (>) (\d+\.\d+\.\d+\.\d+)(.)(\d{2,5})/; 
     my ($sip, $port) = ($1, $7); 
     my $bad_ip = $sip; 
     if($bad_ip eq $p_ip){ 
      $count++; 
      if($count >= 8 && $print){ 
       print "Attack Detected: $sip\n"; 
          system("echo $sip"); 
          #system("/sbin/pfctl -f /etc/pf.conf"); 
          $print = 0; 
      } 
+1

あなたの質問がありますか? – geoffspear

+0

私のコードは動作していません!あなたは私に方向を教えてくれますか?ありがとう! – Raid5

+0

ここで、あなたは$ p_ipを設定していますか? – John

答えて

2

、私はあなたの正規表現の最初の部分と一致する単一の行が表示されない:私はと予想することを、

/(\d+\.\d+\.\d+\.\d+)(\.)(\d{2,5})/ 

(注場合\d+\.\d+.だけではなく、ドット付き小数点を探しています)。

(\d+\.\d+\.\d+\.\d+)はあなたの入力と一致させることができますが、残りは一致しません。それがあなたの問題です。