httpd

CentOS8にhttpdを構築する手順 まとめ

事前準備

リポジトリの最新化

まずはリポジトリを更新しておきます。
必要に応じてインストールも行います。

# dnf update

次に、httpdをdnfで探してみます。
なお、--showduplicateを引数に指定することで、
dnf searchする対象のソフトウェアバージョンも表示してくれます。

# dnf search httpd --showduplicate
メタデータの期限切れの最終確認: 0:17:01 時間前の 2020年02月04日 07時12分09秒 に実施しました。
================================================================= 名前 完全一致: httpd ==================================================================
httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 : Apache HTTP Server
================================================================ 名前 & 概要 一致: httpd ================================================================
centos-logos-httpd-80.5-2.el8.noarch : CentOS-related icons and pictures used by httpd
keycloak-httpd-client-install-1.0-2.el8.noarch : Tools to configure Apache HTTPD as Keycloak client
python3-keycloak-httpd-client-install-1.0-2.el8.noarch : Tools to configure Apache HTTPD as Keycloak client
=================================================================== 名前 一致: httpd ====================================================================
httpd-devel-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 : Development interfaces for the Apache HTTP server
httpd-tools-2.4.37-16.module_el8.1.0+256+ae790463.x86_64 : Tools for use with the Apache HTTP Server
httpd-manual-2.4.37-16.module_el8.1.0+256+ae790463.noarch : Documentation for the Apache HTTP server
libmicrohttpd-1:0.9.59-2.el8.i686 : Lightweight library for embedding a webserver in applications
libmicrohttpd-1:0.9.59-2.el8.x86_64 : Lightweight library for embedding a webserver in applications
httpd-filesystem-2.4.37-16.module_el8.1.0+256+ae790463.noarch : The basic directory layout for the Apache HTTP server
=================================================================== 概要 一致: httpd ====================================================================
mod_dav_svn-1.10.2-1.module_el8.0.0+45+75bba4f4.x86_64 : Apache httpd module for Subversion server
mod_auth_mellon-0.14.0-9.el8.x86_64 : A SAML 2.0 authentication module for the Apache Httpd Server

httpdをインストール

バージョンが確認できたらインストールしてゆきます。

#dnf install -y httpd

以上。

httpd-2.4.37のファイル構成

httpdで編集をよく行うファイルは以下の通りです。

/etc/httpd/conf/httpd.conf

また、httpd.confと別に/etc/httpd/conf.d/へ
ssl.confを配置する人もいますね。
これは、SSL通信の設定を分けるために用意する場合が多いようです。

設定

/etc/httpd/conf/httpd.confの設定

必要最低限の設定は下記の通りです。

Listen 80
User apache
Group apache
ServerAdmin root@localhost
DocumentRoot "/var/www/html"
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>
ErrorLog "logs/error_log"
LogLevel warn

基本的にデフォルトの設定で起動すれば問題ないです。
実際にドメインを取得している場合や、外部に公開する場合は
その他の設定が必要になります。

ファイアウォールの設定

Linux系のサーバでhttpdを立ち上げるには、
標準で有効になっているファイアウォールを穴あけしておく必要があります。
正確には、サーバに対する通信を全て遮断しているため、
80/tcpのポートのみ許可する設定を入れることになります。
※もちろんHTTPSを動作させたいのであれば、443/tcpも開放する必要があります。
80/tcpを開けるコマンドはこちらです。

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: cockpit dhcpv6-client http ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules: 

一つ目のコマンドでhttpサービスを開放するよう指定します。
--permanentは恒久的に、という意味があります。
ゾーンpublicの場所にhttpサービスを許可するよう依頼してくれ、永遠に。
とでも訳しましょうか。
個人的には、上記の覚え方が好きだったりします。
二つ目のコマンドでファイアウォールのルールを再読み込みしています。
三つ目のコマンドでは、現在どのポートが空いているのか?を確認できます。
一つ目で追加したhttpサービスが反映されてますね。

SELinuxの設定

Linuxでサーバを構築する際のhow toを書いた記事では、
ほとんどがSELinuxを無効にする、と書かれていますが、
実際のところこれはあまり推奨されません。
完全に無効化してしまうと
サーバへ侵入されてしまった場合に、
重要な情報へアクセスされたり
別のサービスを乗っ取られたり
といったことが起きてしまう可能性があります。
適切な設定で有効にしておけば、
被害を最小限に食い止めることも可能だということです。
かといって、今すぐに設定を行うのは
サービス停止に繋がる恐れがあるためここでは検知モードにしておきます。

# vim /etc/selinux/config
SELINUX=permissive

permissiveという値に変更することで、
遮断はしないがログには書き出すということが可能になります。

セキュリティ向上のための設定

知っているかもしれないですが、apache httpdというのは初期設定のままだと
セキュリティ的にあまりよろしくない状態です。
バージョン情報がバレてしまうだけで、
攻撃者はチャンスと思うかもしれません。
そんな攻撃の機会を与えないように、
別の記事で紹介する方法で対策しておきましょう。

-httpd
-, ,

© 2020 サーバ構築.net Powered by AFFINGER5