![]() |
LINUX |
apache_tips
*httpd-2.2.15で使っています
:デフォルトでアクセスを無効にする
:DNSの逆引きをを無効にする
:.htaccessファイルについて
:<Files>コンテナについて
:Refererによる画像ファイルへの直リンクの禁止
:ディレクトリオプションIndexesについて
:403 error ( access denied ) への対処
:Server Tokens と Server Signature の扱いについて
:LogFileの肥大化の抑制とworm_logについて
デフォルトでアクセスを無効にするApacheの全てのディレクトリを対象とする<Directory>の設定は下記のように記述されて
います。
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
これに対して、Webサイト内の全てのディレクトリへのアクセスを拒否する設定にします
Orderディレクティブの評価で、デフォルトでアクセスは許可されます
"Deny from all"を設定して、アクセスを拒否します
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
特定のディレクトリへのアクセスを許可するには<Directory>コンテナにAllow指示子を
指定します。サブディレクトリにも有効になります。
Orderディレクティブの評価で、デフォルトでアクセスは拒否されます。
"Allow from all"を設定してアクセスを許可します。
<Directory "/home/www/htdocs">
Options MultiViews SymLinksifOwnerMatch IncludesNoExec
AllowOverride None
Order allow,deny
Allow from all
</Directory>
サブディレクトリにさらにアクセス制限をかけます。1つのブロックの後に適用範囲の狭い
別のブロックを指定すると、オーバーライドされます。
Orderディレクティブの評価で、デフォルトでアクセスは拒否されます。
Allowディレクティブで許可されたアドレスを除く、他のアクセスは拒否されます。
<Directory "/home/www/htdocs/nouse">
Options MultiViews SymLinksifOwnerMatch IncludesNoExec
AllowOverride None
Order allow,deny
Allow from 192.168.0.0/255.255.255.0
</Directory>
Orderディレクティブ:モジュール(mod_authz_host 2.1以前はmod_access)
Order ディレクティブはデフォルトのアクセスの状態とAllow ディレクティブと
Deny ディレクティブが評価される順番を制御します。
Deny,Allow
Deny ディレクティブが最初に評価され、次に Allow ディレクティブが評価されます。
デフォルトでアクセスは許可されます。Deny ディレクティブに合わないか、
Allow ディレクティブに合うクライアントはアクセスを許可されます。
Allow,Deny
Allow ディレクティブが最初に評価され、次に Deny ディレクティブが評価されます。
デフォルトでアクセスは拒否されます。Allow ディレクティブに合わないか、
Deny ディレクティブに合うクライアントはアクセスを拒否されます。
マージの順番(より緩やかな設定でオーバーライドしないように注意)
1. <Directory> (正規表現無し) と .htaccess を同時に
2. <DirectoryMatch> と <Directory ~>
3. <Files> と <FilesMatch> を同時に
4. <Location> と <LocationMatch> を同時に
DNSの逆引きをを無効にするAllow From または Deny from指示子を指定すると、Apacheは一度逆引きをしてから、
再度順引きをしてIPアドレスが一致するか確かめますのでパフォーマンスが落ちます。
ログファイルにもホスト名は記録されなくなりますが、必要な場合は別にログファイル
を解析する事で良しとします。
HostnameLookups Off
△
.htaccessファイルについてAllowOverride指示子にNone以外を指定すると、AccessFileNameに指示されているファイル
(.htaccess)を探します。個人の場合ユーザディレクトリごとに管理する必要がないので、
httpd.conf内に全て記述する方が、パフォーマンスが上がります。
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
△
<Files>コンテナについて*公開ディレクトリの中に不要なファイルを置かない
*\記号は\(半角バックスラッシュ)を意味します
ディレクトリ内に拡張子に関わらずtextファイルが存在すれば、リクエストに応じて
表示されてしまいます。ユーザーディレクトリで重要な役割をする.htaccessファイルも
textファイルなのでそのままでは表示されてしまいます。<Files>コンテナのなかでは、
ファイル名と一致したものに、処理の方法を設定できます。
この例では、正規表現を使って行頭から.htで始まるファイル名に対して、アクセス拒否の
設定をしています。
Orderディレクティブの評価でアクセスはデフォルトで拒否されますが、
明示的に"Deny from all"を記述しています
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
△
Refererによる画像ファイルへの直リンクの禁止* \記号は\(半角バックスラッシュ)を意味します
他のサイトから画像などに直リンクを貼られると、他のサイトのために帯域を使うことに
なります。SetEnvIfディレクティブを使い、HTTPリクエストのRefererヘッダに"528p.com"
が含まれるものには、環境変数「link_auth」を設定します。
<FilesMatch>ディレクティブでは、指定された拡張子のファイルのリクエストに対して
環境変数「link_auth」が設定されているか否かを調べ、設定されている場合のみ
レスポンスを返します。
SetEnvIf Referer 528p\.com link_auth
<FilesMatch "\.(gif|jpe?g|png)$">
order deny,allow
Deny from all
Allow from env=link_auth
</FilesMatch>
△
ディレクトリオプションIndexesについてhttpd.confではデフォルトで下記のように記述されています。
<Directory "/home/www/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
DirectoryIndex index.html index.html.var
この場合、DirectoryIndexで指定されたファイルがないとディレクトリーリストが表示
されディレクトリの中が丸見えになります。セキュリティの面から、中身を公開してよい
フォルダを除き、許可を与えないようにすることが賢明です。
<Directory "/home/www/htdocs">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
DirectoryIndex index.html index.html.var
こうすると、指定されたファイルがない場合、ファイルがないと返されますのでスマートに
他のディレクトリやファイルへジャンプするindex.htmlを作って配置します。
: index.htmlの例(絶対URL)
*ドキュメントルートへジャンプします
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="refresh" content="1; URL=http://ja.528p.com/"> <title>index</title> </head> <body> <br> </body> </html>
: index.htmlの例(相対URL)
*一つ上のディレクトリのlinux.htmlへジャンプします
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="refresh" content="1; URL=../linux.html"> <title>index</title> </head> <body> <br> </body> </html>
: 説明
*他のページにジャンプする
<meta http-equiv="refresh" content="●●; URL=■■">
●● 他のページにジャンプするまでの秒数
■■ ジャンプ先のURL 絶対URLまたは相対URLで指定します
403 error (access denied) への対処403 error (access denied) が出た場合に、独自のhtmlファイルを表示し、
自動的に正式なサイトへ誘導します
:httpd.conf
*省略
ErrorDocument 403 /lead2home.html
*省略
:lead2home.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta http-equiv="refresh" content="3; URL=http://ja.528p.com/"> <title>error-redirect.html</title> </head> <body> <p>Access Denided!</p> <p>ページが自動的に更新されない場合は <a href="http://ja.528p.com/">ここ</a> をクリックしてください</p> </body> </html>
△
Server Tokens と Server Signature の扱いについてServer Tokens と Server Signature の扱いについて2タイプ、例を挙げます。
目的にあった設定を選択して下さい。
:Server Tokens Prod , Server Signature On の場合
Forbidden
You don't have permission to access /cgi-bin/ on this server. Apache Server at ja.528p.com Port 80
:Server Tokens Prod , Server Signature Off の場合
Forbidden
You don't have permission to access /cgi-bin/ on this server.
△
LogFileの肥大化の抑制とwarm_logについて画像ファイルへのアクセスを無視することで、access_log の肥大化を抑制できます。
windowsワームのアクセスを分離して、access_logの肥大化を抑制し、別にworm_logを
取ります。mod_setenvif モデュールを使って、LogFormatの環境変数を変更します。
*画像ファイルのログを環境変数 ignorelogに設定します
SetEnvIf Request_URI "\.(gif|jpe?g|(png)$" ignorelog
*windowsワームのログを環境変数 wormlog ignorelogに設定します
SetEnvIf Request_URI "^/scripts/" wormlog ignorelog SetEnvIf Request_URI "^/c/" wormlog ignorelog SetEnvIf Request_URI "^/d/" wormlog ignorelog SetEnvIf Request_URI "^/_vti_bin/" wormlog ignorelog SetEnvIf Request_URI "^/_mem_bin/" wormlog ignorelog SetEnvIf Request_URI "^/default\.ida" wormlog ignorelog SetEnvIfNoCase Request_URI "^/msadc/" wormlog ignorelog
*access_logでcombinedで設定されたものから、ignorelogを除く設定
CustomLog /var/log/httpd/access_log combined env=!ignorelog
*worm_logでcombinedで設定されたもので、wormlogだけログを取る設定
CustomLog /var/log/httpd/worm_log combined env=wormlog
△
![]() |
Copyright(c) 528p.com All Rights Reserved. |

