YY-BOARD新バージョンでのスパム対策

2022年5月16日

2022/5/16(月) 00:00 ~ 09:00にコアサーバー(coreserver.jp) 最新・高速サーバーへの移転メンテナンスが行われました。
それ以降、CGIで動作している掲示板(YY-BOARD)が従来のバージョンが動作しなくなりました。

掲示板自体がある意味では時代遅れになってしまっていますが、それでもスパム投稿はあります。
YY-BOARDの新バージョンでは画像を見て数字を入力させるなど、スパム対策は強化されているのですが、すり抜けるスパム投稿はあります。

YY-BOARDが新バージョンに変わった事に伴い、YY-BOARD spam 対策改造も利用できなくなりました。残念です。
CGIの知識も中途半端にしか持ち合わせていないので、自分で触れる部分はごくわずかです。

とりあえず、init.cgiの設定で、

スパム対策に画像認証を使用する場合の設定1にしておきます。
$cf{use_captcha} = 1;

# 投稿があるとメール通知する (sendmail必須)の設定を# 1 : 通知するにしておきます。
$cf{mailing} = 1;

# URLの自動リンク (0=no 1=yes)をnoにします。
$cf{autolink} = 0;

# 投稿制限(セキュリティ対策)を1 : 同一IPアドレスからの投稿間隔を制限するにします。
$cf{regCtl} = 1;

# 制限投稿間隔(秒数)を60秒にします
$cf{wait} = 60;

# 日本語チェック(投稿時日本語が含まれていなければ拒否する)を1=Yesにします。
$cf{jp_wd} = 1;

# URL個数チェック 投稿コメント中に含まれるURL個数の最大値を2にしました
$cf{urlnum} = 2;

2022年7月24日

掲示板(YY-BOARD)を新バージョンに更新してから、メール通知でホスト名は記載されるのですがIPアドレスが記載されなくなりました。
ホスト名からIPアドレス を取得する方法はあるのですが、他のサイトに行って変換したりしなければいけないので面倒です。
以前のように最初からIPアドレスを記載された方が便利です。
そもそも、なんでIPアドレスの取得が必要かというと、迷惑投稿をはじく場合に必要なんです。

メールにIPアドレスの通知を入れるように改造しました。

regist.cgiを改造します。

メール送信の部分で

