8. firewalld 設定
2025/10/27
firewalld 設定の解説
メールサーバー構築の前準備として、最小限のファイアウォール設定を行います。sudo systemctl enable --now firewalldfirewalldサービスを有効化かつ即座に起動
enable: システム起動時の自動起動を有効化
- now: enableと同時にstartも実行(2つのコマンドを1つに)
詳細な動作:
# このコマンドは以下の2つと同等sudo systemctl enable firewalld # 自動起動を有効化 sudo systemctl start firewalld # サービスを起動# 状態確認
sudo systemctl status firewalld # firewalld.service - firewalld - dynamic firewall daemon # Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) # Active: active (running) since ... # 他の確認方法 sudo firewall-cmd --state # running と表示 sudo firewall-cmd --permanent --add-service=sshSSH接続(22番ポート)を恒久的に許可
--permanent: 設定を永続化(再起動後も有効)
--add-service=ssh: SSHサービスの通信を許可
重要な概念:
# firewalldの2つの設定1. Runtime(実行時): 現在動作中の設定
2. Permanent(永続): 保存された設定(再起動後に適用)
# --permanentなしの場合
sudo firewall-cmd --add-service=ssh # 即座に反映、再起動で消える
# --permanentありの場合
sudo firewall-cmd --permanent --add-service=ssh # 保存のみ、即座には反映されない
sudo firewall-cmd --reload # reloadで反映
# サービス定義の確認
sudo firewall-cmd --info-service=ssh
# ssh
# ports: 22/tcp
# protocols:
# source-ports:
# modules:
# destination:
sudo firewall-cmd --reload永続設定を実行時設定に反映
既存の接続は維持される(安全なリロード)
permanent設定をruntime設定にコピー
reloadとrestartの違い:
# reload(推奨) sudo firewall-cmd --reload # - 既存接続を維持 # - 設定の再読み込みのみ # - ダウンタイムなし # restart(非推奨) sudo systemctl restart firewalld # - 全接続が一時切断 # - サービス全体を再起動 # - 瞬断が発生# 設定の同期確認
sudo firewall-cmd --list-all # runtime設定 sudo firewall-cmd --permanent --list-all # permanent設定 sudo firewall-cmd --list-all現在の全ファイアウォール設定を表示
ゾーン、サービス、ポート、ルールなどを確認
出力例と解説:
public (active) # ゾーン名(デフォルト: public)
target: default # デフォルトアクション
icmp-block-inversion: no # ICMP反転ブロック
interfaces: eth0 # 適用インターフェース
sources: # ソースIP/ネットワーク
services: ssh # 許可サービス ← 重要
ports: # 許可ポート番号
protocols: # 許可プロトコル
forward: yes # 転送設定
masquerade: no # マスカレード(NAT)
forward-ports: # ポート転送
source-ports: # ソースポート
icmp-blocks: # ブロックするICMPタイプ
rich rules: # 詳細ルール
firewalldの基本概念
ゾーン(Zone)の理解# 利用可能なゾーン一覧 sudo firewall-cmd --get-zones # block dmz drop external home internal public trusted work # 各ゾーンの特徴 drop # 全て拒否(返答なし) block # 全て拒否(拒否通知あり) public # デフォルト、最小限許可 ← 現在使用中 external # NAT用 dmz # DMZ用 work # 職場用(より多くを信頼) home # 自宅用(より多くを信頼) internal # 内部ネットワーク trusted # 全て許可
# アクティブゾーンの確認 sudo firewall-cmd --get-active-zonesサービスとポートの管理
# 利用可能なサービス一覧
sudo firewall-cmd --get-services | tr ' ' '\n' | grep -E 'mail|smtp|pop|imap' # smtp # smtps # smtp-submission # 587番ポート # pop3 # pop3s # imap # imaps # サービス定義ファイルの場所 ls /usr/lib/firewalld/services/ cat /usr/lib/firewalld/services/smtp.xml # ポート番号で直接指定する方法 sudo firewall-cmd --permanent --add-port=25/tcp sudo firewall-cmd --permanent --add-port=587/tcp