OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

AlmaLinux 8.7でfirewalldの通信許可を設定

カテゴリ:OSSセットアップ | ソフトウェア:Linux | タグ:
最終更新日:2023-05-21 | 公開日:2023-05-21

目次

概要

 家の検証環境ではLinuxをインストールしたあと、毎回問答無用でSELinuxとfirewalldをオフっており、 標準で入っている割にあまりにも使わなさすぎて全然使い方を知らない事態に陥っていました。 自身のセキュリティ意識向上のためにもfirewalldぐらいは普通に設定しておこうと心に決めたので、 今後よく使いそうな初歩的なコマンドとオプションだけメモとして残しておきます。

構成

サーバ構成

ハードウェア

Raspberry Pi 4 Model B - 4GB

OS

AlmaLinux release 8.7 (Stone Smilodon)

ソフトウェア・パッケージ

  • firewalld-0.9.3-13.el8.noarch

手順

アクティブなゾーンの確認

 ファイアウォールの設定はゾーンに対して行います。今回のサーバ(といってもラズパイ4)のネットワークインタフェースは1つだけ実装されており、eth0という名前です。 ネットワークインタフェースはいずれかのゾーンに属しているので、ゾーン名を確認します。 以下の例ではeth0はpublicという名のゾーンに属している事が分かります。 以降ではファイアウォールの設定はがpublicゾーンに対して実施します。

# firewall-cmd --get-active-zones
public ←ゾーン名
  interfaces: eth0

指定したゾーンの設定確認

 publicゾーンの設定を確認します。 servicesに通信が許可されているサービス名が、portsに通信が許可されているポート番号が表示されています。

# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client samba ssh ←eth0インタフェースに対して許可されているサービス
  ports: 22/tcp ←eth0インタフェースに対して許可されているポート
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

firewalldがサポートしているサービス名の確認

 新たに通信を許可するサービスを追加する際に、指定可能なサービスの一覧を確認します。

# 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-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 nbd 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

ゾーンに対して許可するサービスを追加

 publicゾーンに対してhttpサービスの通信を許可する設定を追加します。 リロードすると設定が反映されます。

 --permanentオプションは設定の永続化を行うときに指定します。 firewalldやLinuxを再起動しても設定が消えずに残るようになります。 --permanentオプションを指定しない場合はリロードしなくても設定が反映されますが、一時的な設定変更となり、 firewalldやLinuxを再起動すると変更した設定が消えてしまいます。以降で登場する--permanentオプションは同じ意味です。

# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success

ゾーンに対して許可するポートを追加

 publicゾーンに対して8089/tcpポートの通信を許可する設定を追加します。 リロードすると設定が反映されます。

# firewall-cmd --add-port=8089/tcp --zone=public --permanent
success
# firewall-cmd --reload
success

通信許可追加後の確認

 サービスとポートをそれぞれ1つずつ追加したので、設定が反映されているか確認します。

# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client http samba ssh ←httpが追加された
  ports: 22/tcp 8089/tcp ←8089/tcpが追加された
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

ゾーンに対して許可するサービスを削除

 publicゾーンに対してhttpサービスの通信を許可する設定を削除します。 リロードすると設定が反映されます。

# firewall-cmd --remove-service=http --zone=public --permanent
success
# firewall-cmd --reload
success

ゾーンに対して許可するポートを削除

 publicゾーンに対して8089/tcpポートの通信を許可する設定を削除します。 リロードすると設定が反映されます。

# firewall-cmd --remove-port=8089/tcp --zone=public --permanent
success
# firewall-cmd --reload
success

通信許可削除後の確認

 サービスとポートをそれぞれ1つずつ削除したので、設定が反映されているか確認します。

# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client samba ssh ←httpが削除された
  ports: 22/tcp ←8089/tcpが削除された
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

参考にしたサイト