MIRACLE LINUX firewallの設定を行う

MIRACLE LINUX firewallの設定を行う

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

環境

  • OS  MIRACLE LINUX release 8.4 (Peony)

ポートの許可

恒久的にポート80を許可する場合は、以下となります。

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

設定はreloadしないと反映しないので、反映させたい場合はリロードします。

$ sudo firewall-cmd --reload

設定したポート80を削除する場合は、以下となります。

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

firewallで許可されているポートを一覧確認するには、「–list-ports」を使用します。
※ここではゾーンを「public」に指定してます。

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

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

$ 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

httpsサービスを削除する

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

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

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

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

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

登録可能サービス確認

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

$ firewall-cmd --get-services

RH-Satellite-6 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 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-apiserver ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql 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 tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

見やすいように改行して表示する場合は、「sed」を使用します。

$ firewall-cmd --get-services | sed 's/ /\n/g'

RH-Satellite-6
amanda-client
amanda-k5-client
amqp
amqps
apcupsd
audit
bacula
bacula-client
bb
bgp
bitcoin
bitcoin-rpc
.
.
.

IPアドレスの許可

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

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

IPアドレスの拒否

恒久的にIPアドレスを指定して拒否
※ここでは「192.168.1.0/24」を拒否してます。

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

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

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

デフォルトゾーンの確認

$ sudo firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 80/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

デフォルトゾーンの恒久的のみ確認

$ 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

リロードして反映させます。

$ sudo firewall-cmd --reload

追加されたか、確認してみます。

$ sudo firewall-cmd --list-all-zones | grep testzone

testzone

追加されていることが確認できます。

また、「/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 2021-10-04 14:01:23 JST; 24h ago
     Docs: man:firewalld(1)
 Main PID: 946 (firewalld)
    Tasks: 3 (limit: 16495)
   Memory: 28.2M
   CGroup: /system.slice/firewalld.service
           └─946 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

ステータス確認を終了するには、「ctrl + c」を使用します。

起動と停止

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

0.8.2

ヘルプ

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

$ firewall-cmd --help

設定ファイルを直接編集

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

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

をxmlファイルに追加します。

編集する前に、バックアップをとっておく場合は「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を設定することが可能です。