• ベストアンサー

.htaccess によって指定IPのアクセス制限をしたい

以下の環境・設定で求める制限ができません。設定不備等ご指導いただければと思います。宜しくお願いいたします。 ●環境: ApacheV2.2.0・FeroraCore6・社内運用(否インターネット) documentroot からのシンボリックリンク先で制限したい ●設定: (1)アクセスを制限したいディレクトリと同階層に「.htaccess」を作成(192.168.12.xxからのアクセスを制限・以下内容) order allow,deny deny from all allow from 192.168.12 (2)httpd.conf の以下を編集 #<Directory /> # Options FollowSymLinks # AllowOverride None #</Directory> <Directory /> Options All AllowOverride All </Directory> (3)httpd再起動

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

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

より直近の<Directoryコンテナ内で AllowOverride None と記述されているため .htaccess が無効になっている<=に一票 試しに .htaccess に test と書いてアクセスしてみてください  test と言うステートメントは有りませんので  ・.htaccess が有効な場合=>500エラーになり error_logに Invalid command 'test  と記録されます  ・ .htaccessが無効な場合=>.htaccessが無視されるので何も変わりません で、無効だった場合ですが >documentroot からのシンボリックリンク先で シンボリックリンクの張り方にもよりますが DocumentRoot の物理的なパスを指定しているDirectoryコンテナに記述で大丈夫だと思いますよ httpd.conf のDocumentRoot "/var/www/html" でしたら <Directory "/var/www/html">~~</Directory> に AllowOverride All を入れてください (インターネット公開にする際にはまた変更した方が良いかも?) >ちなみに、.htaccessにはこの3行しか書いていないのですが、良いのでしょうか? 大丈夫でしょう。 私なら order allow,deny allow from all deny from 192.168.12.0/24 ですが効果は同じです。

indigo45kk
質問者

お礼

AllowOverride All を入れている箇所がNGでした。 <Directory "/var/www/html/xx">​~~</Directory> を追記してそこに記述することで機能しました。 ありがとうございました。

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

order allow,deny は、allowを先に評価し、次にdenyで上書きするということです。したがって deny from all allow from 192.168.12 では、すべて拒否されてしまいます。 ・ 192.168.12.xxからのアクセスのみを拒否する場合は、 order allow,deny allow from all deny from 192.168.12.0/255.255.255.0 ・ 192.168.12.xxからのアクセスのみを許可する場合は、 order deny,allow deny from all allow from 192.168.12.0/255.255.255.0 としてみてください。

indigo45kk
質問者

お礼

ありがとうございます。 .htaccessを以下の設定にして、httpdを再起動しましたが、192.168.12.xからアクセスできてしまいます。 order allow,deny allow from all deny from 192.168.12.0/255.255.255.0 ちなみに、.htaccessにはこの3行しか書いていないのですが、良いのでしょうか?