#———————————————————–
# メール送信
#———————————————————–
sub mail_to {
my ($date,$host) = @_;

の部分を

#———————————————————–
# メール送信
#———————————————————–
sub mail_to {
my ($date,$host,$addr) = @_;

に変更します。

投稿日:$date
ホスト:$host

の下に1行追加して

投稿日:$date
ホスト:$host
IPアドレス:$addr

に変更します。

ついでに、ログにもIPアドレスを記録して、管理画面にもIPアドレスを表示するように改造しました。

regist.cgiを改造します。

unshift(@data,”$no<><>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$crypt<>$in{color}<>$icon[$in{icon}]<>\n”);
unshift(@data,”$no<>$addr<>$time<>\n”);

の全てに <>$addr を加えて

unshift(@data,”$no<><>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$addr<>$crypt<>$in{color}<>$icon[$in{icon}]<>\n”);
unshift(@data,”$no<>$addr<>$time<>\n”);

に変更します。

push(@data,”$no<>$in{reno}<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$crypt<>$in{color}<>$icon[$in{icon}]<>\n”);

の全てに <>$addr を加えて

push(@data,”$no<>$in{reno}<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$addr<>$crypt<>$in{color}<>$icon[$in{icon}]<>\n”);

に変更します。

my ($no,$reno,$date,$name,$eml,$sub,$com,$url,$host,$pw,$col,$ico) = split(/<>/);

に $addr を加えて

my ($no,$reno,$date,$name,$eml,$sub,$com,$url,$host,$addr,$pw,$col,$ico) = split(/<>/);

に変更します。

$_ = “$no<>$reno<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$pw<>$in{color}<>$icon[$in{icon}]<>\n”;

の全てに <>$addr を加えて

$_ = “$no<>$reno<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$addr<>$pw<>$in{color}<>$icon[$in{icon}]<>\n”;

に変更します。

admin.cgi を改造します。

my ($no,$reno,$date,$name,$eml,$sub,$com,$url,$host,$pw,$col,$ico) = split(/<>/);

に $addr を加えて

my ($no,$reno,$date,$name,$eml,$sub,$com,$url,$host,$addr,$pw,$col,$ico) = split(/<>/);

に変更します。

$_ = “$no<>$reno<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$pw<>$in{color}<>$icon[$in{icon}]<>\n”;

の全てに <>$addr を加えて

$_ = “$no<>$reno<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$addr<>$pw<>$in{color}<>$icon[$in{icon}]<>\n”;

に変更します。

print qq|<b class=”sub”>$sub</b> 名前:<b>$name</b> 日時:$date [$host]\n|;

に [$addr] を加えて

print qq|<b class=”sub”>$sub</b> 名前:<b>$name</b> 日時:$date [$host][$addr]\n|;

に変更します。

2022年8月2日

頻度は少ないけど、凄く文字化けしているスパム投稿があります。
その場合には、メールでの通知もありません。
掲示板のロゴファイルの最終更新日を表示してあるのですが、それを見て初めて気づくという感じです。
正式な手順を踏んでの投稿では無くて、直接にログファイルに書き込んでいる感じです。
ひょっとしたら、ShiftJISで書き込んでいるのかもしれません。
不思議です

2022年8月15日

スパム投稿防止のために .htaccess で特定IPアドレスのアクセスを制限しているのですが、何故か正常に動作していませんでした。

通常、 .htaccess に deny from 123.456.789.000 に記述すれば、IPアドレス123.456.789.000のアクセスを禁止できるのです。
いろいろ調べたら、 .htaccess の最後の行に空白の行を入れないといけないのを、怠っていたのが原因だったようです。
これで、とりあえず禁止したIPアドレスからのアクセスは無くなりました。

IPアドレス逆引きで調べると、スパム投稿のほとんどは、海外からのアクセスのようです。
最終手段として考えているのは、.htaccessで日本からのアクセス以外の禁止です。
全てのアクセスを禁止した上で、日本のサーバーだけを例外としてアクセスを許可するという設定のようです。

2022年8月28日

相変わらず、スパム投稿はあります。
通知メールは来たり来なかったりです。

アドレスは必ず2個入っているので、
# URL個数チェック 投稿コメント中に含まれるURL個数の最大値の設定を2にしてあるのは効いているようです。
URL個数の最大値の設定を2から1に変更しました。
$cf{urlnum} = 1;

ログを調べると

2630<><>2022/08/28(Sun) 03:06<>ehrwxyyx<>zhdheapz1980@gmail.com<>–Œê‚ªŠÜ禁odn<>–{Œê‚ªŠÜ禁<br> https://****.org/content/probalan-best-price-generic http://****.ru/info/voltaren-buying-generic-w7ze3<><>185.253.162.12<>185.253.162.12<>Sjv9GT0vVtQ6s<>0<>bear.gif<>
2629<><>2022/08/28(Sun) 01:32<>sqsekp<>fmbsoag1975@gmail.com<>–Œê‚ªŠÜ禁pfleh<>–{Œê‚ªŠÜ禁<br> http://www.****.ru/node/28762 https://****.net/vasotec-how-purchase<><>unn-143-244-54-140.datapacket.com<>143.244.54.140<>t9CvrLXw/lFnc<>0<>bear.gif<>
2628<><>2022/08/27(Sat) 22:32<>twtsmgo<>tfjwmjje1977@hotmail.com<>–Œê‚ªŠÜ禁slizt<>–{Œê‚ªŠÜ禁<br> http://****.hu/alesse_generic_comparable_to https://****.net/discussion/avapro-safe-online-pharmacy<><>154.6.130.141<>154.6.130.141<>mmtAjSv9QTZ/E<>0<>bear.gif<>
621<><>2022/08/28(Sun) 10:07<>rdmdaqpt<>fforwhk1979@gmail.com<>–Œê‚ªŠÜ禁iwbub<>–{Œê‚ªŠÜ禁<br> http://****.ru/forum/feldene-how-order-0 https://****.com/lesson/602895/avana-purchase-north-dakota<><>140.228.24.120<>1GawP52sC5R9E<>0<>bear.gif<>
620<><>2022/08/28(Sun) 02:02<>wrwnaplg<>desgpnk1975@hotmail.com<>–Œê‚ªŠÜ禁igzs<>–{Œê‚ªŠÜ禁<br> http://www.****.ru/node/28762 http://****.ru/info/voltaren-buying-generic-w7ze3<><>94.156.14.23<>gWFNhDfHkmRW6<>0<>bear.gif<>

必ず禁が入っています。
ꂪŠÜ禁 と 禁<br> http を禁止ワードに登録しました。
# 禁止ワード
# → コンマで区切って複数指定(例)$cf{no_word} = ‘アダルト,出会い’;
$cf{no_wd} = ‘ꂪŠÜ禁,禁
http’;

2022年9月3日

1週間スパム投稿が止まっています。

2022年9月9日

久しぶりにスパム投稿がありました。
.htaccess で deny from 123.456.789.000 に記述済のIPアドレスでした。
.htaccessをUTF-8で保存しなおしてアップロードしておきました。
念のため、MovableTypeでの禁止IPアドレスにも登録しておきました。

2022年9月26日

今のところ、完全にスパム投稿が止まっています。

コメントを残す

メールアドレスが公開されることはありません。