たいちょの部屋 Apache フォルダの中身を見れなくする



サーバーにアクセスした時、デフォルトファイルが存在しない場合フォルダが見えてしまうので、見えなくします。



apache設定ファイルの書き換え



まずはapacheの設定ファイル/usr/local/apache/conf/httpd.confを確認します。


以下の、行を探し書き換えます。


Options Indexes Includes FollowSymLinks MultiViews
    ↓
Options Includes FollowSymLinks MultiViews 


これだけ。
とっても、簡単。






Apache アクセス制限設定



あるページに飛ぶとIDとパスを求められるという、アレが出来るようにします。



apache設定ファイルの書き換え



まずはapacheの設定ファイル/usr/local/apache/conf/httpd.confを確認します。


以下の行がコメントアウトされていないかチェックして下さい。

AccessFileName .htaccess


同じくコメントアウトされていないか確認。

<Files ~"^\.ht">
order allow,deny
deny from all
</Files>



それが済んだら以下の部分を書き換えます。


# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"

AllowOverride AuthConfig


NoneとしてあるところをAuthConfigにしておいて下さい。

これはファイル「.htaccess」によって、アクセス制限出来るようにするための設定です。



.htaccess





次、アクセス制限をかけたいディレクトリに「.htaccess」というファイルを作ります。ドットを忘れないように。

ファイルの中身の例は以下の通り。

ちなみにアクセス制限をかけたいディレクトリを/usr/home/mulder/public_html/と仮定しています。


AuthType Basic
AuthUserFile /usr/home/pass/.passwd
AuthGroupFile /dev/null
AuthName UserLogin
<Limit POST GET>
require valid-user
</Limit>

基本的にAuthUserFileとAuthName以外はこのままで問題ないです。

AuthNameは、以上のようにしておくと、IDとパスワードを入力するときに、Enter user name for FBIと表示されます。


重要なのはAuthUserFileです。

これはアクセス制限をかけるためのパスワードファイルの指定をしています。

ファイルの名前は何でも構いませんが、パスワードファイルだけにドットファイルにしておくのがいいでしょう。

で。

このパスワードファイルはweb上で見ることの出来ない場所に置かなければなりません。

というか、そうしないとセキュリティ上よくないのは当然ですよね。

このため/usr/home/mulder/public_html/ではなく、/usr/home/mulder/としています。



htpasswd



次。

サクっとパスワードファイルの作成に行きたいところですが、これには/usr/local/apache/bin/htpasswdというツールを使用します

見当たらない場合は、再度コンパイルししょう。


$ tar xvfz apache_1.3.11.tar.gz
$ cd ./apache_1.3.11/src/support
$ make htpasswd


これでapache_1.3.1/src/support以下にパスワード作成プログラムhtpasswdが作られました。

さっそく/usr/local/apache/bin/以下にコピーします

$ su
# cp ./htpasswd /usr/local/apache/bin/htpasswd





ではパスワードを作りましょう。
使い方は以下の通り。


htpasswd [パスワードファイル(パス付きで)] [パスワードを作るID]

ですが、最初はパスワードファイルなどありませんので、-cオプションを付けて使います。

こうすることでパスワードファイルの新規作成も一緒にやってくれるのです。

もちろん、パスワードファイルの場所と名前は、.htaccessに記述したものと同じにしておくこと。


/usr/local/apache/htpasswd -c /usr/home/pass/.passwd [userID] Adding password for mulder.
New password:
Re-type new password:


これでパスワードファイルが作成され、同時にuserIDに対しパスワードが作成されました。

試しにls -la /usr/home/mulder/とすれば.passwdが出来ているのが確認できるはずです。

ちなみに中身は以下のような感じです。


[userID]:{Passwd暗号}


要は ID:暗号化されたパスワード ってわけです。
また、要らなくなったIDが出来た場合はこのファイルから削除してしまえばいいわけですね。


これ以降は-cオプションを外して使えばIDをどんどん増やすことができます。
たとえばgunmenにパスワードを作りたい場合は、以下のようにすればオッケー。

/usr/local/apache/htpasswd /usr/home/mulder/.passwd gunmen

適当なところで.htaccessを置いたディレクトリにブラウザでアクセスし、パスワードが要求されるかどうか試してみましょう。




これで秘密のページが作成できますね。



apache アクセスログのローテーション設定

apacheはデフォルトの設定では、ログローテーションをしてくれません。
ずっとaccess_logにログを吐き続けると、Disk容量が枯渇してしまいます。

rotatelogsコマンドを使うと、access_logを自動でローテーションしてくれますがaccess_log.<タイムスタンプ>
というファイル名になってしまいどのaccess_logが最新が分かりづらくなってしまいます。
そんな時には、以下の設定でaccess_log.YYYY-MM-DDという日付付きの形式でログをローテーションしてくれます。

CustomLog "| /usr/local/apache/bin/rotatelogs /var/log/apache/access_log.%Y-%m-%d 86400 540" common

rotatelogsコマンドの場所は環境によって違うのでfindコマンドで調べてみて下さい。



cron で、10日以前のログを削除する。

#!/bin/sh

DELDATE=`date '+%Y-%m-%d'`
BASEDIR=/var/log/apache

echo rm -Rf ${BASEDIR}/access_log.${DELDATE}



10 0 * * * TZ=JST+231 /usr/bin/log_rool.sh




Back