アラサー転職組の新米エンジニア日記

2017年に未経験からエンジニアになったアラサーです。

Apacheのアクセス制限について

職場でBasic認証の設定を扱うのでその備忘録に。

とりあえずはIP制限などから

 



*ファイルの位置についてはfindコマンドでディレクトリを確認
find / -name httpd.conf

◎◎◎特定のIPアドレスのみを許可する

1、httpd.confファイル[AllowOverride設定]
下記の設定で有効にする

$ AllowOverride All

ApachePHPの設定をディレクトリ毎に変更するために必要な.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認証

ApacheBasic認証機能を使うと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を入力して送信。