Rocky Linux 9 一覧へ戻る トップRocky Linux 9 / firewalld&SELinux設定
Rocky Linux 9 ・ セキュリティ・管理

ファイアウォール(firewalld)&SELinux設定

外部通信を制御する firewalld と、システム内部の権限を制御する SELinux の基本操作と設定方法

firewalld SELinux

目次

  1. firewalld(ファイアウォール)の設定
  2. SELinux(セキュリティ強化Linux)の設定
  3. 運用スタイル別:推奨設定ガイド
  4. クイックリファレンス:トラブル時のチェック項目
  5. 次のステップへの推奨
  6. 実践:SELinuxをEnforcingへ移行する手順
  7. なぜこの手順が「最強」なのか

1. firewalld(ファイアウォール)の設定

firewalld は、外部からサーバーへの通信(インバウンド)を制限する「外壁」の役割を果たします。

① 状態の確認と基本操作

現在の動作状況を確認し、必要に応じて起動・停止を行います。

操作内容コマンド
現在の状態確認systemctl status firewalld
起動sudo systemctl start firewalld
停止sudo systemctl stop firewalld
自動起動の有効化sudo systemctl enable firewalld
自動起動の無効化sudo systemctl disable firewalld

② サービスの許可設定(ポート開放)

特定のサービスを公開する場合は、個別に許可設定を行う必要があります。

ポイント

設定後は必ず --reload で反映させてください。

HTTP(80番)を許可する
sudo firewall-cmd --permanent --add-service=http
HTTPS(443番)を許可する
sudo firewall-cmd --permanent --add-service=https
特定のポート(例:VNC 5901番)を許可する
sudo firewall-cmd --permanent --add-port=5901/tcp
設定を反映する(必須)
sudo firewall-cmd --reload

2. SELinux(セキュリティ強化Linux)の設定

SELinux は、プロセスやファイルへのアクセスを細かく制限する「内壁」です。

① 現在の状態確認

getenforce
モード意味
Enforcing有効(アクセス制御を強制実行)
Permissive警告のみ(拒否はしないがログに残る)
Disabled無効

② SELinux の動作モードの変更

トラブルシューティングや、特定のアプリが動作しない場合にモードを切り替えることがあります。

一時的な変更(再起動で戻る)
sudo setenforce 0   # Permissive に変更
sudo setenforce 1   # Enforcing に変更
永続的な無効化(LAN内での利便性重視の場合)

設定ファイルを編集し、OSを再起動します。

sudo vi /etc/selinux/config

【変更箇所】SELINUX=enforcingSELINUX=disabled に書き換え。

※保存後、sudo reboot で反映。

3. 運用スタイル別:推奨設定ガイド

利用環境に合わせて、以下の設定を検討してください。

環境firewalld の推奨SELinux の推奨
インターネット公開有効(必要なポートのみ厳選)Enforcing(高度な守り)
家庭内・社内LAN限定有効(または停止)Permissive / Disabled
開発・検証環境必要に応じて設定Disabled(トラブル回避を優先)

4. クイックリファレンス:トラブル時のチェック項目

  1. 「ポートは開けたのに繋がらない」
    • firewall-cmd --list-all で設定が反映されているか確認してください。
    • --reload を忘れていないか確認してください。
  2. 「権限(パーミッション)は正しいのにファイルが開けない」
    SELinux が原因の可能性があります。一時的に setenforce 0 を試して解決するか確認してください。
  3. 「設定ファイルを書き換えたのに反映されない」
    SELinux の無効化設定には OS の再起動が必要です。

5. 次のステップへの推奨

基本的な守りが固まったら、次は「SSH鍵認証の設定(パスワードなしログイン)」や、ノートPCサーバーならではの「スリープ設定の解除」に進むのがスムーズです。

6. 実践:SELinuxをEnforcingへ移行する手順

Webサーバーの設定、HTTPS化、DDNSスクリプトの実行許可(chcon)など、SELinuxを有効にしても動くための「下準備」が整ったら、Enforcing(有効)へ移行しましょう。それこそが本来の強固なセキュリティを完成させるための最後の仕上げです。

安全な進め方

「まずは一時的に変更してテスト」→「問題なければ永久保存」という流れで進めます。

STEP 1

一時的に Enforcing に切り替える

まずは、再起動しなくても反映されるコマンドで切り替えます。

sudo setenforce 1

確認します:

getenforce

Enforcing と表示されれば、現在ガードがかかっている状態です。

STEP 2

動作確認(ここが重要!)

この状態で、サーバーの機能が正常かチェックしてください。

  1. Webサイトの閲覧:スマホ等から https://www.your-domain.mydns.jp(ご自身のドメイン)を開き、正しく表示されるか確認。
  2. DDNSスクリプトのテスト:手動で実行してエラーが出ないか確認。
    sudo /opt/scripts/mydns_update.sh
    cat /var/log/mydns_update.log
    completed successfully と出ていればOK)

もしここでエラーが出たり、サイトが見れなくなった場合

すぐに sudo setenforce 0 と打てば Permissive に戻り、復旧できます。その場合はどこかの設定(ラベル貼り)が漏れています。

STEP 3

設定を「永久保存」する

STEP 2で問題がなければ、OSを再起動しても Enforcing になるように設定ファイルを書き換えます。

1. 設定ファイルを開く
sudo vi /etc/selinux/config
2. 書き換え

以下の行を探し、permissiveenforcing に書き換えます。

SELINUX=enforcing
3. 保存して終了(:wq)

💡 なぜこの手順が「最強」なのか

Ubuntuにはなかったこの Enforcing モードは、万が一Webサーバーの脆弱性を突かれてハッカーに侵入されたとしても、「Webサーバーという名札をつけたプログラムは、Web公開用のファイル以外は絶対に触らせない」という強力な強制力を持っています。

firewalld & SELinux 設定 完了

外壁(firewalld)と内壁(SELinux)の二重の守りが整いました。次はSSH鍵認証の設定に進みましょう。

Rocky Linux 9 一覧へ戻る