見て欲しくない人を拒否する設定
sorry Japanese only
最終更新日 2004/11/14
page size = Mbyte


関連するページ 許せないクローラー ファイルの内容を表示する 見て欲しくない人を拒否する設定 .htaccessを使った個別に拒否する方法 検索エンジンの拒否をする設定


IPアドレス総当たりでメールアドレスを収集する人。
町BBSなどで見付けたプロバイダーのホスト名でアクセスしてくる人。
訳の分からないアプリケーションで、有りもしないディレクトリーへ向けてアクセスしてくる人。
ダウンロードソフトの使い方を誤り、リンク取得を失敗し、有りもしないディレクトリーをむやみやたらとアクセスしてきて 404エラーを多量に出している人。

このような人を拒否する設定です。

何度か設定を変更しています。下に行くほど昔の設定です。
組み合わせて自分に合った設定を見付けて下さい。
拒否するとこのような画面となりアクセスできません。=> 403_forbidden.html

iptablesにて DROPしてしまう

アドレス間違えを永遠と繰り返し 404エラーを連発、
アクセス拒否され 403エラーを出し続けても、
なおアクセスを続けてくる 202.108.1.10

apacheの error.logへログを書き込まれるのすら馬鹿らしいので、もっと上流でアクセス拒否することにしました。
routerの機能 iptablesにて DROPさせました。
ここに httpサーバーがあることすら分からなくなったはずです。

iptablesの初期設定時 INPUTの設定を行っている部分で port80と 8080の許可を行う前に、
特定の IPアドレスを DROPとするように指定。
# 特定の IPアドレスからの INPUTを拒否する
#
iptables -A INPUT -i ppp0 -s 202.108.1.10 -j DROP             <= この行を追加

# TCP PORT 80,8080の通過を許可
# 
iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

IPアドレスにてアクセスを制限する方法

こんな 404エラーを多量に出す人がいます。

202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/DivX52/index.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/settei/rrdtool-smallgraph.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/settei/smartctl.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/settei/diskcopy-ide2scsi.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/settei/diskcopy-ide2ide.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/settei/ntpdate.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/settei/re-pppoe.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/settei/iptables.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
202.xxx.1.10 - - [01/Oct/2004:16:46:13 +0900] "GET /brake/pc/settei/apt.html HTTP/1.1" 404 301 488 "-" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"


中国の方のようなんですが、brakeの下に pcディレクトリーは無いってば。
こんなのを永遠 DDoS攻撃のように繰り返しています。
と言うことで、この方はアクセスできないよう制限かけることにしました。

DocumentRoot以下全て、どこにアクセスしても 403エラーです。
<Directory "/home/localhost">
AllowOverride Limit
SetEnvIf Host miya0 access_ok
SetEnvIf Host localhost access_ok
SetEnvIf User-Agent Access !access_ok
SetEnvIf User-Agent FrontPage !access_ok
SetEnvIf Remote_Addr 202.xxx.1.10 !access_ok  <= 今回追加
Order Deny,Allow
Deny from all
Allow from env=access_ok
Allow from 192.168.0.0/255.255.255.0 127.0.0.1
</Directory>
実際には 202.108.1.10とかの IPアドレスを書き込みます。
その他の項目については、下に説明があります。

Microsoft Data Accessや FrontPageでのアクセスを制限する方法

pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:03 +0900] "OPTIONS / HTTP/1.1" 200 - "-" "Microsoft Data Access Internet Publishing Provider Protocol Discovery"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:03 +0900] "OPTIONS /oil HTTP/1.1" 200 - "-" "Microsoft Data Access Internet Publishing Provider Protocol Discovery"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:04 +0900] "GET /_vti_inf.html HTTP/1.1" 404 363 "-" "Mozilla/2.0 (compatible; MS FrontPage 5.0)"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:04 +0900] "OPTIONS / HTTP/1.1" 200 - "-" "Microsoft Data Access Internet Publishing Provider Protocol Discovery"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:04 +0900] "OPTIONS /oil HTTP/1.1" 200 - "-" "Microsoft Data Access Internet Publishing Provider Protocol Discovery"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:05 +0900] "GET /_vti_inf.html HTTP/1.1" 404 363 "-" "Mozilla/2.0 (compatible; MS FrontPage 5.0)"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:05 +0900] "OPTIONS / HTTP/1.1" 200 - "-" "Microsoft Data Access Internet Publishing Provider Protocol Discovery"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:05 +0900] "OPTIONS /oil/oil.html HTTP/1.1" 200 - "-" "Microsoft Data Access Internet Publishing Provider Protocol Discovery"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:05 +0900] "GET /_vti_inf.html HTTP/1.1" 404 363 "-" "Mozilla/2.0 (compatible; MS FrontPage 5.0)"
pxxxx-ipad03kamokounan.kagoshima.ocn.ne.jp - - [15/Jul/2004:17:38:06 +0900] "GET /oil/oil.html HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"

