CentOs9 Firewallを設定する

CentOs9 Firewallを設定する

CentOs9で、firewallの設定の方法をまとめて記載してます。Firewalldは、CentOs9のファイアーウォールを設定するサービスのことです。

環境

  • OS CentOS Stream release 9

ポートの許可

恒久的にポート88を許可する

$ sudo firewall-cmd --add-port=88/tcp --zone=public --permanent

reloadしないと反映しません
$ sudo firewall-cmd --reload

設定したポート88を削除

$ sudo firewall-cmd --remove-port=88/tcp --zone=public --permanent

firewallで許可されているポートを一覧確認する
※「reload」して反映されていないものは、表示されません。

$ sudo firewall-cmd --list-ports --zone=public

88/tcp 5432/tcp 6379/tcp

恒久的のみ確認する場合は以下を実行します

$ sudo firewall-cmd --list-ports --zone=public --permanent

また、ポートを一括で追加する場合は、以下のように実行します。

$ sudo firewall-cmd --add-port={8082,8083}/tcp --zone=public --permanent

サービスの許可

恒久的にhttpsサービスを許可する

$ sudo firewall-cmd --add-service=https --zone=public --permanent

reloadで反映
$ sudo firewall-cmd --reload

httpsサービスを削除する

$ sudo firewall-cmd --remove-service=https --zone=public --permanent

reloadで反映する
$ sudo firewall-cmd --reload

firewallで許可されているービスを一覧確認する

$ sudo firewall-cmd --list-services --zone=public

恒久的のみ確認する場合は以下
$ sudo firewall-cmd --list-services --zone=public --permanent

登録可能サービス確認

登録可能なサービス名を一覧で確認するには以下のコマンドを実行します。

$ firewall-cmd --get-services

RH-Satellite-6 RH-Satellite-6-capsule amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit collectd condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger foreman foreman-proxy freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp galera ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell kube-api kube-apiserver kube-control-plane kube-controller-manager kube-scheduler kubelet-worker ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nbd netbios-ns nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rquotad rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wireguard wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

IPアドレスの許可

恒久的にIPアドレスを指定して許可
※ここでは「192.168.1.0~192.168.1.255」まで許可してます。

$ sudo firewall-cmd --add-source=192.168.1.0/24 --zone=public --permanent

恒久的のみ確認する場合は以下
$ sudo firewall-cmd --reload

IPアドレスの拒否

恒久的にIPアドレスを指定して拒否

$ sudo firewall-cmd --add-source=192.168.1.0/24 --zone=drop --permanent

reloadで反映
$ sudo firewall-cmd --reload

デフォルトゾーンの設定確認

デフォルトゾーンの設定確認は、以下のコマンドで可能です。

デフォルトゾーンの確認
$ sudo firewall-cmd --list-all

デフォルトゾーンの恒久的のみ確認
$ sudo firewall-cmd --list-all --permanent

全てのゾーンの確認
$ sudo firewall-cmd --list-all-zones

activeなゾーンの確認
$ sudo firewall-cmd --get-active-zones

全てのゾーンの恒久的のみ確認
$ sudo firewall-cmd --list-all-zones --permanent

ゾーンの追加

ゾーンの追加は、以下のコマンドで可能です。

$ sudo firewall-cmd --new-zone=testzone --permanent

「/etc/firewalld/zones」に「testzone.xml」が追加されます。

ゾーンの削除

ゾーンの削除は以下となります。

$ sudo firewall-cmd --delete-zone=testzone --permanent

「/etc/firewalld/zones」にあった「testzone.xml」 がリネームされて「testzone.xml.old」となります。

ステータス確認

ステータスは、以下で確認できます。

$ systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-08-22 10:13:43 JST; 2 days ago
       Docs: man:firewalld(1)
   Main PID: 839 (firewalld)
      Tasks: 4 (limit: 21898)
     Memory: 44.2M

起動と停止

firewallを起動する場合と、停止する場合は、以下のコマンドを実行します。

起動
$ sudo systemctl start firewalld

停止
$ sudo systemctl stop firewalld

自動起動

マシン起動時に、自動起動を行う場合は「enable」を使用します。

有効化
$ sudo systemctl enable firewalld

無効化
$ sudo systemctl disable firewalld

状態確認
$ sudo systemctl is-enabled firewalld

バージョン確認

使用してるfirewallのバージョンは、以下で確認できます。

$ sudo firewall-cmd --version

1.0.0

ヘルプ

ヘルプを実行する場合は、以下となります。

$ firewall-cmd --help

設定ファイルを直接編集

「/etc/firewalld/zones」にある「public.xml」を直接編集して設定することも可能です。

TCP 80番ポートの通信許可をする場合
<port protocol="tcp" port="80"/>

編集する前に、バックアップをとっておく場合は「cp」コマンドでコピーしておきます。

$ sudo cp /etc/firewalld/zones/public.xml{,.`date +%y%m%d_%H%M%S`}

編集後は、reloadすることで反映されます。

$ sudo firewall-cmd --reload

GUI

「firewall-config」をインストールするとGUIでfirewallの設定を行うことが可能です。

$ sudo dnf install firewall-config

インストールされていることが確認できます。

このソフトを使用すると、GUIからfirewallを設定することが可能です。