複数サイトで拒否IPを共有する方法

このQ&Aのポイント
  • 複数サイトで拒否IPを共有する方法についてご相談です。
  • 現在、1台のサーバーにバーチャルホストを設定して20個程度のサイトを運営しています。
  • サーバーサイドのプログラムでアタックと思われるアクセスを検知し、効率的に拒否IPを共有できる管理方法を探しています。
回答を見る
  • ベストアンサー

複数サイトで拒否IPを共有する方法

1台のサーバーにバーチャルホストを設定して20個程度のサイトを運営しています。 サーバーサイドのプログラムでアタックと思われるアクセスを検知(※)し、 .htaccess に deny from xxx.xxx.xxx.xxx を動的に追加していますが、全サイトで 個別に .htaccess を設置するのは効率が悪いかなとも思っています。 ※UAがない、ホスト名がなくsetup.phpを探している等々で判断 .htaccessではなく、httpd.confにdeny fromを追加していけば全運営サイトで 拒否IPを共有できますが、それだと定期的に httpd reload で設定ファイルを 再読み込みしなくてはなりません。 特に .htaccess に拘っているわけではありませんので、もっとスマートな管理方法が あればご指導ください。

noname#256686
noname#256686

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

  • ベストアンサー
回答No.2

私の場合、自宅サーバーを運用しているんですが、SSHポートへの攻撃が多いですね。 http://www.key-p.com/blog/staff/archives/94 このページを参考にhosts.denyに追記していく形をとっていますよ。

noname#256686
質問者

お礼

回答ありがとうございます。 ご紹介頂いたページを拝見しましたが、これはとてもいいですね。PHP等であれやこれやブロックを試みていましたが、cronとログファイル解析でhosts.denyに追記するほうがスマートですね。とても参考になりました。

その他の回答 (1)

  • EF_510
  • ベストアンサー率50% (306/604)
回答No.1

ルート権があるんでしたらホストのファイアーウォールを設定したらどうでしょうか? apacheの設定だけ出来る、というのであれば普段は.htaccessに書き、どこかのタイミングでhttpd.confに移すような運用でどうでしょうか? .htaccessはドキュメントにリクエストが来るたびに読み込まれますのであまり大きかったりするとオーバーヘッドになるかもしれません。 httpd.confは起動時の1回だけ読み込みですので少しは軽減されるかなと思います。

noname#256686
質問者

お礼

早速の回答ありがとうございます。 なるほど。Apacheのことばかり考えてファイアウォールを失念しておりました。PHPからファイアウォールの設定が変更できるかわかりませんが、調べてみようと思います。 それと、後からhttpd.confに移すというアイデア、大変良いですね! ファイアウォールの設定が難しいようであれば後者の仕組みを導入してみようと思います。

