インストール [05] までの状態で、インストールした HDD を丸ごと
コピーしました。つまり、クローンを作って、今日からは、
そのクローンに対して構築していきます。つまり、保険ですね。
この先、どんな間違いをしても、インストール [05] までは
保存されているということです。これからも、要所要所でクローンを
作成して、万一に備えます。
インストール [09] のクローンを作って入れ替え、インストール [12] の
クローンを作って入れ替え。まあ、「万一」なら、そこまでの保険を
かけなくてもいいのですが、私の場合、「万一」じゃなくて
「百一」とか、もっと低い確率で迷路に迷い込んで出られなく
なってしまうので、迷子になったとき、振り出しからではなく
少なくとも、何日か前の状態に戻るだけで済むというのは、
何とも心強いのです。
さて次は、ウェブサーバーの構築。このページを参考にします。
冒頭の「1. Apache用ユーザーの追加とパスワードの設定」の
ところで、Apache用ユーザーの追加することで得られる
セキュリティ上の利点の大きさと、次々とユーザーが増えることで
httpd の運用が、どの程度まで煩瑣なものになるのかが、
よくわからなかったので、あちこち読んでたら、一晩かかりました。
SSH や、FTP も危険だけど、ローカルだけで使用するなどの
制限をかけることができますが、ウェブサーバーは、外に繋がなければ
意味がありません。そのぶん、セキュリティについては、できることは
やっておくという基本的な考え方でいないとダメな気がしてきました。
というわけで、ひと晩悩んだけれど、Apache 専用のユーザーを
作成します。
# useradd -s /sbin/nologin dokolife_w
# passwd dokolife_w
ユーザー dokolife_w のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
作成したユーザーの確認です。
# cat /etc/passwd | grep dokolife_w
dokolife_w:x:1001:1001::/home/dokolife_w:/sbin/nologin
# id dokolife_w
uid=1001(dokolife_w) gid=1001(dokolife_w) groups=1001(dokolife_w)
3. Apache httpdパッケージのインストール
(参考にしたページの見出し;以下同じ)
httpd.x86_64:httpdウェブサーバー本体
httpd-devel.x86_64:httpd開発ツール、モジュールなど
httpd-manual.noarch:httpdのマニュアル
httpd-tools.x86_64:httpdに関連するツール群
以上の4つのパッケージをインストールします。
# dnf -y install httpd httpd-tools httpd-devel httpd-manual
↑↑↑ を実行。インストールを確認します。
# dnf list installed | grep httpd
centos-logos-httpd.noarch 80.5-2.el8 @AppStream
httpd.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-devel.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-filesystem.noarch 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-manual.noarch 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
httpd-tools.x86_64 2.4.37-12.module_el8.0.0+185+5908b0db @AppStream
# which httpd
/usr/sbin/httpd
3-3. httpd起動の確認
# systemctl start httpd
# systemctl status httpd
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor pres>
Active: active (running) since Sat 2019-12-07 20:02:40 JST; 44s ago
Docs: man:httpd.service(8)
Main PID: 3329 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 26213)
Memory: 44.3M
CGroup: /system.slice/httpd.service
tq3329 /usr/sbin/httpd -DFOREGROUND
tq3330 /usr/sbin/httpd -DFOREGROUND
tq3331 /usr/sbin/httpd -DFOREGROUND
tq3332 /usr/sbin/httpd -DFOREGROUND
mq3333 /usr/sbin/httpd -DFOREGROUND
12月 07 20:02:40 localhost.localdomain systemd[1]: Starting The Apache HTTP Ser>
12月 07 20:02:40 localhost.localdomain httpd[3329]: AH00558: httpd: Could not r>
12月 07 20:02:40 localhost.localdomain httpd[3329]: Server configured, listenin>
12月 07 20:02:40 localhost.localdomain systemd[1]: Started The Apache HTTP Serv>
lines 1-19/19 (END)
3-4. httpd自動起動の設定
# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
確認
# systemctl is-enabled httpd
enabled
4. firewallの許可設定
80番ポートを開ける
# firewall-cmd –add-service=http –permanent
success
設定を反映
# firewall-cmd –reload
success
設定の確認
# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: cockpit dhcpv6-client ftp http
ports: 21000-21010/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
6-1. httpd.confの変更
httpd.conf をバックアップ
# cd /etc/httpd/conf
# cp -p httpd.conf httpd.conf.org
# vi httpd.conf
6-1-1. 動作ユーザー・グループの変更
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User dokolife_w
Group dokolife_w
6-1-2. サーバー管理者のメールアドレス変更
#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin dokolife@nanjamonja.com
6-1-3. サーバーのホスト名変更
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn’t have a registered DNS name, enter its IP address here.
#
ServerName dokolife.net:80
6-3. 不要な設定ファイルの移動
# cd /etc/httpd/conf.d
# ls
README autoindex.conf manual.conf userdir.conf welcome.conf
# mv autoindex.conf autoindex.conf.org
# mv welcome.conf welcome.conf.org
6-4. 設定ファイル 変更点の反映
# systemctl restart httpd
確認
# systemctl status httpd
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor prese>
Active: active (running) since Sat 2019-12-07 21:10:20 JST; 15s ago
Docs: man:httpd.service(8)
Main PID: 3978 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 26213)
Memory: 45.0M
CGroup: /system.slice/httpd.service
tq3978 /usr/sbin/httpd -DFOREGROUND
tq3981 /usr/sbin/httpd -DFOREGROUND
tq3982 /usr/sbin/httpd -DFOREGROUND
tq3983 /usr/sbin/httpd -DFOREGROUND
mq3984 /usr/sbin/httpd -DFOREGROUND
ここまでで、ウェブサーバーの構築は、一応完了で
http://192.168.1.19/
に接続すると、
index.html が表示されました。トップページを「Object Moved」に
するのは、何らかの対策で始めたことですが、今となっては、
何のためだったか、少々調べたところでわかりません。
まあ、私のクセなのだろうくらいに思ってください。
続いて、Apache HTTPサーバの基本的なセキュリティ設定を
して行きます。
ディレクトリ内容一覧表示機能を無効にする
httpd.confを編集します。
# Further relax access to the default document root:
<Directory “/var/www/html”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options FollowSymLinks ← Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
これをしておかないと、うっかり、index.html を置き忘れた
ディレクトリにアクセスされるとファイルの一覧が表示されて
しまいます。
HTTP TRACEメソッドへの対応
httpd.confを編集します。
一番下に
## HTTP TRACE off
TraceEnable off
を追加します。
設定変更後にApacheの再起動を実行して、設定を有効にします。
クリックジャッキング攻撃への対応
# vi /etc/httpd/conf.modules.d/00-base.conf
で、00-base.conf を開いて、
LoadModule headers_module modules/mod_headers.so
↑↑↑ という行があることを確認します。
もし、コメントアウトされていたら外します。
httpd.confを編集します。
一番下に
# X-Frame-Options Setting
Header append X-FRAME-OPTIONS "DENY"
を追加します。
設定変更後にApacheの再起動を実行して、設定を有効にします。
apacheのバージョン情報を取得できないようにする
httpd.confを編集します。
一番下に
ServerTokens ProductOnly
ServerSignature off
を追加します。
設定変更後にApacheの再起動を実行して、設定を有効にします。
今夜は、このくらいですかね。PHPをインストールしたら、
PHP バージョン表示の無効化も必要ですね。
その次は、MariaDB 10のインストールという順番でしょうか。