14
Hachioji.pm #14 Lightning Talk @ytnobody

Hachiojipm 14 LT

Embed Size (px)

Citation preview

Page 1: Hachiojipm 14 LT

Hachioji.pm #14Lightning Talk

@ytnobody

Page 2: Hachiojipm 14 LT

今回のテーマ

浮気

Page 3: Hachiojipm 14 LT

浮気?!

Page 4: Hachiojipm 14 LT

そんなふしだらな奴には手痛いしっぺ返し!

Page 5: Hachiojipm 14 LT

今日は(サーバ的な意味で)浮気性なスクリプトキディたちに

門前払いを食らわせたお話をします。

Page 6: Hachiojipm 14 LT

自分の身は自分で守らないとね!

Page 7: Hachiojipm 14 LT

さくらvpsのnginxに大量の不審なアクセスログ

Page 8: Hachiojipm 14 LT

アクセス元はパチモンで名を馳せているあの国とかあの国とか

Page 9: Hachiojipm 14 LT

上等だ、アク禁してやる。

Page 10: Hachiojipm 14 LT

use strict;use warnings;

my $limit = 10;my $expire = 600;

my $cnt = {};my $addr;

while ( my $line = <STDIN> ) {   my @part = split /\s/, $line;   my $stat = $part[8];   $addr = $part[0];   next unless $addr =~ /^\d+?\.\d+?\.\d+?\.\d+$/;   next if $addr =~ /^127\./;   next unless $stat =~ /^4/;   $cnt->{$addr}->{cnt} ||= 0;   if ( $cnt->{$addr}->{cnt} < $limit ) {       $cnt->{$addr}->{cnt} ++;       $cnt->{$addr}->{time} = time();       if ( $cnt->{$addr}->{cnt} >= $limit ) {           `iptables -A INPUT -s $addr -j DROP`;       }   }   for $addr ( keys %$cnt ) {       if ( time - $cnt->{$addr}->{time} >= $expire ) {           delete $cnt->{$addr};           `iptables -D INPUT -s $addr -j DROP`;       }   };}

Page 11: Hachiojipm 14 LT

アクセスログを解析404を頻発させているIPアドレスを抽出

Page 12: Hachiojipm 14 LT

そうやって絞り出したIPをiptables で DROP DROP DROP!

Page 13: Hachiojipm 14 LT

今ではアクセスログがたまりすぎることなく平和に過ごしております

Page 14: Hachiojipm 14 LT

ご静聴ありがとうございました