How to build Internet Server with Linux

last update: 29 Sep 2004

home |index |previous |next |contents

セキュリティTips



3.1 クライアントのアクセス制御
allow、deny、orderディレクティブを使い、クライアントのアクセス制御が出来ます。これらのディレクティブはhttpd.confファイルに設定します。

    3.1.1 allow、deny、orderディレクティブ

    はじめに、各ディレクティブについて解説します。

    3.1.2 httpd.confファイルの設定

    次にhttpd.confファイルの設定方法を説明します。

    httpd.confファイルを使ったクライアントのアクセス制御の書式は次の通りです。

    1	<Directory /DIR>
    2		order <deny,allow | allow,deny>
    3		allow from <client1> [<client2> <client3> ...]
    4		deny from  <clinet4> [<client5> <client6> ...]
    5	</Directory>
    

    アクセス制御の書式


    アクセス制御を行うディレクトリはDirectoryディレクティブ(1行目)に設定します。

    3.1.3 設定例

      3.1.3.1 設定例1

      ディレクトリ"/var/www/html/manual"について

      する場合には、次のようにします。
      <Directory /var/www/html/manual>
      	order allow,deny
      	allow from 172.16.30.10 solarsystem.net
      	deny from  all
      </Directory>
      

      設定例1


      3.1.3.2 設定例2

      ディレクトリ"/var/www/html/doc"について

      する場合には、次のようにします。
      <Directory /var/www/html/doc>
      	order deny,allow
      	deny from nemesys.solarsystem.net 172.16.30.0/24
      	allow from all
      </Directory>
      

      設定例2


      3.1.3.3 設定例3

      公開するディレクトリ以下全てのサブディレクトリについて

      する場合には次のようにします。
      <Directory />
      	order mutual-failure
      	deny from nemesys.solarsystem.net 172.16.30.0/24
      	allow from 172.16.30.10 solarsystem.net
      </Directory>
      

      設定例3


3.2 ディレクトリ内容の表示を禁止
"Directory"ディレクティブから"Indexes"オプションを削除すれば、ディレクトリ内容の表示を禁止することができます。

URLの指定でファイル名を省略すると、ディレクトリを表示するサイトがあります。 そのようなサイトでは、例えば次のURL指定をした場合

http://localserver/test/


ディレクトリの内容が表示された例

サーバ上に/var/www/html/test/index.htmlファイルが無ければ、/var/www/html/test/ディレクトリの内容がブラウザに表示されます。

ディレクトリの内容が表示されると、外部に表示するつもりのないファイルが表示されてしまう、サーバのディレクトリ構造が明らかになってしまうなど、セキュリティ上問題があります。

ディレクトリ内容の表示を禁止するため、/etc/httpd/conf/httpd.confファイルのDirectoryディレクティブから"Indexes"オプションを削除しておきましょう。

3.3 シンボリックリンクを辿れないようにする
DirectoryディレクティブからFollowSymLinksオプションを削除すれば、シンボリックリンクを辿れないようにすることができます。

運用上、シンボリックリンクを辿る必要がある場合には"FollowSymLinks"オプションでなく、"SymLinkslfOwnerMatch"オプションを使用するとよいでしょう。"SymLinkslfOwnerMatch"オプションを使うと、シンボリックリンクとリンク先ファイルの所有者が同一の場合のみ、リンクを辿れるようになります。
3.4 CGIの実行を禁止する
"Directory"ディレクティブから"ExecCGI"オプションを削除すると、CGIの実行を禁止することができます。

CGIを利用可能としたままWEBサイト運用を行うと、CGIプログラムのセキュリティホールを突いて侵入される可能性があります。CGIが不要ならば"ExecCGI"オプションは削除しておきましょう。

3.5 一般ユーザがアクセス制御を行う
一般ユーザのWEB公開用ディレクトリに".htaccess"を置きます。".htaccess"ファイルには、"httpd.conf"ファイルとほぼ同様の書式による、アクセス制御ディレクティブを書くことが出来ます。

".htaccess"ファイルによるアクセス制御は、"httpd.conf"ファイルによるアクセス制御と異なり、httpdサーバの再起動が不要です。よって、一般ユーザが自由に自身のWEB用リソースに対して、アクセス制御を行うことが可能です。

".htaccess"ファイルに記述されたアクセス制御の内容は、".htaccess"ファイルが置かれたディレクトリ、およびそのディレクトリ以下すべてのサブディレクトリに対して有効となります。

".htaccess"ファイルで設定できるディレクティブは次の通りです。
種別 ディレクティブ
コンテナ files,limit
アクセス allow, deny, order
認証 AuthGroupFile, AuthName, AuthType, AuthUserFile, IdentityCheck, require
その他 Action, AccessFileName, AddDescription, AddEncoding, AddHandler, AddIcon, AddIconByEncoding, AddIconByType, AddLanguage, AddType, DefaultIcon, DefaultType, ErrorDocument, FancyIndexing, ForceType, HeaderName, IfModule, ImapBase, ImapDefault, ImapMenu,IndexIgnore, IndexOptions, Options, ReadmeName, Redirect, RedirectTemp, RedirectPermanent, Script, SetHandler

".htaccess"ファイルで設定できるディレクティブ

“Directory”ディレクティブは使えません。これは".htaccess"ファイル内において、アクセス制御を行うディレクトリを指定する必要がないことから明らかです。

一例として、ユーザ"user01"が"domain.net"というドメインからのアクセスを拒否するための".htaccess"ファイルを示します。

ユーザ"user01"は、自身のWEB公開用ディレクトリ"/home/user01/public_html/"に、以下の".htaccess"ファイルを置くことでアクセス制御を行うことが出来ます。

	order allow,deny
	allow from all
	deny from .domain.net

".htaccess"ファイルの例



home |index |previous |next |contents


since 04/Oct/2004