はじめに
実務でapache Basic認証が出てきたため、イメージが付かないため検証してみることにしました。
Basic認証とは基本認証と呼ばれていてパスワードが暗号化されない認証です。
以下の記事を参考にしました。
https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/698apachebasic.html
LPICレベル2 小豆本を参考にしました。
「Linux教科書 LPICレベル2 Version 4.5対応」
https://amzn.asia/d/iz08jei
構築手順
VPCを作成する
サービス >> VPC >> 左ペインのお使いのVPCを選択して、「VPCを作成」をクリックする
基本的にはデフォルトVPCがありますが誤って削除した場合は再度作成されることはありません。
以下の手順で新規にVPCを作成しました。
EC2を作成する
サービス >> EC2 >> 左ペインのインスタンスを選択する
t2.microで作成しました。
セキュリティグループを作成する
インバウンドは自分のホストからしかアクセスしないため、MyIPでapacheのため80ポートとSSH接続を許可しました。
※今回443ポートは使用しません。
EC2のサブネットのルートテーブルにインターネットゲートウェイのルートが入っていない場合は
SSH接続できません。注意してください
apacheのインストール
rootに昇格する
$ sudo su -
apacheのインストールを行う
# yum install httpd
apacheのインストール後、以下が出力されたらOKです。
Installed:
httpd.x86_64 0:2.4.57-1.amzn2
Dependency Installed:
apr.x86_64 0:1.7.2-1.amzn2 apr-util.x86_64 0:1.6.3-1.amzn2.0.1 apr-util-bdb.x86_64 0:1.6.3-1.amzn2.0.1 generic-logos-httpd.noarch 0:18.0.0-4.amzn2
httpd-filesystem.noarch 0:2.4.57-1.amzn2 httpd-tools.x86_64 0:2.4.57-1.amzn2 mailcap.noarch 0:2.1.41-2.amzn2 mod_http2.x86_64 0:1.15.19-1.amzn2.0.1
Complete!
apacheサービスを起動しました
# systemctl start httpd
apacheサービスを自動起動設定しました
# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
apacheサービスを状態を確認しました
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2023-05-19 23:50:44 UTC; 2min 39s ago
Docs: man:httpd.service(8)
Main PID: 3588 (httpd)
Status: "Total requests: 2; Idle/Busy workers 100/0;Requests/sec: 0.0126; Bytes served/sec: 10 B/sec"
CGroup: /system.slice/httpd.service
tq3588 /usr/sbin/httpd -DFOREGROUND
tq3589 /usr/sbin/httpd -DFOREGROUND
tq3590 /usr/sbin/httpd -DFOREGROUND
tq3591 /usr/sbin/httpd -DFOREGROUND
tq3592 /usr/sbin/httpd -DFOREGROUND
tq3593 /usr/sbin/httpd -DFOREGROUND
mq3656 /usr/sbin/httpd -DFOREGROUND
May 19 23:50:44 ip-10-0-149-64.ap-northeast-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
May 19 23:50:44 ip-10-0-149-64.ap-northeast-1.compute.internal systemd[1]: Started The Apache HTTP Server.
[root@ip-10-0-149-64 ~]#
index.htmlを作成する
Basic認証用のフォルダとそのフォルダ配下にindex.htmlを作成しました。
# cd /var/www/html
Basic認証のフォルダ作成
# mkdir test
# ls -tlr
total 4
-rw-r--r-- 1 root root 183 May 19 23:48 index.html
drwxr-xr-x 2 root root 24 May 20 00:09 test
Basic認証のフォルダ配下にindex.htmlを作成する
Hello wordの作成方法は以下のサイトから引用
https://b3s.be-s.co.jp/nocategory/3359/
# cd test
[root@ip-10-0-149-64 test]# ls -tlr
total 4
-rw-r--r-- 1 root root 183 May 19 23:48 index.html
[root@ip-10-0-149-64 test]#
[root@ip-10-0-149-64 test]#
[root@ip-10-0-149-64 test]# cat index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>テスト</title>
</head>
<body>
<h1>Hello World!!</h1>
</body>
</html>>
</body>
</html>
apache 設定ファイルにBasic認証を入れる
apacheの設定ファイルのバックアップを取得する
# cd /etc/httpd/conf/
# cp -p httpd.conf httpd.confbk
apache 設定ファイルにBasic認証を追記しました。
# vi httpd.conf
161行目~168行目に追加
161 <Directory "/var/www/html/test">
162
163 AuthType Basic
164 AuthName "Please Enter Your ID and Password"
165 AuthUserFile /etc/httpd/conf/htpasswd
166 Require valid-user
167
168 </Directory>
左側が設定ファイル 右側が変更前の設定ファイルです。
# sdiff -s httpd.conf httpd.confbk
<
<
<
<Directory "/var/www/html/test"> <
<
AuthType Basic <
AuthName "Please Enter Your ID and Password" <
AuthUserFile /etc/httpd/conf/htpasswd <
Require valid-user <
<
</Directory> <
ユーザーアカウント登録
以下のコマンドでBasic認証のユーザーを作成されます。
/etc/httpd/conf/htpasswdファイルも新規に作成されます。
「/etc/httpd/conf/htpasswd」が既に現行サーバーに存在する場合は
ユーザー追加前に念のため、バックアップを取っておいた方が良さそうです。
# htpasswd -c /etc/httpd/conf/htpasswd test
New password:
Re-type new password:
Adding password for user test
アカウントが作成されました。パスワードは暗号化されています。
# cat /etc/httpd/conf/htpasswd
test:$apr1$0ZfL72is$0meCXhfZKBKzEiKX18M580
-cを付けるとhtpasswdが新規に作成され過去設定したユーザーが消えてしまいます。注意してください
既存のユーザーの場合はパスワードが変更できます。
以下は既存のhtpasswdファイルに対してtest2ユーザーを新規に登録した場合です。
※パスワード変更する際も以下のコマンドを使用します。
# htpasswd /etc/httpd/conf/htpasswd test2
New password:
Re-type new password:
Adding password for user test2
test2ユーザーが追加されました。
# cat /etc/httpd/conf/htpasswd
test:$apr1$0ZfL72is$0meCXhfZKBKzEiKX18M580
test2:$apr1$6zTl2wXa$wmng9A66R9e6YxWXWYAfS/
htpasswdの権限変更
# cd /etc/httpd/conf
# chown apache:apache htpasswd