関連するQ&A

  • cgi-binにアクセスできない

    apache初心者です。 Turbolinux6.0+apache1.3.12でHTTPサーバを試しているのですが、 cgi-binにあるファイルを見ようとするとHTTP 403エラーが出て表示できません。 属性とグループを色々変えてみたんですが、だめでした。 access.confで関係ありそうな所は <Directory /> Options None AllowOverride None order allow,deny allow from all </Directory> <Directory /home/httpd/html> Options Indexes Includes FollowSymLinks AllowOverride None order allow,deny allow from all </Directory> <Directory /home/httpd/cgi-bin> AllowOverride None Options FollowSymlinks ExecCGI order allow,deny allow from all </Directory> としていますが、なぜcgi-binの中身が見えないのかわかりません。 よろしくおねがいします。

  • /cgi-bin/のファイル読み出し

    WindowsXPでApacheをlocalhostで使用しています。 httpd.confを以下のように設定してcgiは問題なく作動していますが、/cgi-bin/に置いた画像やhtmlが読み出せません (すなわちhttp://localhost/cgi-bin/にアクセス出来ず、Forbiddenのエラーが出ます) 今は仕方なく、cgiで使用するファイルや画像をDocumentRoot配下に置いていますが、/cgi-bin/配下のファイルを読み出すhttpd.confの設定を教えて下さい。 DocumentRoot "F:/" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "F:/"> AllowOverride None Order allow,deny Allow from all </Directory> <IfModule mod_alias.c> ScriptAlias /cgi-bin/ "F:/cgi-bin/" <Directory "F:/cgi-bin"> AllowOverride None Options ExecCGI MultiViews Order allow,deny Allow from all </Directory> </IfModule>

  • httpd.confを添削してください!!(長文)

    こんにちわ いろいろと調べながらhttpd.confを自分の理想の動作を得るたねに設定したつもりです。 添削をお願いします。 /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ DocumentRoot /var/www/html <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory "/var/www/html"> #←home Options FollowSymLinks Includes AllowOverride All Order allow,deny Allow from all </Directory> #.htaccessを許可、cgiは不可、ssiは許可、シンボリックリンク許可 Order~略 <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride AuthConfig Limit Options +ExecCGI +Includes </Directory> #ユーザー領域では.htaccessで認証、アクセス元などで制御の許可。 それ以外は不可。 homeでcgiが不可ですがここでは許可したいので+を付けた。 <Directory "/var/www/cgi-bin"> AllowOverride All Options ExecCGI Order allow,deny Allow from all AddHandler image .gif .jpg AddHandler text/html .htm .html </Directory> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ こんな感じなんですがどこかおかしいでしょうか?

  • mod_rewrite(.htaccess)で静的化したいのですが。。

    mod_Rewrite(.htaccess)を使って静的化をしようとしています。 設定内容は、以下にしています。 --------------------- ■httpd.conf DocumentRoot "/var/www/html/" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html/"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> --------------------- ■.htaccess RewriteEngine on RewriteRule ^/free/([0-9,a-z,A-Z]+)$ /free/index.php?action=$1 --------------------- 上記の設定だと次ページが表示されません。 また、httpd.confの設定に以下を追加すると正常に次ページが表示され、URLの静的化されます。 --------------------- RewriteEngine on RewriteRule ^/free/([0-9,a-z,A-Z]+)$ /free/index.php?action=$1 --------------------- .htaccessが有効になっていないか、もしくは.htaccessの格納場所が間違えているかと 思っているのですが、いろいろ試してみましたが結局うまくいきません。 .htaccessの格納場所は、http://ローカルIP/free/配下に置いてあります。 どなたかご存知の方はいらっしゃいますでしょうか。 上記の設定内容だけだと情報が足りないなどございましたら、おっしゃってください。 宜しくお願い致します。

  • httpd.confのDirectoryIndexを記述しても、DocumentRoot直下のindex.htmlが表示されない

    初歩的な質問でしたら、申し訳ありません。。。 Apacheを勉強し始めの初心者です。 Apache2.2をローカル(windowsXP)にインストールし、httpd.confの設定を、以下のようにしました。 -------------------------------------- DocumentRoot "E:/web" <Directory /> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <Directory "E:/web"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <IfModule dir_module> DirectoryIndex index.html </IfModule> -------------------------------------- ブラウザにて、「http://local/」にアクセスしても、index.htmlが表示されず、HTTP400のエラーが返ってきてしまいます。 (E:/web配下には、index.htmlが確実に存在します。。) なのですが、E:/web/test 配下に、E:/web直下と同じindex.htmlを置き、「http://local/test/」にアクセスすると、正常にindex.htmlが表示されます。 httpd.confに、VirtualHostの設定はしていません。 色々と調査し、試行錯誤してみたのですが、理由がわからずにいます。。。 DocumentRoot直下は、DirectoryIndexと関係ないのでしょうか?? 初歩的な質問でしたら、誠に申し訳ありません。。 また、初心者のため、情報が足りない事があるかもしれません。 その時は、がっつりご指摘ください。 環境: Apache2.2 Tomcat5.5

  • IPアドレスでアクセスを制限するには?

    環境は、OSはLinux Fedora10で、Apacheは2.2.10です。 「/var/log/httpd/error_log」に大量の(数秒毎)の不正と思えるアクセスが記録され、 そのIPアドレスからのアクセスを制限したいと考えています。 「/etc/httpd/conf/httpd.conf」には以下のように書いています。 <Directory "/var/www/hogehoge"> Order allow,deny Allow from all Deny from 123.45.67.89 123.45.67.90 234.45.67.89 111.222.33.44 ... </Directory> 「Deny from」の行のIPアドレスが多いせいか、HTTPDを再起動しようとすると、エラーが発生し失敗してしまいます。 (IPアドレスは1000件以上あります。IPアドレスを少なくすると、何も問題なくHTTPDは起動できます。) できれば、「Deny from」の行のIPアドレスを外部ファイルから呼び出したり、変数に定義してすっきりさせたりしたいのですが、どのようにすればよいのでしょうか。 (他にもよい方法があったら、教えてください。) よろしくお願い致します。

  • apacheで「You don't have permission to access 」

    Nagiosというソフトをインストールしているのですが(Webベースで動く)、 http://localhost/nagios にアクセスすると、「You don't have permission to access /nagios/ on this server.」と出てしまいます。Apacheのhttpd.confは最後の行に、 ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin <Directory "/usr/local/nagios/sbin"> AllowOverride AuthConfig Options ExecCGI Order allow,deny Allow from all </Directory> Alias /nagios /usr/local/nagios/share <Directory "/usr/local/nagios/share"> Options None AllowOverride AuthConfig Order allow,deny Allow from all </Directory> を加えて、以下も加えました。 <Directory /> Options FollowSymLinks AllowOverride Options </Directory> AddHandler cgi-script .cgi 何か原因は考えられるでしょうか?これだけではやはり、情報不足でしょうか?

  • htaccessによるアクセス制限で表示速度が遅くなってしまう原因について

    初めて質問させていただきます。 失礼がございましたらご容赦ください。 現在、お客様のHP、システムがレンタルサーバ上に設置されています。 システムへのアクセス制限をかけようとしているのですが以下のような 問題が出ています。 原因が分からず困っております。 原因、解決方法をご教示いただけますと幸いです。 ■現象  システムを設置しているURLに対し、お客様のIPアドレスからのみアクセスできるように  httpd.conf、htaccessに記載したつもりなのですが、お客様社内からのアクセスができ、  他からのアクセスは制限できましたが、表示速度が非常に遅くなってしまいました。  同じくhtaccessに自社のIPアドレスを記載して試したところ、自社からのアクセスは特に問題ありませんでした。  どうやらお客様のIPアドレスからのアクセスのみ非常に遅くなってしまうようなのです。  (お客様のネットワーク関係の設定等との弊害でしょうか?)  ※htaccessにはドメインでの記載ではなく、IPアドレスを直接記載しています。 ■httpd.confとhtaccessへの記載内容  1)httpd.conf   <Directory "制限をかけたいディレクトリ">    AllowOverride Options Limit   </Directory>  2)htaccess   order deny,allow   deny from all   allow from お客様のIPアドレス 考えられる原因、解決方法等を教えていただけますと幸いです。 よろしくお願い致します。

  • .htaccessで時間制限したい

    自分のHPのうち、特定のディレクトリ内のファイルへのアクセスを、時間によって制限したいと思っています。 「2009年9月1日午前0時が来るまで、このディレクトリへのアクセスはすべてdeny」という制限をするには、.htaccessになんと書けばよいでしょうか。 order allow,deny allow from all deny ??????

  • Windows環境でのCGI設定について

    Windows+ApacheでCGIを設定する際の質問です。 「c:\webroot」というディレクトリをDocumentRootにして その下に「sample」というディレクトリを作成し、 そのディレクトリの中にCGIとHTMLを配置したいと考えています。 試しにc:\webroot\sample\printenv.cgiというcgiを 配置してhttpd.confを以下の様に設定しましたが、 以下のURLでアクセスしてもCGIは実行されません。 http://localhost/sample/printenv.cgi (※printenv.cgi自体はScriptAliasがcgi-binの状態では   実行されているのは確認しています。) 恐らく設定のいくつかが間違っている為と 思いますのでアドバイスして頂けたら幸いです。 ================================================ Alias /sample/ "C:/webroot/sample/" <Directory "C:/webroot/sample/"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all DirectoryIndex index.htm index.html </Directory> ScriptAlias /sample/ "C:/webroot/sample/" <Directory "C:/webroot/sample"> AllowOverride None Options None Order allow,deny Allow from all </Directory>

    • ベストアンサー
    • CGI