そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

Oracle Linux8.1ファイアウォールfirewalld設定手順【コマンド付き丁寧解説】

※[PR]当ブログの記事の中にはプロモーションが含まれています。

OracleLinux8.1のファイアウォールfirewalldの設定手順メモ


Oracle Linux8.1のファイアウォール firewalld の設定手順メモ

RHEL6系まではパケットフィルタ機能としては、「iptables」が使われていたのですが、
RHEL7系以降のバージョンでは、あらたに「firewalld」が使われています。
本記事では、firewalldの設定の確認、デフォルトからの変更方法、の手順をコマンド付きで紹介します。

firewalldの現在の状態を確認

firewalldの管理コマンドはfirewall-cmd」のあとにオプションをいろいろ付ける形になっています。
このコマンド自体、RHEL7系からあらたに導入されたものだそうです。

まずは現在の動作状況を確認します

Oracle Linux8.1インストール後の初期状態だと、「running」と表示されました

# firewall-cmd --state
[root@SV-PLUTO ~]# firewall-cmd --state
running

デフォルトで割り当てられている「ゾーン」の確認

firewalldには、「ゾーン(zone)」という考え方があります。
いくつかのパケットフィルタのルールをまとめた雛形があらかじめ用意されている感じのものみたいです。

デフォルトで割り当てられているゾーンを確認します。
Oracle Linux8.1インストール後のデフォルトのゾーンは「public」でした。

# firewall-cmd --get-default-zone
[root@SV-PLUTO ~]# firewall-cmd --get-default-zone
public

publicゾーンの設定内容を確認します。
「services」のところを見ると、「cockpit」と「dhcpv6-client」と「ssh」が許可されているのがわかります。
(※「cockpit」はRHEL8系で新たに追加されたブラウザでサーバーを管理するための機能)

# firewall-cmd --list-all
[root@SV-PLUTO ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

そのほかのゾーンすべての設定内容を確認します

CentOS8.0インストール後の状態では、以下の9個のゾーンがありました。

ゾーン名設定内容
blockREJECT(受信はすべて拒否)、ICMPブロックは無し
dmzsshサービスのみ許可
dropDROP(すべて破棄)
externalsshサービスのみ許可、マスカレードあり
homecockpit、dhcpv6-client、mdns、samba-client、sshサービスのみ許可
internalcockpit、dhcpv6-client、mdns、samba-client、sshサービスのみ許可
public (default)cockpit、dhcpv6-client、sshサービスのみ許可
trustedACCEPT(すべて許可)
workcockpit、dhcpv6-client、sshサービスのみ許可

# firewall-cmd --list-all-zones
[root@SV-PLUTO ~]# firewall-cmd --list-all-zones
block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces:
  sources:
  services:
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


dmz
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


drop
  target: DROP
  icmp-block-inversion: no
  interfaces:
  sources:
  services:
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


external
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh
  ports:
  protocols:
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


home
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client mdns samba-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


internal
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client mdns samba-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


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


trusted
  target: ACCEPT
  icmp-block-inversion: no
  interfaces:
  sources:
  services:
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


work
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

管理操作用の新しいゾーンを作成

もともと用意されている9個のゾーンに対して、フィルタルールの追加・削除をすることもできますが、
今回は「個別に接続元のIPアドレスを指定したルールを追加」したかったので、新しくゾーン「mangerzone」を作成して、そのゾーンに対して設定を追加することにしました。

新しいゾーン作成

「--new-zone」オプションを使います。

# firewall-cmd --new-zone=managerzone --permanent
[root@SV-PLUTO ~]# firewall-cmd --new-zone=managerzone --permanent
success

作成したゾーンに接続許可を与える

「--set-target」オプションを使います。

# firewall-cmd --zone=managerzone --set-target=ACCEPT --permanent
[root@SV-PLUTO ~]# firewall-cmd --zone=managerzone --set-target=ACCEPT --permanent
success

作成したゾーンにsshサービスを追加

「--add-service」オプションを使います。

# firewall-cmd --zone=managerzone --add-service=ssh --permanent
[root@SV-PLUTO ~]# firewall-cmd --zone=managerzone --add-service=ssh --permanent
success

作成したゾーンに接続元IPアドレスを追加

「--add-source」オプションを使います。

# firewall-cmd --zone=managerzone --add-source=192.168.1.101/24 --permanent
[root@SV-PLUTO ~]# firewall-cmd --zone=managerzone --add-source=192.168.1.101/24 --permanent
success

設定変更後の再読み込み

# firewall-cmd --reload
[root@SV-PLUTO ~]# firewall-cmd --reload
success

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

# firewall-cmd --get-active-zones
[root@SV-PLUTO ~]# firewall-cmd --get-active-zones
managerzone
  sources: 192.168.1.101/24
public
  interfaces: ens192

publicゾーンからsshサービスの削除

管理操作用の「managerzone」を作成してsshサービスを許可したので、
逆に、publicゾーンからはsshサービスを削除しておきます。(これを残していると、他のすべてのIPアドレスからのssh接続を受け付けてしまうので)

sshサービスの削除

「--remove-service」オプションを使います。

# firewall-cmd --remove-service=ssh --zone=public --permanent
[root@SV-PLUTO ~]# firewall-cmd --remove-service=ssh --zone=public --permanent
success

設定変更後の再読み込み

# firewall-cmd --reload
[root@SV-PLUTO ~]# firewall-cmd --reload
success

変更後の確認

「services」のところから、sshが削除されているのがわかります。

# firewall-cmd --list-all
[root@SV-PLUTO ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

【注意】

  • 管理コマンド「firewall-cmd」では、オプションの「--zone ~」を省略すると、「publicゾーン」が操作対象になります。
  • 「--permanent」オプションをつけないと、次回のOS再起動時に設定がリセットされてしまいます。
  • 「--permanent」オプションをつけて設定変更した後は、「firewalld-cmd reload」で設定の再読み込みをすることで反映されます。


参考にしたサイト

www.atmarkit.co.jp
eng-entrance.com
https://www.rem-system.com/centos8-first-settings/www.rem-system.com


参考書籍

絶対に損をさせない完全ガイド
圧倒的情報量、この分厚さは伊達じゃない!
全ての管理者・開発者が知っておくべき知識がここにある!

初めて触れる入門者から、第一線で活躍するプロの技術者まで、
あらゆる人の役に立つCentOSガイドの決定版
各種ツールのインストール、設定ファイルの編集、コマンドの実行方法、セキュリティ対策までも詳細に解説!

標準テキスト CentOS 7 構築・運用・管理パーフェクトガイド
(有限会社ナレッジデザイン)