【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 | 内部から送信して外部から返信されたパケットのみ許可。他は拒否。 | – |
dmz | DMZ向け。 | ssh |
drop | スタンドアロンPC向け。外部からのすべてのパケットを破棄する。 | – |
external | IPマスカレードを有効にしたゲートウェイ向け。 | 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 は他にもいろいろと細かい設定ができるようですので、おいおい調べつつ追加していきます。