徒然日記
2004年10月28日(木)
■ [net] 「電車男」、次は映画化?出版元にオファー殺到!
ΩΩΩ < な、なんだってー
■ [tdiary] Referer SPAMをiptablesでDROPするscript
yamkさんがTCPセッションを張らせた時点で敗北と言ってるのはもっともで
root権限を持ってるサーバーを運用してるならiptablesでDROPすべきだよねってことでscriptを書いてみました。
sh scriptでwgetで取ってきて〜って言うのでも良かったんだけど無駄にrubyで(笑
#!/usr/bin/env ruby require 'net/http' require 'timeout' # リモートから取得するDeny List # ['host','path','port'] で指定(portはoptional) REMOTE_DENY_LIST=['kazuhiko.tdiary.net','/tmp/black_ip.txt'] # リモートからDeny Listを取得 host, path, port = REMOTE_DENY_LIST if port port = port.to_i else port = 80 end limittime = 10 # 取得時のタイムアウト秒数 timeout( limittime ) do begin Net::HTTP.version_1_2 Net::HTTP.start( host, port ) do |http| response = http.get( path ) @spam = response.body end rescue Exception rescue $stderr.puts "#{$0}: #{$!.to_s}" end end # iptablesでIPをDROP @spam.each do |line| system( "iptables -A INPUT -p tcp -s #{line.chomp} --dport 80 -j DROP" ) puts "Deny access from \"#{line.chomp}\"" end
scriptの拒否IPリスト取得部分はえろぺおさんのtdiary filterを参考にさせてもらいました。
実行すると拒否IPリストをそのたびに取りに行って、iptablesを実行します
ちなみに、iptables -LするとDNSの逆引きをしてくれて時間がかかります。-nオプションを付けましょ〜
今後の野望は前田さんの、一定回数以上のRefererをSPAM認定するtdiary filterと拒否IPリストを組み合わせてiptablesで拒否することですかね。
■ [neta] ふじこ
記述方法 : [Q]に右手中指、[A]に右手人差し指を置き、左から右へスライドさせると表記できる。
(;・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェー
そういうことだったんだー
■ [news] 国旗・国歌「強制でないのが望ましい」天皇陛下が園遊会で
東京都教育委員を務める棋士の米長邦雄さん(61)から「日本中の学校で国旗を掲げ、国歌を斉唱させることが私の仕事でございます」と話しかけられた際、「やはり、強制になるということではないことが望ましい」と述べた。
米長さんは「もうもちろんそう、本当に素晴らしいお言葉をいただき、ありがとうございました」と答えた。
いや、いみわかんねーし(笑
■ [tdiary] Referer SPAMを(略)その2
やっぱり2回目以降の実行では重複して登録されていって、リストがドンドン肥大化するみたいなのでINPUT chainとは別のchainに設定して、それをクリアする、と言う風にしないとダメみたいだ
いろいろやってみたけど、iptables難しいよ…韓国 IP アドレスからのパケットを遮断するを大いに参考にさせてもらいましたやりたいことは同じだしね(苦笑
ついでにDROPしたパケットをsyslogで記録するように。あまりに鬱陶しいようだったらコメントアウトすればいいかな
"# iptablesでIPをロギングしてDROP"以降の行を下のように変えてください
# iptablesでIPをロギングしてDROP system( "iptables -D INPUT -p tcp --dport 80 -j FILTER") system( "iptables -F FILTER" ) system( "iptables -X FILTER" ) system( "iptables -F FILTERED" ) system( "iptables -X FILTERED" ) system( "iptables -N FILTER" ) system( "iptables -N FILTERED" ) @spam.each do |line| system( "iptables -A FILTER -p tcp -s #{line.chomp} -j FILTERED" ) puts "Deny access from \"#{line.chomp}\"" end system( "iptables -A FILTER -j ACCEPT") system( "iptables -A FILTERED -j LOG --log-level warning --log-prefix '[Referer SPAM] '") system( "iptables -A FILTERED -j DROP") system( "iptables -A INPUT -p tcp --dport 80 -j FILTER" )
本体もおいておきますね
■ [security] QucikTimeにも穴
アップデートすべし
■ [security] PuTTY β 0.56 ごった煮版
蛭子屋さんによるputty日本語化+設定ファイルini化+色々のバイナリが0.56にアップデート。security updateなのでサクッとアップデート
# yohgaki [2重登録されます。iptables -L -nの結果をIPアドレスでgrepしてから登録する方が良いかも。後ログが多..]