CentOS Stream9でApache、PHPを設定する際の注意点についてまとめまています。
※目次をクリックすると目次の下部にコンテンツが表示されます。
Apache(v2.4)のファイル構成
1)設定ファイルの種類、配置
①/etc/httpd/conf/httpd.conf
・主要設定ファイル。
②/etc/httpd/conf.d/
・主要設定ファイル内に含まれている設定ファイル用の補助ディレクトリー。
③/etc/httpd/conf.modules.d/
・RHELにパッケージ化されたインストール済みの動的モジュールを読み込む設定ファイルの補助ディレクトリー。
・デフォルト設定では、この設定ファイルが最初に処理される。
●設定内容のチェックコマンド
# apachectl configtest
2)コンテンツの配置
●デフォルトのコンテンツ配置ディレクトリ
・/var/www/html/
●ディレクトリ、ファイルの所有者
・httpdを実行するユーザーが、デフォルトでファイルとディレクトリーを読み取れるようにする必要がある。
・コンテンツの所有者は、 root、rootグループ、または管理者別のユーザーまたはグループのいずれかになる。
・コンテンツの所有者が rootおよび rootグループの場合には、他のユーザーがファイルを読み取れるようにする必要がある。
①/etc/httpd/conf/httpd.conf
・主要設定ファイル。
②/etc/httpd/conf.d/
・主要設定ファイル内に含まれている設定ファイル用の補助ディレクトリー。
③/etc/httpd/conf.modules.d/
・RHELにパッケージ化されたインストール済みの動的モジュールを読み込む設定ファイルの補助ディレクトリー。
・デフォルト設定では、この設定ファイルが最初に処理される。
●設定内容のチェックコマンド
# apachectl configtest
2)コンテンツの配置
●デフォルトのコンテンツ配置ディレクトリ
・/var/www/html/
●ディレクトリ、ファイルの所有者
・httpdを実行するユーザーが、デフォルトでファイルとディレクトリーを読み取れるようにする必要がある。
・コンテンツの所有者は、 root、rootグループ、または管理者別のユーザーまたはグループのいずれかになる。
・コンテンツの所有者が rootおよび rootグループの場合には、他のユーザーがファイルを読み取れるようにする必要がある。
SELinux利用時のApacheの設定
1)SELinux コンテキストのタイプ
・httpd_sys_content_t である必要がある。
・デフォルトで /var/www ディレクトリー内の全コンテンツに適用される。
※SELinux コンテキストの確認例
# semanage fcontext -l | grep www
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
:
2)SELinuxの設定例
①/var/test_www/html/ディレクトリにコンテンツを配置する場合
SELinux タイプを、デフォルトの /var/ ディレクトリーのタイプに変更
# semanage fcontext -a -e /var/www /var/test_www
再帰的に、/var ディレクトリーのラベルを再設定
# restorecon -Rv /var/
②/srv/example.com/ディレクトリにコンテンツを配置する場合
# semanage fcontext -a -t httpd_sys_content_t “/srv/example.com(/.*)?”
# restorecon -Rv /srv/example.com/
※restorecon コマンドを実行する場合は、policycoreutils-python-utils パッケージをインストールする必要がある。
③TCPのポート 3131 をリッスンする場合
Ⅰ)ポート80のSELinuxコンテキストタイプを確認
# semanage port -l | grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
Ⅱ)ポート80のSELinuxコンテキストタイプが”http_port_t”なので、3131ポートも同様に指定
# semanage port -a -t http_port_t -p tcp 3131
・httpd_sys_content_t である必要がある。
・デフォルトで /var/www ディレクトリー内の全コンテンツに適用される。
※SELinux コンテキストの確認例
# semanage fcontext -l | grep www
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
:
2)SELinuxの設定例
①/var/test_www/html/ディレクトリにコンテンツを配置する場合
SELinux タイプを、デフォルトの /var/ ディレクトリーのタイプに変更
# semanage fcontext -a -e /var/www /var/test_www
再帰的に、/var ディレクトリーのラベルを再設定
# restorecon -Rv /var/
②/srv/example.com/ディレクトリにコンテンツを配置する場合
# semanage fcontext -a -t httpd_sys_content_t “/srv/example.com(/.*)?”
# restorecon -Rv /srv/example.com/
※restorecon コマンドを実行する場合は、policycoreutils-python-utils パッケージをインストールする必要がある。
③TCPのポート 3131 をリッスンする場合
Ⅰ)ポート80のSELinuxコンテキストタイプを確認
# semanage port -l | grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
Ⅱ)ポート80のSELinuxコンテキストタイプが”http_port_t”なので、3131ポートも同様に指定
# semanage port -a -t http_port_t -p tcp 3131
PHPをApacheで使用する場合の注意点
1)PHPを処理するApaheモジュール
・mod_php モジュールは削除され、RHEL 8 以降、PHPスクリプトはデフォルトで FastCGI Process Manager(FPM) が使用されている。
2)php-fpmサービスの起動
・デフォルトでhttpdと一緒に起動するように設定されている。
3)PHPの設定ファイル
〇/etc/httpd/conf.d/php.conf
・httpd の PHP 固有の設定
〇/usr/lib/systemd/system/httpd.service.d/php-fpm.conf
・デフォルトでは、php-fpm サービスは httpd と一緒に起動する。
〇/etc/php-fpm.conf
・FPM の主な設定
〇/etc/php-fpm.d/www.conf
・デフォルトの www プール設定
・mod_php モジュールは削除され、RHEL 8 以降、PHPスクリプトはデフォルトで FastCGI Process Manager(FPM) が使用されている。
2)php-fpmサービスの起動
・デフォルトでhttpdと一緒に起動するように設定されている。
3)PHPの設定ファイル
〇/etc/httpd/conf.d/php.conf
・httpd の PHP 固有の設定
〇/usr/lib/systemd/system/httpd.service.d/php-fpm.conf
・デフォルトでは、php-fpm サービスは httpd と一緒に起動する。
〇/etc/php-fpm.conf
・FPM の主な設定
〇/etc/php-fpm.d/www.conf
・デフォルトの www プール設定
- CentOS Stream9の新機能、変更点のメモ
- CentOS Stream9のネットワーク管理(NetworkManager、nmcli)
- CentOS Stream9の環境設定(ロケール、時刻設定等)
- CentOS Stream9のセキュリティ設定(暗号化ポリシー、SELinux)
- CentOS Stream9のファイアウォール設定(firewalld)
- CentOS Stream9のSSH設定(OpenSSH)
- CentOS Stream9のシステム管理(systemd)
- CentOS Stream9のシステム監視・ログ管理(syslog)
- CentOS Stream9でApache、PHPを設定する際の注意点
- CentOS Stream9のリポジトリ・モジュール管理
- CentOS Stream9のパッケージ管理(dnfコマンド)
-
インストール、設定全般、運用
- Apacheのインストール
- Apache初期設定確認
- Apacheの静的、DSOモジュールの確認、インストール方法
- Apacheでconf.dディレクトリ内の設定ファイルのインクルードに注意
- Apacheのhttpdサービスの使用方法
- WordPressパーマリンク設定時のApache設定
- Apache mod_rewriteの仕組み、設定方法、動作確認
- Apacheで特定の拡張子を含むリクエストをログ対象から外す
- CentOS Stream9でApache、PHPを設定する際の注意点
- ApacheのTraceメソッドを無効にする
- ヘッダーにApacheバージョンが表示されないようにする
- PHPのバージョン情報とApacheの設定
- Apacheでディレクトリ内一覧表示を無効にする
- Apacheで不要なモジュールはロードしない
- Apacheで不要なモジュールはロードしない(1)ベーシック認証と認証プロバイダ
- Apacheで不要なモジュールはロードしない(2)ダイジェスト認証
- Apacheで不要なモジュールはロードしない(3)mod_rewrite、LDAP、WebDAV
- Apacheで不要なモジュールはロードしない(4)Server Side Includes
- Apacheで不要なモジュールはロードしない(5)mod_mime_magic
- Apacheで不要なモジュールはロードしない(6)mod_info、mod_status
- Apacheで不要なモジュールはロードしない(7)mod_speling、mod_userdir
- Apacheで不要なモジュールはロードしない(8)プロキシ関連のモジュール
- Apacheで不要なモジュールはロードしない(9)キャッシュ関連のモジュール
- Apacheで不要なモジュールはロードしない(10)CGI関連のモジュール
- Apacheで不要なモジュールはロードしない(11)フィルター、expires、圧縮のモジュール
- Apacheでディレクトリへのアクセスを制限する設定方法
- Apacheベーシック認証の設定手順とセキュリティ上の注意
- Apacheで使用できるHTTPメソッドを制限する
- FIPS140-2とApacheのmod_nss
- Apacheにおける自己証明書作成手順
- ApacheにおけるSSL証明書インストール手順
- DoS攻撃からWebサーバーを保護するApacheモジュール
- Apacheに関するLinux側のセキュリティ設定(パーミッション、iptables、chroot)
- Modsecurityの概要と特徴
- Modsecurityのインストール方法
- modsecurityの設定方法と設定例
- Apacheのパフォーマンスに影響を与えるOS、ハードウェアの要素、注意点
- ApacheのMPMの概要とチューニング
- ApacheのMaxClientsのチューニングとListenBacklog
- HostnameLookupsを有効にして名前解決を行う場合のApacheパフォーマンスに与える影響
- FollowSymLinks、SymLinksIfOwnerMatchの設定とApacheのパフォーマンス
- AllowOverrideの設定とApacheのパフォーマンス
- コンテントネゴシエーションの設定とApacheのパフォーマンス
- Apacheのプロセス生成とパフォーマンスに与える影響
セキュリティ
パフォーマンス