そういうのがいいブログ

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

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

f:id:souiunogaii:20200101181853p:plain


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

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

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

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

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

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

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

firewalldの現在の状態を確認

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

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

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

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

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

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

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

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

publicゾーンの設定内容を確認します。
「services」のところを見ると、「dhcpv6-client」と「ssh」が許可されているのがわかります。

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

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

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

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

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

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

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

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

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

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

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

設定変更後の再読み込み

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

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

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

設定変更後の再読み込み

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

変更後の確認

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

# firewall-cmd --list-all
[root@SV-SATURN ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: 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/linux-first-setting/www.rem-system.com

参考書籍

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

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

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

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

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

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

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

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

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

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

LINE社に創業時から在籍しているインフラエンジニア・プロマネの「佐野裕」さんの本です。
https://twitter.com/sanonosatwitter.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




インフラエンジニアの勉強ができる専門スクール

リナックスアカデミー(ITエンジニア専門スクール)

スクールというと、昼間働いている人には難しいかもしれませんが、
以下に紹介するスクールには、
Linuxサーバとネットワークとを両分野ともに学べるコースが、
夜間・土日での5か月~7か月の期間で用意されています。

リナックスアカデミー(ITエンジニア専門スクール) http://www.linuxacademy.ne.jp


リナックスアカデミーの特徴

  • 初心者でも最短4週間でエンジニアになれる「IT教育専門機関」
  • 100%ライブ抗議の「少人数クラス担任制」
  • 実務スキルを身につける「PBL(Project Based Learning)」が充実
  • 圧倒的な合格実績と「合格保証制度」
  • 就職実績と「就職・転職サポート」が充実

リナックスアカデミーが選ばれ続ける最大の理由、それはIT技術に特化した日本初のIT教育専門機関だからということです。他を寄せ付けないカリキュラムと講師の質で日本No.1のオープンソース専門スクールだと認知されています。
スクールとしては世界で初めてLPI(Linux技術者認定機関)プラチナスポンサーに加盟し、LPI-Jアカデミック認定校第一号スクール、OSS-DBアカデミック認定校第一号スクール、PostgreSQL CE認定校、国内唯一のPHP技術者育成認定校Zend Authorized Training Center など、数々の認定を受けています。 先日来日したLPIC資格試験の開発責任者であるMatthew Rice氏にも、「世界でNo.1と言われる日本の市場で、リナックスアカデミーはNo.1のスクールだと言われている。それは素晴らしいことだ」という言葉を頂いています。

f:id:souiunogaii:20200118152129j:plain

リナックスアカデミー(ITエンジニア専門スクール)の資料請求(無料)について詳しく見てみる

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