Googleにもアクセス拒否され、スパム送信源と化した「libwww-perl」とは?
スパム対策をして気がついたのですが、どうやらスパムトラックバックを送信してくるリモートホスト(IPアドレスなど)はバラバラであっても、ユーザーエージェント、いわゆるブラウザの名称部分に「libwww-perl/5.805」というように「libwww-perl」と入っているものが多く、結果として、Googleなどは検索結果ページに対してこのユーザーエージェント名の一部「libwww」が含まれているとアクセス拒否しているようです。
ネット上で調べてみると、かなり多くの人が「libwww-perlはスパム送信ボットだ」と思っているらしいので、その正体を探ってみます。実際にはスパム送信のためのものではないです。どんなものでも悪用されると悲劇が起きるという例になってしまっています。
詳細は以下の通り。
まず最初に、「libwww-perl」がスパム発生器と化している状況は検索すれば国内や海外含めて山のように出てきますが、大体以下のような感じです。
libwww-perl は不正アクセス専門ツールと化した (´Α`)キエロヨ | Linux - P-SOC
藍青 | トラックバックスパム多すぎ…
Google Analyticsのカウント漏れとトラックバックSPAMの手口
では実際には「libwww-perl」とは何に使うものなのかというと、こんな感じ。
LWP - Wikipedia
libwww-perlの略称、およびそのモジュール名。PerlでHTTPユーザーエージェント(Webブラウザやクローラーなど)を実装する際に用いる。
というわけで、Perlを使っていろいろと便利なことをするために用意されているものなわけです、本当は。
Gisle Aas / libwww-perl-5.805 - search.cpan.org
しかし、トラックパックスパムを送信するようなボットがPerlで作られている場合、作成が簡単なため、ページの取得(GET)とトラックバックの送信(POST)をこの「libwww-perl」を使って行っているケースが非常に多く、結果としてユーザーエージェント名の行頭に「libwww-perl」とか「libwww」が入ってしまい、スパムボットとしてアクセス拒否する……というケースが多くなっているようです。
その代表的な例が最初にも書いたGoogleで、ユーザーエージェント名に「libwww」が入っていると検索結果画面がことごとく「403 Forbidden」エラーを吐いてくれるようになります。
さらにいろいろ調べてみると、どうやら「libwww-perl」を使って任意のフレーズを辞書攻撃のようにどんどんGoogleに入れて検索、検索結果に出てきたページのアドレスを取得し保存してリスト化、それらのページリストからトラックバック送信先リストを作成して一気にどかっとスパムトラックバックをスパム業者が送信しているようです。また、トラックバックだけでなく、スパムコメントなども同様の仕組みで行われている模様。このスパム送信方法を世界中のスパム業者が行っているらしく、Googleがついにアクセス規制するに及んだ……というのが推測される大まかな経緯です。
なお、Firefoxの場合は「User Agent Switcher Extension」を使うと簡単にUser Agentを切り替えて体験することが可能です。
また、ユーザーエージェント名に「libwww」が入っている場合に拒否する仕組み自体は、httpd.confか.htaccessに
SetEnvIf User-Agent "^libwww" deny_ua
Order allow,deny
Allow from all
Deny from env=deny_ua
と書くだけでOKなので割と簡単。これでGoogleみたいにアクセスを拒否することができます。最近はスパムを送信するIPアドレスと、スパムを送信するためにページを取得するボットのIPアドレスが別々なので、単純にユーザーエージェント名で規制するこの方法でも割と大部分に対して通用するようです。とはいうものの、数ヶ月も経過しないうちにいたちごっこで陳腐化してしまうのは目に見えていますが……。
ただ、この規制を行ってしまうと、ボット以外の有益な本来の利用方法で「libwww-perl」を動かしているものまで規制することになります。そのため、悪用ではなくまっとうな利用方法を「libwww-perl」を使って行う場合には、ちゃんと別のユーザーエージェント名を設定した方がよいのかもしれません。「libwww-perl」でユーザーエージェント名を設定する方法は以下にあります。
LWP::UserAgent - Webデータの取得
その際にGoogleボットのように身元(運営元)を明記しておくと、スパムボットと勘違いされなくて良いかもしれません。
・関連記事
最強の呼び声高いブログ用対スパムプラグイン「Akismet」 - GIGAZINE
コメントスパム対策として、ニセのコメントフォームを設置する - GIGAZINE
トラックバックスパムよけにも使える「mod_security」 - GIGAZINE
・関連コンテンツ