【荒らしお断り】 BBQを組み込んでる人【システム】
簡単に串を排除できるBBQ。使ってる?
BBQ
http://bbq.uso800.net/
組み込み例
#################################################################################################
#
#################################################################################################
sub checkProxyList
{
my $RADDR = $ENV{'REMOTE_ADDR'};
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.niku.2ch.net";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
if ($addr eq '127.0.0.2')
{
DispError("ERROR!","公開PROXYからの投稿は受け付けていません!!(1)");
}
return 0;
}
#################################################################################################
#
#################################################################################################
>>266
それ優しいかもしれないけど
表示毎にBBQに負荷がかかる恐れあり >>268
>>32を何行目に入れたらいいかわからないんだけど… 肉2chにローカルIPが登録されたせいで、
ブログにローカルからコメントができなくなったんだが、
192.168.x.xってアドレスはスパムになりえるの? お前さんにはローカルでも2chからみたらグローバルIPだろw
だから焼かれてるのはローカルじゃない。 いくつか登録されてるけどIP詐称関係だったか何だったか忘れた。
>>272は自分が使うIPだか /^192\.168\./ だかのときは
チェックしないようにすればいいよ。
>>274
1.1.168.192.niku.2ch.net も当たりくじ。 うぅむ、、、外した方がよい?>192.168.0.0/24とか >>274
いや、グローバルIPとして、192.168.x.xは使え得るのかが気になった。
>>273,275
おーけーありがと。
このIPだけ許可してみる。 10.
172.16-32.
127.0.0.1
192.168.
をBBQから外しておきました。 一応、アドレス詐称攻撃(Spoofing attack)ってのがあるから
外から>>278のアドレスで接続してくるかもしれない。
んだけど、グローバルIPを割り当ててあるIFに対しては
ローカルIPアドレスからの送受信は行わないようにFWで
蹴落としているのが普通だよね。 ホワイトリスト化とかなんかBBQを使った応用とかしてる人いる? >>282
BBQをホワイトリストにしても意味は無い。
同様の仕組みをホワイトリスト用に使ってはいるけど。 >>226
if($ENV{REQUEST_METHOD} eq "POST") {
...
}
として、POSTの場合のみ拒否するようにしておけば、それなりに実用かもしれない。
ちなみに、DNSの情報はキャッシュされるので、>>269 のようなことはない。
(直接利用されるDNSサーバには負荷がかかるが。)
ちょっとBBQとは違う話になるが、IPアドレス割り当てを参照してJP以外を弾くのも場合によっては悪くないかも。
ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest
ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest >>289
コメントなどBBSへの書き込みはそれでいけるかもしれんが、
トラックバックなど鯖から飛ばす分は、海外設置鯖も多いので
それを排除してしまっていいのかどうか...
>>290
俺はkrfilter(iptables)を入れてて気にならないけど、
スクリプトだと厳しいかもね。 >>258をサイトトップに置いてつかってんだけどBBQ側にアクセスログ見られまくり? これどうやって規制リスト取るんですか?
niku.2ch.netってサーバがないみたい・・・ >>294
そのままぶち込んでも動かないと思っていましたが、
上の方で場所にもよるみたいな書き込みがなされていましたね。
読んでいなくてすみません、ありがとうございます。読み直してきます。 toshinariスクリプトにいれるときはどうすればいいのかな? 「とかげの尻尾切り」のスクリプトって公開されてないのでしょうか? HOST:p2009-ipbf911funabasi.chiba.ocn.ne.jp
まちBBSはDSBL、BBQ、BBXだけじゃなくてポートチェックとか
ほかにも何かいろいろやってるんですか?
2chよりもプロキシ対策が強いみたいですが
また弊害とかありますか BBQって#!/usr/local/bin/perl の下に追加すれば基本的に動くんですか?
あと、掲示板の場合bbs.cgiのような所に入れた方が良いんでしょうか? >>298
あれは恐らくApacheのモジュールだから
公開するの難しいんじゃね?
>>301
そのまま組み込んでも何も意味無い。
ってかその掲示板によって色々と変更箇所があるし・・・。
とりあえず初めから読めば有力情報があるはず。 >>303
サンクス。
>>266界隈の入れてみた。
うまく動作しているかは分からないが・・・ >>304
自分で適当なプロクシ通して試せばいいじゃないか。 >>304
素直に32を適当なところに入れれば楽じゃないか?
そのあとにプロキシ通してみりゃいいと思うよ。 掲示板とか置いてないけどトップページにこれ組み込んでおいてプロクシ使ってくる奴全部弾いてる きもちええわー
串使ってくる奴って大体ろくな理由じゃない奴が殆どだからな あれ? これもう死んでる? x.x.x.x.niku.2ch.netが見つからん。
普通に索けるが。
% host -t a 125.48.89.70.niku.2ch.net.
125.48.89.70.niku.2ch.net has address 127.0.0.2
DSBLとDNSBLを入れようと思うのですが、
これであってますか?
また、ふつうの携帯が弾かれるとか、fusianasanしてないホストが弾かれるとか、
思わぬデメリットはありますか?
#-------------------------------------------------
# DSBLシステム (公開Proxy排除機能)
#-------------------------------------------------
sub checkProxyList2 {
my $RADDR = $ENV{'REMOTE_ADDR'};
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.list.dsbl.org";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
if ($addr eq '127.0.0.2') { &error("公開Proxyからの投稿は許可されていません"); }
}
#-------------------------------------------------
# DNSBLシステム (公開Proxy排除機能)
#-------------------------------------------------
sub checkProxyList3 {
my $RADDR = $ENV{'REMOTE_ADDR'};
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.http.dnsbl.sorbs.net";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
if ($addr eq '127.0.0.2') { &error("公開Proxyからの投稿は許可されていません"); }
}
--------------書き込み処理に追加----------------
# DSBLとDNSBL
&checkProxyList2;
&checkProxyList3; sub checkProxyList {
my $server = shift;
my $RADDR = $ENV{'REMOTE_ADDR'};
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.$server";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
if ($addr =~ /^127\.0\.0\./) { &error("公開Proxyからの投稿は許可されていません"); }
}
ってやれば
&checkProxyList("list.dsbl.org");
&checkProxyList("http.dnsbl.sorbs.net");
と関数1個で済む。あと利用するモノによっては127.0.0.2じゃないのも
返す場合があったと思うので、その点もいじっておいた。
DNSBLの類も万能じゃないので、誤爆とかはありうる。 >>311
俺は>>310じゃないけど
&checkProxyList("niku.2ch.net");
ってやればBBQにもなるって事でおk?
っつかBBQとDSBL、DNSBLって使い分けとかした方がいいの?
よく3つの違いが分からねえ >>311
ありがとうございます。
早速書き換えました。
上記の関数に
# BBQ DSBL DNSBL BBX
&checkProxyList("list.dsbl.org");
&checkProxyList("http.dnsbl.sorbs.net");
&checkProxyList("bbx.2ch.net");
&checkProxyList("niku.2ch.net");
で対応してみました。 >>312
上半分は当たり。>>313見りゃわかるか。
使い分け、ねぇ。
何をやらかせばそれぞれのリストに入るのかを調べればいいんじゃないかな?
BBQの場合は「逆引き未設定なだけです」がリスト内にいたりする。 >>314
ふむ。
調べてみたけどDSBLとBBQは同じものと考えちゃっていいんだ。
BBXは業者系のリストでDNSBLがスパム系のリストでおk? 新鮮さを求めるのなら、list.dsbl.org.を直で叩くと良いかと♪
如何せん量が甚大なんで、BBQでは鮮度が落ちてしまいます。
そして、DSBLのそのほとんどが腐乱しているっていうのも現実だったり(哀) BBQすげーな、書き込める串で書き込んだら3分くらいで串判定出て弾かれた 素人したらば管理人なんですが、どれをどこに組み込めばいいのでしょうか? デフォルト設定は知らんが投稿規制のカテゴリにある。 >>319
「Proxy用PORTが開いているホストからの投稿禁止」にチェック入れちゃうと投稿者が自宅WWWサーバ動かしてたりした時に書きこめないから注意な。
ProxyまわりはBBQだけで通常は十分。 >>320-323
ありがとうございました。助かります。 掲示板じゃなくてアクセス自体をPHPで弾きたくてさ >>327
そんなもん>>7見りゃすぐだろ。
それも出来ないようなら諦めろ <?php
function checkProxyList()
{
$raddr = explode(".", $_SERVER['REMOTE_ADDR']);
$query_addr = "$raddr[3].$raddr[2].$raddr[1].$raddr[0].niku.2ch.net";
if (gethostbyname($query_addr) == '127.0.0.2')
return 0;
}
?>
index.htmlをindex.phpにして一番上にこれ入れてみたけど串でアクセスしても素通りしてしまうなあ
cgi版はちゃんと弾かれたんだが >>329
そういう使い方をしたいのなら、
<?php
$raddr = explode(".", $_SERVER['REMOTE_ADDR']);
$query_addr = "$raddr[3].$raddr[2].$raddr[1].$raddr[0].niku.2ch.net";
if (gethostbyname($query_addr) == '127.0.0.2')
{
header('HTTP/1.0 403 Forbidden');
echo "こっちくんなー";
exit;
}
?> >>332
面白そうだね。
とりあえずうちの掲示板のspamよけルーチンに、BBQより優先度高くして追加。
しばらく様子見だな。 <?php
//$CHECK_IP = "192.0.2.1"; // スパム判定されるIP
$CHECK_IP = "207.46.197.32"; // されないIP(microsoft.com)
if(preg_match("/(\d+).(\d+).(\d+).(\d+)/",$CHECK_IP,$ip)){
$b = $ip[4] . ".". $ip[3] . ".". $ip[2] . ".". $ip[1];
$c[] = gethostbyname($b . ".dnsbl.spam-champuru.livedoor.com");
if($c[0] == "127.0.0.2"){
echo $CHECK_IP . " ==> すぱむ";
}else{
echo $CHECK_IP . " ==> もっけー";
}
}
?>
mixiで見っけた --------
Perl:
if (gethostbyname(join(".", reverse(split(/\./, $ENV{"REMOTE_ADDR"}))) . ".niku.2ch.net") eq "\x7f\0\0\2") { syswrite(stdout, "Status: 403\xd\xa\xd\xa"); exit; }
--------
PHP:
<?php if ((gethostbyname(implode(".", array_reverse(explode(".", $_SERVER["REMOTE_ADDR"]))) . ".niku.2ch.net")) == "127.0.0.2") { header("HTTP/1.0 403 Forbidden"); exit; } ?>
--------
Ruby:
require "socket"; if (Socket.gethostbyname(ENV["REMOTE_ADDR"].split(".").reverse.join(".").concat(".niku.2ch.net"))[3].eql?("\x7f\0\0\2") rescue nil) then print "Status: 403\xd\xa\xd\xa" end
--------
.niku.2ch.net を .dnsbl.spam-champuru.livedoor.com にすれば沖縄料理対応 じゃあ俺がこの板のを参考にちょっと付け加えたやつね。
俺あんまりperl分からないからこのくらいしか出来ないw
って事で活性化に繋がれば。。。
sub checkProxyList {
my $server = shift;
my $RADDR = $ENV{'REMOTE_ADDR'};
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.$server";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
$cplerr1 = "ERROR!";
$cplerr2 = "公開PROXYからの投稿は受け付けていません!!(1)";
$cplrand = int(rand(2));
if ($cplrand eq "0") { $randerr = $cplerr1; }
elsif ($cplrand eq "1") { $randerr = $cplerr2; }
if ($addr =~ /^127\.0\.0\./) { &error("$randerr"); }
}
# BBQ
&checkProxyList("niku.2ch.net");
# DSBL
&checkProxyList("list.dsbl.org");
# BBX
&checkProxyList("bbx.2ch.net");
# DNSBL
&checkProxyList("http.dnsbl.sorbs.net");
# スパムちゃんぷるーDNSBL
&checkProxyList("dnsbl.spam-champuru.livedoor.com"); >>338
$cplrand = int(rand(2));
if ($cplrand eq "1") {
$randerr = "ERROR!";
} else {
$randerr = "公開PROXYからの投稿は受け付けていません!!(1)";
}
でよくね?
変わんないかwww sub checkProxyList {
my $server = shift;
my $addr = join('.', unpack('C*', gethostbyname(join('.', reverse(split(/\./, $ENV{'REMOTE_ADDR'}))) . '.$server')));
$cplrand = int(rand(2));
if ($cplrand eq "1") {
$randerr = "ERROR!";
} else {
$randerr = "公開PROXYからの投稿は受け付けていません!!(1)";
}
if ($addr =~ /^127\.0\.0\./) { &error("$randerr"); }
}
もうこれでいいじゃん。 bbm.2ch.net
これって使える?
必要ない? ttp://info.2ch.net/wiki/index.php?BBM2.0
ttp://mickey.mirv.net/mochi/
こっちだった phpの場合は>>7のコードを貼り付けて呼び出すだけでおkなんですか?
ipをBBQのサイトに受け渡してチェックしてもらう作業はこのコードに含まれてるんですか?
>>344
おれは>>335を使わせてもらった。
<?php if ((gethostbyname(implode(".", array_reverse(explode(".", $_SERVER["REMOTE_ADDR"]))) . ".niku.2ch.net")) == "127.0.0.2") { header("HTTP/1.0 403 Forbidden"); exit; } ?>
BBQの部分を
.niku.2ch.net
.list.dsbl.org
.http.dnsbl.sorbs.net
.bbx.2ch.net
の四パターンつけたら、
ネットカフェからアクセスできなくていい感じw
さらに、
HTTP/1.1 404 Not Found
にしたら、締め出した事さえ気がつかれずにいい感じw
あ、答えになってなかったね。ごめんちょ<m(__)m> なるほどね
まとめてチェック版はこんな感じだね
<?php
//チェックお願いしますリスト。増やしたり減らしたり適当に
$DNSBL_list = array('.niku.2ch.net' ,'.list.dsbl.org' ,'.http.dnsbl.sorbs.net' ,'.bbx.2ch.net');
foreach($DNSBL_list as $DNSBL_listV){
if ((gethostbyname(implode(".", array_reverse(explode(".", $_SERVER["REMOTE_ADDR"]))) . "{$DNSBL_listV}")) == "127.0.0.2") {
//スパム判定に引っかかった時の処理 ※適当に変更
echo "{$_SERVER["REMOTE_ADDR"]}"." → {$DNSBL_listV} でひっかかりました><<br />";
// header("HTTP/1.0 403 Forbidden"); exit;//とか
}else{//スパム判定に引っかからなかった時の処理 ※適当に変更
echo "{$DNSBL_listV} 合格よ<br />";
}
}
?> list.dsbl.orgは要らなくね?あぼーんしちまったようだし >>348
そうなんだ?トンくす!調べもせず >>347 に載せてたわw
要らなくね?っていうか、引けないホスト載せるなんて最悪だから絶対要らないよね>< >>347
凄いな・・・。
誰かperl版作って下さい>< # チェックお願いしますリスト。増やしたり減らしたり適当に
my @DNSBL_list = qw|niku.2ch.net http.dnsbl.sorbs.net bbx.2ch.net all.rbl.jp zen.spamhaus.org b.barracudacentral.org|;
foreach my $DNSBL_host (@DNSBL_list){
my $result = gethostbyname join ".", reverse (split '.', $ENV{HTTP_REMOTE_ADDR}) , $DNSBL_host;
if ($result =~ /^127./){
# スパム判定に引っかかった時の処理 ※適当に変更
}
else {
# スパム判定に引っかからなかった時の処理 ※適当に変更
}
# 例
printf qq|%s =>%s listedn|, $ENV{HTTP_REMOTE_ADDR}, $result =~ /^127./ ? '' : ' no';
}
動作確認はしていません♪ printf qq|%s =>%s listedn|, $ENV{HTTP_REMOTE_ADDR}, $result =~ /^127./ ? '' : ' no';
が上手く動いてないんだが・・・ 679 名前:動け動けウゴウゴ2ちゃんねる[sage] 投稿日:2008/12/30(火) 13:19:46 ID:NVII90bc0
http://qb5.2ch.net/test/read.cgi/sec2chd/1230563347/
47 名前:名無しの報告 投稿日:2008/12/30(火) 09:41:28 ID:wxypddc2P
あれ?DSBLは今BBQ判定スルーしてませんでしたっけ??
48 名前:焼プリン ★ 投稿日:2008/12/30(火) 09:43:16 ID:???0
>>47
おぉー。してるの?してるのかもしれない…。
50 名前:名無しの報告 投稿日:2008/12/30(火) 10:01:59 ID:wxypddc2P
>>48
確か某掲示板でそのような投稿を見た気がしますです
ソースの確認は今ちょっと出先かつ携帯なので
ほぼ不可能なのですが;;
51 名前:焼プリン ★ 投稿日:2008/12/30(火) 11:39:55 ID:???0
>>50
DSBLそのものがなくなってるっぽい(;・-・)
52 名前:名無しの報告 投稿日:2008/12/30(火) 11:44:04 ID:fpj1OQhA0
http://dsbl.org/
ふむ。
680 名前:動け動けウゴウゴ2ちゃんねる[sage] 投稿日:2008/12/30(火) 14:30:49 ID:4i/n1z860
DSBLあぼん記念カキコ。ところで下のはどうよ。
Spamhausの対抗馬となるフリーのスパム対策サービスがBarracudaから登場
http://sourceforge.jp/magazine/08/12/22/0121248 >>351
ってかちゃんと動作しきれてない気が・・・ >>351
# チェックお願いしますリスト。増やしたり減らしたり適当に
my @DNSBL_list = qw|http.dnsbl.sorbs.net niku.2ch.net bbx.2ch.net all.rbl.jp zen.spamhaus.org b.barracudacentral.org|;
my $RADDR = $ENV{'REMOTE_ADDR'};
foreach my $DNSBL_host (@DNSBL_list){
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.$DNSBL_host";
my $result = join('.', unpack('C*', gethostbyname($query_addr)));
if ($result =~ /^127\.0\.0\./){
# スパム判定に引っかかった時の処理 ※適当に変更
# 例
printf qq|%s =>%s listed<br>\n|, $DNSBL_host, $result =~ /^127\.0\.0\./ ? '' : ' yes';
} else {
# スパム判定に引っかからなかった時の処理 ※適当に変更
# 例
printf qq|%s =>%s listed<br>\n|, $DNSBL_host, $result =~ /^127\.0\.0\./ ? '' : ' no';
}
}
これで動いたけどスパム判定に引っかかったときの処理が表示されない・・・ >>351をベースに>>356の修正ポイントを反映+α。
my $IP = $ENV{HTTP_REMOTE_ADDR};
my @DNSBL_list = qw|niku.2ch.net http.dnsbl.sorbs.net bbx.2ch.net all.rbl.jp zen.spamhaus.org b.barracudacentral.org|;
for my $DNSBL_host (@DNSBL_list){
my $host = join ".", reverse (split /\Q.\E/, $IP) , $DNSBL_host;
my $result = join ".", unpack 'C*', gethostbyname $host;
if ($result =~ /^127\./){
# スパム判定に引っかかった時の処理 ※適当に変更
printf qq|%s =>yes listed %s\n|, $IP, $DNSBL_host;
}
else {
# スパム判定に引っかからなかった時の処理 ※適当に変更
printf qq|%s =>no listed %s\n|, $IP, $DNSBL_host;
}
}
% env HTTP_REMOTE_ADDR=125.208.217.212 perl hoge.pl
125.208.217.212 =>no listed niku.2ch.net
125.208.217.212 =>no listed http.dnsbl.sorbs.net
125.208.217.212 =>no listed bbx.2ch.net
125.208.217.212 =>no listed all.rbl.jp
125.208.217.212 =>yes listed zen.spamhaus.org
125.208.217.212 =>yes listed b.barracudacentral.org
>>356だけどコレで動いたww
my @DNSBL_list = ('http.dnsbl.sorbs.net','niku.2ch.net','bbx.2ch.net','all.rbl.jp','zen.spamhaus.org','b.barracudacentral.org');
my $RADDR = $ENV{'REMOTE_ADDR'};
foreach my $DNSBL_host (@DNSBL_list){
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.$DNSBL_host";
my $result = join('.', unpack('C*', gethostbyname($query_addr)));
if ($result =~ /^127\.0\.0\./){
# スパム判定に引っかかった時の処理 ※適当に変更
# 例
printf "%s =>%s listed<br>\n", $DNSBL_host, $result =~ /^127\.0\.0\.$/ ? '' : ' yes';
} else {
# スパム判定に引っかからなかった時の処理 ※適当に変更
# 例
printf "%s =>%s listed<br>\n", $DNSBL_host, $result =~ /^127\.0\.0\.$/ ? '' : ' no';
}
} 変なこと聞くけど、なんで問い合わせるときIPアドレスひっくり返すの? DSBLを使いたいのですがこれはユーザー登録しないと使えないのでしょうか?