Apacheのアクセス制限について
職場でBasic認証の設定を扱うのでその備忘録に。
とりあえずはIP制限などから
*ファイルの位置についてはfindコマンドでディレクトリを確認
find / -name httpd.conf
◎◎◎特定のIPアドレスのみを許可する
1、httpd.confファイル[AllowOverride設定]
下記の設定で有効にする
$ AllowOverride All
→ApacheやPHPの設定をディレクトリ毎に変更するために必要な.htaccessを有効・無効に設定できる。
設定がAllの場合は有効、Noneにすると無効になる。
2、httpd.confファイル[DocumentRootの確認]
DocumentRoot→公開コンテンツを設置するディレクトリ名をさす。
ここにおいたhtmlファイルやphpファイルをブラウザに表示できる。
$ DocumentRoot "/var/www/html"
3、.htaccessを作成
ファイルはドキュメントルート直下に.htaccessファイルを作成、編集
$ vi .htaccess---------------------
Order Deny,Allow
Deny from All
Allow from [許可したいIPアドレス]
----------------------------------
※Orderディレクティブの後はDenyとAllowが評価される順番をさす。
上記の場合DenyディレクティブがAllowディレクティブより先に評価される。
→基本的にすべて拒否。その中でIPアドレスのみ許可する。
上記のOrderの後をAllow,Denyにすると、評価の順番が入れ替わり、最後に評価されるDeny from allに
よりすべてのアクセスが拒否される。
☆特定のIPアドレスだけを制限する
vi .htaccess--------------------
Order Allow,Deny
Allow from all
Deny from IP-1
Deny from IP-2
Deny from IP-3
--------------------------------
OederディレクティブでAllowを先に評価させ、Allow from allですべてを許可してから
Deny で特定のIPを拒否する。
なおfromの後にはIPアドレス以外にもドメイン名(example.comのような形式)も設定可能
◎◎◎Basic認証
ApacheのBasic認証機能を使うとIDとPassを知っているユーザーのみがページを閲覧できるようにできる。
特定ページにブラウザからアクセスしたときIDとPassを入力するまで待機状態になる。
1、.htaccessファイルの設定
.htaccessファイルをドキュメントルートに準備下記を入力。
$ vi .htaccess--------------------
AuthType Basic
AuthName "Member Only"
AuthUserFile 絶対パス/.htpasswd
Require valid-user
----------------------------------
AuthType→ユーザ承認をBasic認証に設定
AuthName→ログイン画面で表示される文字列を設定。(半角スペースがある場合引用符で囲む)
AuthUserFile→IDとPassの一覧が記録されているファイルのパスを設定。
Require valid-user→認証されたユーザすべてにディレクトリへのアクセスを許可する。
2、パスワードファイルの作成(htpasswdコマンド)
コマンド→/var/www/html/.htpasswd sample
$ htpasswd -c .htpasswd [ユーザID]
$ New password:********
$ Re-type new password:********
$ Adding password for user [ユーザID]
パスワードファイルの新規作成
$ htpasswd -c [パスワードファイル名] [ユーザID]
ユーザ追加
$ htpasswd [パスワードファイル名] [ユーザID]
ユーザ削除
$ htpasswd -D [パスワードファイル名] [ユーザID]
3、ブラウザに表示確認
ドキュメントルートにサンプルファイルを置いてみる(sample.php)
同じディレクトリに.htaccessと.htpasswdがあるのを確認
http://localhost/sample.phpを閲覧するとログイン画面が表示されるので、
IDとPassを入力して送信。