普通の人?の様なんですが、何でアクセスするとこういうログを残すんでしょうか。
OPTIONS / HTTP/1.1" 200 -
これなんか成功してます。(どういう訳か、成功 200でも、その後の送信バイト数が - になってますが)

不気味なのでやめて下さい。

と書いてもやめてはくれないので、アクセスできないように apache/conf/httpd.confに以下の条件を組み込み、403エラーを返して拒否する設定にしました。

DocumentRootが "/hogehoge" だったとしたら
<Directory "/hogehoge">
AllowOverride Limit
SetEnvIf Host miya0 access_ok                    --(1)
SetEnvIf Host localhost access_ok                --(2)
SetEnvIf User-Agent Access !access_ok            --(3)
SetEnvIf User-Agent FrontPage !access_ok         --(4)
Order Deny,Allow                                 --(5)
Deny from all                                    --(6)
Allow from env=access_ok                         --(7)
Allow from 192.168.0.0/255.255.255.0 127.0.0.1   --(8)
</Directory>

(1) 目指す hpに miya0が含まれていたら access_okをセット
(2) 自宅の自分の PCからのアクセスなら access_okをセット
(3) User-Agentに Accessという文字が含まれていたら access_okをクリアー
(4) User-Agentに FrontPageという文字が含まれていたら access_okをクリアー
(5) 拒否、許可の順番で条件判断する
(6) あらかじめ全て拒否とする
(7) access_okがセットされていたら Allow (許可)する
(8) 自宅内、apacheの動いている PCからのアクセスは無条件で許可

上から順番に流れますから、
miya0.dyndns.orgでアクセスして、IE (User-Agentは Mozilla/4.0 compatible; MSIE 6.0) だと (3),(4)でクリアーされないので (7)を通りアクセスできる。
Netscapeでも同じ (User-Agentは Mozilla/5.0 ja-JP; rv:1.4) Gecko/20030624 Netscape/7.1)
miya0.dyndns.orgでアクセスして (1)でセットされても、FrontPageでアクセスすると (4)でクリアーされるので (7)を通らずに拒否される。(403エラーとなる)
IPアドレス直打ちでアクセスしてくると、(1)でセットされず、(7)を通らず拒否される。(403エラー)

2004/04/19 マチBBS対策

miya0でアクセスしてきた人以外を拒否設定していたのですが、まあこんな設定いらないだろう。
と思い外していたのですが、ドメイン名が表示される掲示板経由で私の所へメールが来てびっくりしました。
と言うことで町BBS対策です。

miya0及び IPアドレスじか打ちでアクセスしてきた人は通過。
プロバイダーのドメイン名 (ntkgsm016123.kgsm.nt.ftth.ppp.infoweb.ne.jp とか h147.p111.iij4u.or.jp)でアクセスしてきた人は 403エラー

httpd.conf内の DocumentRootの部分に追加
AllowOverride Limit                      (noneからの変更が必要なのかな?)
<Directory "c:\wwwroot"> 
SetEnvIf Host \infoweb\ domain_name_ng
SetEnvIf Host \iij4u\ domain_name_ng
Order Allow,Deny
Allow from all
Deny from env=domain_name_ng
</Directory> 

アクセス設定

自宅サーバーへアクセスしてくる方のアクセス方法の内、IPアドレスじか打ち、プロバイダーのホスト名じか打ちでアクセスしてくる方を拒否する設定にしました。
検索エンジン及び私の元hpから飛んでくる方は、全ての方が miya0.dyndns.orgで飛んでくるので、普通に見られます。

apache2.0.48 win32版の http.conf内に以下の設定を追加しました。
<Directory "c:\wwwroot"> 
SetEnvIf Host miya0 domain_name_ok 
SetEnvIf Host localhost domain_name_ok 
Order Deny,Allow 
Deny from all 
Allow from env=domain_name_ok 
Allow from 192.168.0.0/255.255.255.0 127.0.0.1 
</Directory> 
28945