Apache2.4でテスト環境を構築する話


はじめに

こんにちは、はるちゃです。
開発環境にAWSを使用しています。
テスト環境に移行した際に社外の人に見られたくない。。。
と思ったので、メモとして置いときます。

前提

  • AWSのアカウントを所持していること
  • インスタンスを生成していること
  • apacheをインストールしていること

私はAWS初心者なので Amazon Linux 2 AMI (HVM), SSD Volume Typeを使用しています。

目次

1.ip制限をかける
2.Basic認証の導入
3.ip制限、Basic認証の併用

ip制限をかける

httpd.conf
<Directory "/var/www/html">
...
# Require all granted #ここのコメントをオンにすると全体から閲覧できるようになります。
Require ip XXX.XXX.XX.X #IPアドレスを挿入します。
...
</Directory>

この方法が一番簡単です。
自社の人なら誰でも見ていいよーって時はこの方法でいいと思います。

Basic認証の導入

はじめにhtpasswdが存在するか確認。。。

[ec2-user@プライベートip]$htpasswd 
Usage:
htpasswd [-cimBdpsDv] [-C cost] passwordfile username
htpasswd -b[cmBdpsDv] [-C cost] passwordfile username password

htpasswd -n[imBdps] [-C cost] username
htpasswd -nb[mBdps] [-C cost] username password
 -c  Create a new file.
 -n  Don't update file; display results on stdout.
 -b  Use the password from the command line rather than prompting for it.
 -i  Read password from stdin without verification (for script usage).
 -m  Force MD5 encryption of the password (default).
 -B  Force bcrypt encryption of the password (very secure).
 -C  Set the computing time used for the bcrypt algorithm
     (higher is more secure but slower, default: 5, valid: 4 to 17).
 -d  Force CRYPT encryption of the password (8 chars max, insecure).
 -s  Force SHA encryption of the password (insecure).
 -p  Do not encrypt the password (plaintext, insecure).
 -D  Delete the specified user.
 -v  Verify password for the specified user.
On other systems than Windows and NetWare the '-p' flag will probably not work.
The SHA algorithm does not use a salt and is less secure than the MD5 algorithm.

存在しない場合は↓のリンクを参照してinstallしてください。
http://tanihiro.hatenablog.com/entry/2014/02/05/172938

次に

$ cd /etc/httpd/conf #このコマンドでconf階層まで必ず移動してください
$sudo htpasswd -c <filepass名> <username> 
New password: パスワード入力
Re-type new password: パスワード再入力
Adding password for user <username>

あとは下記の通りにDirectoryにBasic認証条件を記入します。

httpd.conf
<Directory "/var/www/html">
...
    AuthType Basic
    AuthName "Basic Auth"
    AuthUserFile /etc/httpd/conf/.htpasswd
    Require valid-user
...
</Directory>

ここまでの設定が終わったら、apacheを再起動してください。

こんな画面が出てきたら成功です!

ip制限、Basic認証の併用

httpd.conf
<Directory "/var/www/html">
...
<RequireAll>
    Require ip 自分のIPアドレス
    <RequireAny>
        AuthType Basic
        AuthName "適当なコメント"
        AuthUserFile /etc/httpd/conf/<ファイル名>
        Require valid-user
    </RequireAny>
</RequireAll>
・・・
</Directory>

上記のように設定すれば、IPアドレスが違うユーザーはサイトに入ることができません。
仮にIPアドレスが一致していた場合もBasic認証が作動します。
うっかり開発者以外の人が入ってデータを消してしまう心配が少し減ります。

終わりに

今回はここまでです。
テスト環境を構築するのに困っている人の役に立てば幸いです。

記載にミスがあったり書き方が違うなど、あればコメントよろしくお願いします!