目次
1. firewalld(ファイアウォール)の設定
firewalld は、外部からサーバーへの通信(インバウンド)を制限する「外壁」の役割を果たします。
① 状態の確認と基本操作
現在の動作状況を確認し、必要に応じて起動・停止を行います。
| 操作内容 | コマンド |
|---|---|
| 現在の状態確認 | systemctl status firewalld |
| 起動 | sudo systemctl start firewalld |
| 停止 | sudo systemctl stop firewalld |
| 自動起動の有効化 | sudo systemctl enable firewalld |
| 自動起動の無効化 | sudo systemctl disable firewalld |
② サービスの許可設定(ポート開放)
特定のサービスを公開する場合は、個別に許可設定を行う必要があります。
ポイント
設定後は必ず --reload で反映させてください。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
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 に変更
設定ファイルを編集し、OSを再起動します。
sudo vi /etc/selinux/config
【変更箇所】SELINUX=enforcing → SELINUX=disabled に書き換え。
※保存後、sudo reboot で反映。
3. 運用スタイル別:推奨設定ガイド
利用環境に合わせて、以下の設定を検討してください。
| 環境 | firewalld の推奨 | SELinux の推奨 |
|---|---|---|
| インターネット公開 | 有効(必要なポートのみ厳選) | Enforcing(高度な守り) |
| 家庭内・社内LAN限定 | 有効(または停止) | Permissive / Disabled |
| 開発・検証環境 | 必要に応じて設定 | Disabled(トラブル回避を優先) |
4. クイックリファレンス:トラブル時のチェック項目
- 「ポートは開けたのに繋がらない」
firewall-cmd --list-allで設定が反映されているか確認してください。--reloadを忘れていないか確認してください。
- 「権限(パーミッション)は正しいのにファイルが開けない」
SELinux が原因の可能性があります。一時的にsetenforce 0を試して解決するか確認してください。 - 「設定ファイルを書き換えたのに反映されない」
SELinux の無効化設定には OS の再起動が必要です。
5. 次のステップへの推奨
基本的な守りが固まったら、次は「SSH鍵認証の設定(パスワードなしログイン)」や、ノートPCサーバーならではの「スリープ設定の解除」に進むのがスムーズです。
6. 実践:SELinuxをEnforcingへ移行する手順
Webサーバーの設定、HTTPS化、DDNSスクリプトの実行許可(chcon)など、SELinuxを有効にしても動くための「下準備」が整ったら、Enforcing(有効)へ移行しましょう。それこそが本来の強固なセキュリティを完成させるための最後の仕上げです。
安全な進め方
「まずは一時的に変更してテスト」→「問題なければ永久保存」という流れで進めます。
一時的に Enforcing に切り替える
まずは、再起動しなくても反映されるコマンドで切り替えます。
sudo setenforce 1
確認します:
getenforce
→ Enforcing と表示されれば、現在ガードがかかっている状態です。
動作確認(ここが重要!)
この状態で、サーバーの機能が正常かチェックしてください。
- Webサイトの閲覧:スマホ等から
https://www.your-domain.mydns.jp(ご自身のドメイン)を開き、正しく表示されるか確認。 - DDNSスクリプトのテスト:手動で実行してエラーが出ないか確認。
(sudo /opt/scripts/mydns_update.sh cat /var/log/mydns_update.logcompleted successfullyと出ていればOK)
もしここでエラーが出たり、サイトが見れなくなった場合
すぐに sudo setenforce 0 と打てば Permissive に戻り、復旧できます。その場合はどこかの設定(ラベル貼り)が漏れています。
設定を「永久保存」する
STEP 2で問題がなければ、OSを再起動しても Enforcing になるように設定ファイルを書き換えます。
sudo vi /etc/selinux/config
以下の行を探し、permissive を enforcing に書き換えます。
SELINUX=enforcing
💡 なぜこの手順が「最強」なのか
Ubuntuにはなかったこの Enforcing モードは、万が一Webサーバーの脆弱性を突かれてハッカーに侵入されたとしても、「Webサーバーという名札をつけたプログラムは、Web公開用のファイル以外は絶対に触らせない」という強力な強制力を持っています。
firewalld & SELinux 設定 完了
外壁(firewalld)と内壁(SELinux)の二重の守りが整いました。次はSSH鍵認証の設定に進みましょう。