事前準備
リポジトリの最新化
まずはリポジトリを更新しておきます。
必要に応じてインストールも行います。
1 |
# dnf update |
次に、httpdをdnfで探してみます。
なお、--showduplicateを引数に指定することで、
dnf searchする対象のソフトウェアバージョンも表示してくれます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# 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をインストール
バージョンが確認できたらインストールしてゆきます。
1 |
#dnf install -y httpd |
以上。
httpd-2.4.37のファイル構成
httpdで編集をよく行うファイルは以下の通りです。
また、httpd.confと別に/etc/httpd/conf.d/へ
ssl.confを配置する人もいますね。
これは、SSL通信の設定を分けるために用意する場合が多いようです。
設定
/etc/httpd/conf/httpd.confの設定
必要最低限の設定は下記の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 |
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を開けるコマンドはこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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を無効にする、と書かれていますが、
実際のところこれはあまり推奨されません。
完全に無効化してしまうと
サーバへ侵入されてしまった場合に、
重要な情報へアクセスされたり
別のサービスを乗っ取られたり
といったことが起きてしまう可能性があります。
適切な設定で有効にしておけば、
被害を最小限に食い止めることも可能だということです。
かといって、今すぐに設定を行うのは
サービス停止に繋がる恐れがあるためここでは検知モードにしておきます。
1 2 |
# vim /etc/selinux/config SELINUX=permissive |
permissiveという値に変更することで、
遮断はしないがログには書き出すということが可能になります。
セキュリティ向上のための設定
知っているかもしれないですが、apache httpdというのは初期設定のままだと
セキュリティ的にあまりよろしくない状態です。
バージョン情報がバレてしまうだけで、
攻撃者はチャンスと思うかもしれません。
そんな攻撃の機会を与えないように、
別の記事で紹介する方法で対策しておきましょう。