関連するQ&A

  • httpd.confで行う設定を.htaccessで行う方法

    こんにちはよろしくお願いします。 httpd.confで <Directory "/htdocs/cakeapp"> Allow from all </Directory> という設定をしなければなりません。 ところが,私の契約しているサーバーは,httpd.confを触れません。 そこで,.htaccessで設定する方法が有ると聞きました。これをを教えてくださいよろしくお願いします。

  • apacheで<Directory>が機能しません

    apache2.2で、ヴァーチャルホストで複数ドメインを使用しています。 httpd.confの共通指定部分?に<Directory>や<Files>で下記のような指定したことが無視されます。 ・・・ヴァーチャルホスト設定部分の中に指定してもダメでした。 <Directory /home/user/html/aaa/bbb> Order deny,allow Deny from all </Directory> <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> DirectoryMatchやFilesMatchも無視されます・・・ しかし、LocationとLocationMatchでやった場合は機能しました。 ちなみに、.htaccessに Order allow,deny Deny from all と、書いても無視されました・・・(リダイレクトや書き換えなどは使用できたので.htaccess自体は機能していると思うのですが) coreモジュールは入っています。 mod_authz_hostは、LoadModuleで読み込んでいます。 それ以外のモジュールが必要なのでしょうか? なぜ、Locationは使えるのに、DirectoryやFilesは使えないのでしょうか? 原因がさっぱりわかりません。詳しい方よろしくお願いします。

  • .htaccessでアクセス制限できないホスト

    アクセスして欲しくないホストは、htaccessを使って拒否しているのですが、 『sol-fttb.240.152.118.46.sovam.net.ua』だけは なぜか、どんなに記述しても、毎日アクセスがあります。 今までに、以下のようにして試したのですが、すべて駄目でした。 deny from sol-fttb.240.152.118.46.sovam.net.ua deny from .240.152.118.46.sovam.net.ua deny from .sovam.net.ua deny from .net.ua deny from .ua deny from 240.152.118.46 もちろん、その記述の前に、 order allow,deny allow from all は、記述しており、 他のホストは、問題なく拒否できています。 『sol-fttb.240.152.118.46.sovam.net.ua』のように、IPアドレスが不明なホストは拒否する方法はないのでしょうか? できれば、htaccess以外でのアクセス制限の方法ではなく、 htaccess内の記述で、アクセス拒否したいと思います。 以上よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • Virtualhost:名前ベースorIPペース?

    某レンタルサーバでVPSを使っています。 CentOS6.2(x86_64)、Apache/2.2.15 です。 で、1つの固定IPアドレスに対して、 3つのFQDNをvirtualhostで設定しようとしています。 (そのうち1つは、SSLもあり) で。。。 httpd.conf ===================================== NameVirtualHost *:80 <VirtualHost *:80> ===================================== ssl.conf ==================================== NameVirtualHost *:443 <VirtualHost *:443> ==================================== と、設定するのと、 httpd.conf ===================================== NameVirtualHost xx.xx.xxx.xxx:80 <VirtualHost xx.xx.xxx.xxx:80> ===================================== ssl.conf ==================================== NameVirtualHost xx.xx.xxx.xxx:443 <VirtualHost xx.xx.xxx.xxx:443> ==================================== と設定するのでは、どちらがのぞましいのでしょうか? どちらでも動くのですが・・・。 また、どういう仕組みの違いになっているのでしょうか? 下記2ページを読むと、自分のケースではどっちでも問題ないので、 どっちでもかまわないのでしょうか? //----------------------------------------------------------- 名前ベースのバーチャルホスト http://httpd.apache.org/docs/2.0/ja/vhosts/name-based.html IPベースのバーチャルホストWWWサーバの構築 http://www.aconus.com/~oyaji/www/apache_linux_virtual.htm よろしくお願いします。

  • 携帯サイト htaccessによるIP制限

    携帯サイトをPCからアクセスできないようにするため、htaccessを使ってIP制限をしたいのです。 下記アドレス7のロリポップのレンタルサーバーに書かれていた方法 http://lolipop.jp/?mode=manual&state=hp&state2=htaccess_03 で試みましたが、全く作動しません。普通にPCから見れてしまいます。 order deny,allow deny from all allow from 許可したいホスト・IP  ←携帯各社のIPをズラズラと並べました。 アップロードして拡張子は.htaccessに変更し、ファイルの属性も604にしました。 サイトの説明通りにしているつもりなのですが、他にも何か設定の項目があるのでしょうか? 実際にロリポップを使用されている方がいましたら助かります。 アップロードはロリポップのFTPやフリーソフトのFFFTPも使ってみましたが、結果は同じでした。

  • ホストとIPのアク禁ができないのですが

    .htaccessファイルについて借りてるサーバーの詳細として以下のようになってます記述方法 order allow,deny allow from all deny from xxx.net deny from yyy.com deny from 111.222. http://htaccess.pasoa.com/limit.htm xxx.netこの部分をアク禁にしたいIPやドメインに変えればアク禁にできるはずですが試しに自分のIPにしてUPしてもアク禁になりません。? 設定方法に問題があるのでしょうか ご指導よろしくお願いします。

  • htaccessによるスパム制御について

    htaccessによるスパム制御について HPをいくつか運営しておりまして、悪質なスパムが絶えないためhtaccessで拒否設定を行いましたが、すり抜けられてしまいました。私の設定に問題があるのかもしれないと思い相談します。 現在の設定は ------------------------------- order allow,deny allow from all deny from 163data.com.cn ------------------------------- なのですが、破られてしまいました。アクセスしスパムを行った人のホストは「116.xxx.xxx.xxx.broad.fz.fj.dynamic.163data.com.cn」 となっています。毎回変わりますが「dynamic.163data.com.cn」の部分は不変です。 htacessには他の書き入れもしていますがアクセス制御に関する設定はこの三行のみです。 よろしくお願いします。

  • http://aaa.jp/ というアドレスでサイトを運営していたとし

    http://aaa.jp/ というアドレスでサイトを運営していたとします。 特定のホストに index.php を表示させ、それ以外は index.html だけを表示させたいのですが、 表示させたいのですが、htaccessを使ってもうまくできません。 DirectoryIndex index.php order deny,allow deny from all allow from 許可するホスト allow from 許可するホスト allow from 許可するホスト ErrorDocument 403 index.html これでは駄目なのでしょうか?

  • IPアドレスがちがう!

    プライベートなサイトの公開範囲を特定のIPアドレス(自分)だけにしようと.htaccessで order deny,allow deny from all allow from xxx.xxx.xxx.xxx allow from xxx.xxx.xxx.xxx allow from xxx.xxx.xxx.xxx というふうにしていたのですが、仕事場のPC(IPアドレス)だけ許可できません。 で調べてみると、「ipconfig/all」で得られたIPアドレスとPHPの「$_SERVER['REMOTE_ADDR']」で得られたIPアドレス(実際にサーバーにアクセスしてきたクライアント)が違うのです。 なでに(.ŏωŏ.)? 結局、「$_SERVER['REMOTE_ADDR']」で得られたIPアドレスで無事制御できましたが、原因は分からずじまいです。 どなたか原因がお分かりの方、ご教授の程お願い致します。 OS: WindowsXP SP3 仕事場のPCは無線LANで接続されています。

  • vhost.confについて

    参考URL「http://opentechpress.jp/developer/article.pl?sid=07/08/27/0148216」を元に、バーチャルホストを設定したくて やってみたのですが、Red Hatに元々入っているパッケージ(httpd)のhttpd.confの中をみたところInclude /etc/apache2/vhosts.d/*.confっていうInclude文がありませんでした。 自分で「Include /etc/httpd/vhost.conf」を追記し、 vhost.confをviエディタで作成しました。 NameVirtualHost *:80 <VirtualHost *:80> ServerName XXXXXXXXXXXXXXXXXXXXXXXX DocumentRoot XXXXXXXXXXXXXXXXXXXXXX ServerName xxxxxxxxxxxxxxxxxxxxxxxx </VirtualHost> ここで質問ですが、vhost.confにServerNameで設定した ドメイン名以外でもクライアントから接続できてしまいます。 理由は、クライアント側のhostsファイルに 「XXX.XXX.XXX.XXX vhost.confに設定したドメイン名 設定していないドメイン名」って設定しているからだとは思います。 ただこれだと「名前ベースのバーチャルホスト」の設定とは?? って疑問に思ってしまうのですが.. 用は、名前ベースのバーチャルホストでvhost.confに登録していないドメインから接続できないようにしたいです。 私の理解がズレてそうなので、詳しい方がいましたら教えてください。