そういうのがいいブログ

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

CentOS8.2インストール手順(6)ファイアウォールfirewalld設定手順

CentOS8.2インストール手順(6)ファイアウォールfirewalldの設定手順をコマンド付きで丁寧に解説

CentOS8.2のファイアウォール「firewalld」の設定手順を知りたい

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

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

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

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

  1. CentOS8.2のfirewalldの現在の設定内容を確認する手順
  2. CentOS8.2のfirewalldに新しい設定を追加する手順

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

前回の記事

souiunogaii.hatenablog.com

souiunogaii.hatenablog.com

souiunogaii.hatenablog.com

souiunogaii.hatenablog.com

souiunogaii.hatenablog.com

CentOS8.2でfirewalldの現在の状態を確認

firewalldの管理コマンドはfirewall-cmdのあとにオプションをいろいろ付ける形になっています。

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

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

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

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

firewalldには、「ゾーン(zone)」という考え方があります。

いくつかのパケットフィルタのルールをまとめた雛形があらかじめ用意されている感じのものみたいです。

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

CentOS8.2インストール後のデフォルトのゾーンはpublicでした。

publicゾーンの設定内容を確認

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

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

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

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

ゾーン名 設定内容
block REJECT(受信はすべて拒否)、ICMPブロックは無し
dmz sshサービスのみ許可
drop DROP(すべて破棄)
external sshサービスのみ許可、マスカレードあり
home cockpit、dhcpv6-client、mdns、samba-client、sshサービスのみ許可
internal cockpit、dhcpv6-client、mdns、samba-client、sshサービスのみ許可
public (default) cockpit、dhcpv6-client、sshサービスのみ許可
trusted ACCEPT(すべて許可)
work cockpit、dhcpv6-client、sshサービスのみ許可
firewall-cmd --list-all-zones
[root@SV-EARTH ~]# 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: enp2s0
  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:

Windows端末からのリモート操作用の新しいゾーンを作成

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

新しいゾーン作成

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

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

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

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

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

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

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

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

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

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

firewall-cmd --zone=managerzone --add-source=●●●●●●(接続元の端末のIPアドレス)/24 --permanent
[root@SV-EARTH ~]# firewall-cmd --zone=managerzone --add-source=192.168.1.101/24 --permanent
success

設定変更後の再読込み

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

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

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

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

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

sshサービスの削除

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

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

設定変更後の再読込み

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

変更後の確認

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

firewall-cmd --list-all
[root@SV-EARTH ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp2s0
  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で設定の再読み込みをすることで反映されます。

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

私は、某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回の講座は無料で視聴できる
  • 無料のコンテンツもある
  • 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい

f:id:souiunogaii:20200118154357j:plain

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

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