【CentOS8】Firewall を停止しない

CentOS 8 には Firewall なるものが設定されていて、通常では http アクセスなどは拒否する設定になっています。開発環境では SELinux 同様、問答無用で無効にしていたのですが、停止せずともポートを解放してあげればいいだけなので、ここにその方法をまとめておきます。

目次出力

現在の設定の確認

$ firewall-cmd --list-all

# ↓出力結果
# public (active)
#  target: default
#  icmp-block-inversion: no
#  interfaces: eth0 eth1
#  sources: 
#  services: cockpit dhcpv6-client ssh
#  ports: 
#  protocols: 
#  masquerade: no
#  forward-ports: 
#  source-ports: 
#  icmp-blocks: 
#  rich rules: 

なにやら public という zoon が設定されていて、それは cockpit、dhcpv6-client、ssh というサービスが許可(ポートが解放されている)ようです。

ポートを解放する

開発環境では http での通信が必要なので、ポートを解放する設定を public というゾーンに加えます。

# ポート解放設定
firewall-cmd --add-service=http --zone=public --permanent

# 設定の再読み込み
firewall-cmd --reload

再読み込み後、http アクセスが可能になりました。

ポートを閉じる

不要なポートは閉じましょう、セキュリティ的に。

# 「cockpit」のポートを閉じる設定
sudo firewall-cmd --remove-service=cockpit --zone=public --permanent

# 設定の再読み込み
firewall-cmd --reload

ゾーンとは?

zoon とは、Firewall 設定の雛形みたいなもので、あらかじめ作成してあるようです。なのでサーバの使い方によってゾーンを変更してみてると良いかも。

ゾーンの種類

ゾーン名用途デフォルトで解放担っているサービス
public公開サーバ向け。cockpit、dhcpv6-client、ssh
block内部から送信して外部から返信されたパケットのみ許可。他は拒否。
dmzDMZ向け。ssh
dropスタンドアロンPC向け。外部からのすべてのパケットを破棄する。
externalIPマスカレードを有効にしたゲートウェイ向け。ssh
home自宅のPC向け。cockpit、dhcpv6-client、mdns、samba-client、ssh
internal信頼できる内部ネットワーク向け。cockpit、dhcpv6-client、mdns、samba-client、ssh
trusted仏様向け。全て。
work職場向け。cockpit、dhcpv6-client、ssh

ゾーンの種類

ちなみにゾーンには「アクティブ」と「デフォルト」があります。

  • アクティブゾーン:ネットワークインターフェースに割り当てられたゾーン
  • デフォルトゾーン:ネットワークインターフェースにアクティブゾーンが設定されていない場合は、こちらが割りあてられる。

ゾーンの変更

# アクティブゾーンの変更
sudo firewall-cmd --zone=home --change-interface=eth0

# デフォルトゾーンの変更
firewall-cmd --set-default-zone=home

# 再読み込み
sudo firewall-cmd --reload

Firewall は他にもいろいろと細かい設定ができるようですので、おいおい調べつつ追加していきます。

ナカタケワークス

福岡の小さな会社専用のITフリーランスです。シンプルで、地球に優しい IT 環境を。