そういうのがいいブログ

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

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

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

CentOS8ファイアウォールfirewalld設定手順


CentOS8のファイアウォール firewalld の設定手順

CentOS8のファイアウォール「firewalld」の設定のやり方が分からない、と悩んでいませんか?

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

CentOS8のファイアウォールfirewalldの設定の確認、デフォルトからの変更方法、の手順を解説します

本記事では、下記の内容を解説します。

  • firewalldの現在の設定内容を確認する手順
  • firewalldに新しい設定を追加する手順
  • インフラエンジニアになるためのおススメの勉強法の紹介

この記事を書いている私は、某SIerに勤務しながら、WEB系エンジニア・インフラエンジニアに憧れて、
プログラミングおよびインフラ技術の勉強をしています。
私が実機で試したコマンドや画像を載せて書いていますので、記事の信頼性担保に繋がると思います。

firewalldの現在の状態を確認

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

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

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

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

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

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

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

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

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

# firewall-cmd --list-all
[root@SV-NEPTUNE ~]# 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-NEPTUNE ~]# 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-NEPTUNE ~]# firewall-cmd --new-zone=managerzone --permanent
success

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

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

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

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

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

# firewall-cmd --zone=managerzone --add-service=ssh --permanent
[root@SV-NEPTUNE ~]# 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-NEPTUNE ~]# firewall-cmd --zone=managerzone --add-source=192.168.1.101/24 --permanent
success

設定変更後の再読み込み

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

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

# firewall-cmd --get-active-zones
[root@SV-NEPTUNE ~]# 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-NEPTUNE ~]# firewall-cmd --remove-service=ssh --zone=public --permanent
success

設定変更後の再読み込み

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

変更後の確認

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

# firewall-cmd --list-all
[root@SV-NEPTUNE ~]# 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
www.rem-system.com


参考書籍

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

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

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

インフラエンジニアになるための勉強のやり方

私は、某SIerに勤務しながら、WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。

現在の会社で直接担当している業務の中では、決まった技術しか触れないけれど、
「他にも将来役に立ちそうなインフラ技術を勉強したい」「働きながらでもできる効率的なインフラエンジニアの勉強方法を知りたい」と考えている方のために、
①おすすめの書籍と、②おススメのオンライン学習サイト、③おすすめのエンジニアスクールを紹介します。

働きながら勉強するための、おススメの書籍と、オンラインで学習できるサイトの紹介です。

インフラエンジニアの勉強ができるおススメ書籍

朝の通勤時や帰宅時の電車の中や、社外打合せへの**移動中などに勉強するなら、やはり書籍が一番**だと思います。

インフラエンジニアの教科書

LINE社に創業時から在籍しているインフラエンジニア・プロマネの「佐野裕」さんの本です。
twitter.com

膨大なトラフィックをさばくLINE社にて構築・保守を行っている現役エンジニアが記すITインフラの必須知識と経験の数々!
サーバ、OS、ネットワーク機器、データセンター、購買と商談、障害対応、大規模インフラ、成長するために必要なスキルなど、基礎知識から実践まで言及。
ITインフラの世界が理解できる珠玉の1冊!

インフラエンジニアの教科書
(C&R研究所)
佐野裕

1週間でLPICの基礎が学べる本

Linuxの資格「LPIC」の試験対策を初心者向けに書いた入門書です。

Linuxの資格として広く知られているLPICですが、あまり知識の無いまま試験対策を始める人も多いのではないでしょうか。しかし、試験対策書は試験範囲についてのみ解説しているものが多く、初心者が理解するのは困難です。本書は、初心者がスムーズに試験対策を行えるよう、事前に基礎固めを行うLinux入門書です。試験情報や模擬問題も掲載しているので、資格取得を視野に入れた効率的な基礎学習が行えます。

1週間でLPICの基礎が学べる本
第3版 徹底攻略シリーズ
(インプレス)
中島能和

インフラエンジニアの勉強ができるオンライン学習サイト

Udemy (オンライン動画学習サイト)

Udemy(ユーデミー)は、オンラインで動画で学習できるサービスです。
ITエンジニア系の講座もたくさん公開されています。

≫Udemy 世界最大級のオンライン学習サイト

Udemyの特徴

  • ユーザー登録すれば、第1回の講座は無料で視聴できる
  • 無料のコンテンツもある
  • 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい

≫Udemy 世界最大級のオンライン学習サイト


開発の人気オンラインコース


souiunogaii.hatenablog.com

以上、読んでいただきありがとうございました。