• ベストアンサー

Apache 逆引きできないホストからの書き込みを拒否したい

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

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.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.c 2006-07-12 07:40:55.000000000 +0000 --- httpd-2.0.63/modules/aaa/mod_access.c 2006-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;

noname#70551
質問者

お礼

ありがとうございます!! さっそく教えていただいたパッチをあててみました (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かつ逆引きできないホストのみを拒否することができました。 まさにど真ん中。的確なご回答ありがとうございました!! # こんなにも簡単に実現できるのであれば、将来的にこうした機能も標準で実装されることを期待したいです。

すると、全ての回答が全文表示されます。