「これはヤバかったな」という遅刻エピソード

Apacheの設定または.htaccessの設定で質問です
逆引きのできないホスト(IPアドレスとホスト名が同じもの)についてはPOSTメソッドのみ受け付けなくしたいのですが、そのような設定は可能でしょうか?

A 回答 (1件)

TCP Wrapper の "PARANOID" のようなことがしたいのでしょうか?



ということであれば、ソースコード (mod_access.c) を修正しない限りできません。以下のような修正を施してコンパイルし、Allow from . とすれば希望されている動作になると思います。(するかどうかは別として、、Deny from . も OK です)

これは、Apache 1.3 系、2.2 系も同様です。
(2.2 系ではモジュールの名称が若干変更になっていたと思います。
mod_auth_host か何かだったと思います)

*** httpd-2.0.63.orig/modules/aaa/mod_access.c2006-07-12 07:40:55.000000000 +0000
--- httpd-2.0.63/modules/aaa/mod_access.c2006-07-12 07:40:55.000000000 +0000
***************
*** 131,136 ****
--- 131,139 ----
else if (!strcasecmp(where, "all")) {
a->type = T_ALL;
}
+ else if (!strcasecmp(where, ".")) {
+ a->type = T_HOST;
+ }
else if ((s = strchr(where, '/'))) {
*s++ = '\0';
rv = apr_ipsubnet_create(&a->x.ip, where, s, cmd->pool);
***************
*** 176,181 ****
--- 179,187 ----
int dl = strlen(domain);
int wl = strlen(what);

+ if (dl == 1 && domain[0] == '.')
+ return 1;
+
if ((wl - dl) >= 0) {
if (strcasecmp(domain, &what[wl - dl]) != 0)
return 0;
    • good
    • 0
この回答へのお礼

ありがとうございます!!
さっそく教えていただいたパッチをあててみました
(Apache2.2から mod_access が mod_authz_host.c になったようでしたのそちらで)

Order deny,allow
deny from all
Allow from .

にしたところ逆引きできないホストのみ見事に403エラーにしてくれました!!
おもわずスゲーと声が洩れてしまいました・・・(たった6行の追加だけに・・・)

上を踏まえて

<Limit POST>
Order deny,allow
deny from all
Allow from .
</Limit>

することよって、POSTかつ逆引きできないホストのみを拒否することができました。
まさにど真ん中。的確なご回答ありがとうございました!!

# こんなにも簡単に実現できるのであれば、将来的にこうした機能も標準で実装されることを期待したいです。

お礼日時:2008/10/23 10:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報