Centos7のFirewalldファイアウォールの基本コマンドの詳細な説明

Centos7のFirewalldファイアウォールの基本コマンドの詳細な説明

1. Linuxファイアウォールの基礎

Linux ファイアウォール システムは主にネットワーク層で動作し、TCP/IP データ パケットをリアルタイムでフィルタリングおよび制限します。これは典型的なパケット フィルタリング ファイアウォール (またはネットワーク層ファイアウォール) です。 Linux システムのファイアウォール システムは、カーネル (firewalld、iptables、ebtables) の共存に基づいています。デフォルトでは、firewalld は netfilter サブシステムの管理に使用されます。

  • Netfilter: Linux カーネル内のパケット フィルタリング ファイアウォールの内部構造を指します。プログラムやファイルの形式では存在せず、「カーネル状態」ファイアウォール機能システムに属します。
  • Firewalld: Linux ファイアウォールを管理するために使用されるコマンド プログラムを指します。これは、「ユーザー モード」ファイアウォール管理システムに属します。

1. ファイアウォールの概要

firewalld の役割は、パケット フィルタリング メカニズムに一致するルール (またはポリシー) を提供することです。さまざまなルールを通じて、指定された送信元から送信されたデータ パケット、指定された宛先に送信されるデータ パケット、または特定のプロトコル特性を持つデータ パケットの処理方法を netfilter に指示します。ファイアウォールをより便利に整理および管理するために、firewalld は、ネットワーク ゾーンによって定義されたネットワーク リンクとインターフェイス セキュリティ レベルをサポートする動的なファイアウォール管理ツールを提供します。 IPv4、IPv6 ファイアウォール設定、イーサネット ブリッジをサポートし、2 つの構成モードがあります。

  • 実行構成
  • 永続的な構成

また、ファイアウォール ルール インターフェイスを直接追加するサービスまたはアプリケーションもサポートします。

2. ファイアウォールネットワークエリア

Firewalld はすべてのネットワーク データ トラフィックを複数のゾーンに分割し、ファイアウォールの管理を簡素化します。データ パケットの送信元 IP アドレスや着信ネットワーク インターフェイスなどの条件に基づいて、データ トラフィックを適切な領域に転送するファイアウォール ルール。

システムに入るパケットの場合、最初に確認するのはその送信元アドレスです。

  • 送信元アドレスが特定のエリアに関連付けられている場合は、そのエリアに設定されたルールが実行されます。
  • 送信元アドレスが特定のゾーンに関連付けられていない場合は、着信ネットワーク インターフェイスのゾーンが使用され、そのゾーンに定義されたルールが実行されます。
  • ネットワーク インターフェイスが特定のゾーンに関連付けられていない場合は、デフォルトのゾーンが使用され、そのゾーンに定義されたルールが実行されます。

デフォルト ゾーンは別個のゾーンではなく、システム上で定義された他のゾーンを指します。デフォルトでは、デフォルト ゾーンはパブリックですが、これは変更できます。上記の一致ルールは順番に実行され、最初に一致したルールが優先されます。各エリアでは、一連のサービスやポートを開いたり閉じたりするように設定できます。firewalld の各定義済みエリアには、デフォルトで開かれるサービスが設定されています。

3. ファイアウォール定義領域の説明

  • 信頼済み(信頼ゾーン):すべてのネットワーク接続を受信できます。
  • public: (パブリック ゾーン): 送信トラフィックに関連しない限り、または ssh または dhcpv6-client の定義済みサービスと一致しない限り、受信トラフィックを拒否します。
  • work (作業ゾーン): 送信トラフィックに関連しない限り、または ssh、ipp-client、dhcpv6-client の定義済みサービスに一致しない限り、受信トラフィックを拒否します。作業ゾーンに使用されます。
  • home (ホーム ゾーン): 送信トラフィックに関連しない限り、または ssh、ipp-client、mdns、samba-client、dhcpv6-client の定義済みサービスに一致しない限り、受信トラフィックを拒否します。ホーム ネットワークに使用されます。
  • 内部ゾーン: 送信トラフィックに関連しない限り、または ssh、ipp-client、mdns、samba-client、dhcpv6-client の定義済みサービスに一致しない限り、受信トラフィックを拒否します。内部ネットワークに使用されます。
  • 外部 (外部ゾーン): 送信トラフィックに関連しない限り、または ssh 定義済みサービスと一致しない限り、受信トラフィックを拒否します。
  • DMZ (非武装地帯): 送信トラフィックに関連しない限り、または SSH 定義済みサービスと一致しない限り、受信トラフィックを拒否します。
  • blocak (制限ゾーン): 送信トラフィックに関連しない限り、すべての受信トラフィックを拒否します。
  • drop (ドロップ ゾーン): 送信トラフィックに関連しない限りすべての受信トラフィックをドロップし、ICMP を含むエラー応答を生成しません。

2.firewalldファイアウォールの設定方法

Centos 7 システムでは、firewalld を次の 3 つの方法で設定できます。

  • firewalld-config グラフィカル ツール。
  • firewalld-cmd コマンドラインツール。
  • /etc/firewalld/ 内の設定ファイル;

通常、設定ファイルを直接編集することは推奨されません。

1.firewalld-cmdの基本コマンド

[root@centos01 ~]# systemctl start firewalld <!--firewalld を起動します-->
[root@centos01 ~]# systemctl enable firewalld<!--起動時に自動的に起動するようfirewalldを設定する-->
[root@centos01 ~]# systemctl status firewalld <!--ファイアウォールの実行状態を確認します-->
[root@localhost ~]# firewall-cmd --state <!-- ファイアウォールの権限ステータスを表示します -->
ランニング
[root@centos01 ~]# systemctl stop firewalld<!--firewalldを停止します-->
[root@centos01 ~]# systemctl enable firewalld<!--起動時にfirewalldが自動的に起動しないように設定します-->
[root@centos01 ~]# firewall-cmd --get-zones <!--ファイアウォールの定義済み領域を表示します-->
[root@centos01 ~]# firewall-cmd --get-service <!--ファイアウォールでサポートされている定義済みのサービス タイプを表示します-->
[root@centos01 ~]# firewall-cmd --get-default-zone <!--システムのデフォルトゾーンを表示します-->
[root@localhost /]# ファイアウォール-cmd --reload <!--ファイアウォールを再読み込み-->
[root@centos01 ~]# firewall-cmd --get-active-zones <!-- アクティブ化されたエリアを表示 -->

[root@centos01 ~]# firewall-cmd --get-icmptypes <!--定義済みのICMPタイプを表示-->
アドレスが到達不能、ヘッダーが不正、通信が禁止、宛先が到達不能 
エコー応答、エコー要求、断片化が必要、ホスト優先順位違反、ホスト禁止
ホストリダイレクト ホスト不明 ホスト到達不能 IP ヘッダー不良 近隣広告
近隣要請ネットワーク禁止ネットワークリダイレクトネットワーク不明 
ネットワークに到達できません ルートがありません パケットが大きすぎます パラメータに問題があります ポートに到達できません
優先順位カットオフ プロトコル到達不能 リダイレクト 必須オプションがありません
ルータ広告、ルータ要請、ソースクエンチ、ソースルート失敗、時間超過
タイムスタンプ応答、タイムスタンプ要求、tos ホストリダイレクト、tos ホスト到達不能 
tos ネットワーク リダイレクト、tos ネットワーク到達不能、再構築中の ttl ゼロ 
転送中の ttl ゼロ、不明なヘッダー タイプ、不明なオプション

firewall-cmd --get-icmptypes コマンドの実行結果におけるいくつかのブロック タイプの意味は次のとおりです。

  • destination-unreachable: 宛先アドレスに到達できません。
  • エコー応答: 返信;
  • パラメータの問題: パラメータの問題;
  • リダイレクト: リダイレクト;
  • router-advertisement: ルータ広告;
  • router-solicitation: ルータ要請;
  • ソースクエンチ: ソースエンド抑制;
  • 時間超過: タイムアウト;
  • timestamp-reply: タイムスタンプ返信応答。
  • timestamp-request: タイムスタンプ要求;

2. ファイアウォールゾーン管理オプション

  • --get-default-zone: ネットワーク接続またはインターフェースのデフォルトゾーンを表示します。
  • --set-default-zone=<zone>: ネットワーク接続またはインターフェースのデフォルトゾーンを設定します。
  • --get-active-zones: アクティブ化されたすべてのゾーンを表示します。
  • --get-zone-of-interface=<interface>: 指定されたインターフェースにバインドされたゾーンを表示します。
  • --zone=<zone> --add-interface=<interface>: インターフェースをバインドするゾーンを指定します。
  • --zone=<zone> --change-interface=<interface>: 指定されたゾーンのバインドされたネットワーク インターフェイスを変更します。
  • --zone=<zone> --remove-interface=<interface>: 指定されたゾーンにバインドされたネットワーク インターフェイスを削除します。
  • --list-all=zones: すべてのゾーンとそのルールを表示します。
  • [--zone=<zone>] --list-all: 指定されたすべてのゾーンのすべてのルールを表示します。--zone=<zone> を省略すると、デフォルトのゾーンのみが操作されることを意味します。

以下はエリアマネジメントの例です。

[root@centos01 ~]# firewall-cmd --get-default-zone <!--現在のシステムのデフォルトゾーンを表示します-->
[root@centos01 ~]# firewall-cmd --list-all<!--デフォルトエリアのすべてのルールを表示-->
[root@centos01 ~]# firewall-cmd --get-zone-of-interface=ens32 <!-- ens32 インターフェースが配置されているゾーンを表示します -->
内部
[root@centos01 ~]# firewall-cmd --zone=internal --change-interface=ens32 <!--ens32 インターフェースに対応する領域を内部領域に変更します -->
 インターフェースは NetworkManager の制御下にあり、ゾーンは「内部」に設定されています。
成功
[root@centos01 ~]# firewall-cmd --zone=internal --list-interface <!--内部領域のインターフェースリストを表示します-->
ens32
[root@centos01 ~]# firewall-cmd --get-active-zones <!-- アクティブ化されたすべてのゾーンを表示 -->
内部
 インターフェース: ens32

3. ファイアウォールサービス管理

管理を容易にするために、firewalld は多くのサービスを事前定義し、/usr/lib/firewalld/services/ ディレクトリに保存します。サービスは、単一の XML 構成ファイルを通じて指定されます。これらの構成ファイルの名前は、service-name.xml という形式で付けられます。各ファイルは、ssh サービスなどの特定のネットワーク サービスに対応しています。サービス設定ファイルを /etc/firewalld/services/ ディレクトリに配置する必要があります。サービス構成には次の利点があります。

サービス名によるルールの管理がよりユーザーフレンドリーになります。

サービスごとにポート グループを編成するモードの方が効率的です。サービスが複数のネットワーク ポートを使用する場合、サービス構成ファイルは、これらのポートのルール管理のためのバッチ操作のショートカットを提供するのと同等です。

1)firewalld-cmd コマンド領域におけるサービス管理の共通オプションの説明:

  • [--zone=<zone>] --list-services: 指定されたゾーンでアクセスが許可されているすべてのサービスを表示します。
  • [--zone=<zone>] --add-service=<service>: 指定されたゾーンに対してアクセスが許可されるサービスを設定します。
  • [--zone=<zone>] --remove-service=<service>: 指定されたゾーンでアクセスが許可されているサービスを削除します。
  • [--zone=<zone>] --list-ports: 指定されたゾーンでアクセスが許可されているすべてのポート番号を表示します。
  • [--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol>: 指定されたゾーンでアクセスが許可されるポート番号/ポート範囲(プロトコル番号を含む)を設定します。
  • [--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocl>: 指定されたゾーンでアクセスが許可されているポート番号(プロトコル名を含む)を削除します。
  • [--zone=<zone>] --list-icmp-blockaks: 指定されたゾーンでアクセスを拒否するすべての ICMP タイプを表示します。
  • [--zone=<zone>] --add-icmp-block=<icmptype>: 指定されたゾーンへのアクセスを拒否する特定の ICMP タイプを設定します。
  • [--zone=<zone>] --remove-icmp-block=<icmptype>: 指定されたゾーンでアクセスを拒否するように設定されている特定の ICMP タイプを削除します。--zone=<zone> を省略すると、操作はデフォルトのゾーンで実行されることを意味します。

2) 以下は、firewalld サービス管理の例です (デフォルト ゾーンにアクセスを許可するサービスを設定する)。

 [root@centos01 ~]# firewall-cmd --list-services <!--デフォルト領域でアクセスが許可されているすべてのサービスを表示します-->
dhcpv6 クライアント ssh 
[root@centos01 ~]# firewall-cmd --add-service=http <!--http サービスへのアクセスを許可するデフォルトの領域を設定します -->
成功
[root@centos01 ~]# firewall-cmd --add-service=https <!--https サービスへのアクセスを許可するデフォルトの領域を設定します-->
成功
[root@centos01 ~]# firewall-cmd --list-services <!--デフォルト領域でアクセスが許可されているすべてのサービスを表示します-->

dhcpv6クライアントsshhttpshttp

3) 以下は、firewalld サービス管理の例です (内部ゾーンに対してアクセスを許可するサービスの設定)。

[root@centos01 ~]# ファイアウォールコマンド --zone=internal --add-service=mysql 
       <!--MySQL サービスへのアクセスを許可する内部領域を設定します-->
成功
[root@centos01 ~]# ファイアウォールコマンド --zone=internal --remove-service=samba-client 
     <!--Samba クライアント サービスへのアクセスを許可しないよう内部領域を設定します-->
成功
[root@centos01 ~]# ファイアウォール-cmd --zone=internal --list-services 
       <!--内部領域でアクセスが許可されているすべてのサービスを表示します-->
ssh mdns dhcpv6 クライアント mysql

4. ポート管理

サービスを構成するときに、サービス名を使用して定義済みのネットワーク サービスを構成することができ、サービスに関連するポートが自動的に開かれます。ただし、事前定義されていないサービスの場合は、指定されたゾーンのポートを手動で追加することしかできません。たとえば、次の操作を実行すると、内部ゾーンでポート 443/TCP を開くことができます。次に例を示します。

 [root@centos01 ~]# ファイアウォール-cmd --zone=internal --add-port=443/tcp
         <!--内部エリアでポート 443/tcp を開きます-->
成功

内部ゾーンのポート 443/TCP へのアクセスを禁止する場合は、次のコマンドを実行します。

 [root@centos01 ~]# ファイアウォール-cmd --zone=internal --remove-port=443/tcp
        <!--内部エリアのポート 443/tcp へのアクセスを禁止します-->
成功

上記の設定はすべて一時的な設定です。現在の設定を永続的な設定として保存する場合は、次のコマンドを使用します。

 [root@centos01 ~]# ファイアウォールコマンド --runtime-to-permanent
成功

これを永続的なルールとして直接設定するには、次のように --permanent オプションを含める必要があります。

[root@centos01 ~]# firewall-cmd --add-icmp-block=echo-r​​equest --permanent <!--ping を禁止-->

成功
[root@centos01 ~]# ファイアウォールコマンド --zone=external --add-icmp-block=echo-r​​equest --permanent      
      <!-- 外部エリアを ping 禁止に設定 -->
成功

3. ファイアウォールの2つの設定モード

前述のように、firewall-cmd コマンド ツールには 2 つの構成モードがあります。ランタイム モードは、現在メモリ内で実行されているファイアウォール構成を参照し、システムまたは firewalld サービスが再起動または停止されると無効になります。永続モードは、ファイアウォールが再起動または再ロードされたときのルール構成を参照し、構成ファイルに永続的に保存されます。

firewall-cmd コマンド ツールには、構成モードに関連する 3 つのオプションがあります。

  • --reload: ファイアウォール ルールを再読み込みし、ステータス情報を保存します。つまり、永続的な構成をランタイム構成として適用します。
  • --permanent: このオプションを指定したコマンドは、永続的なルールを設定するために使用されます。これらのルールは、ファイアウォール ルールが再起動または再ロードされた場合にのみ有効になります。このオプションを指定しないと、ランタイム ルールを設定するために使用されます。
  • --runtime-to-permanent: 現在のランタイム構成をルール構成ファイルに書き込み、メモリ内の現在のルールを永続的な構成にします。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux での Centos7 ファイアウォールの基本的な使用方法の詳細な説明
  • CentOS7 ファイアウォールとオープンポートの簡単な使い方の簡単な紹介
  • Centos7 (ファイアウォール) ファイアウォールが一般的なポートコマンドを開く
  • CentOS7 Dockerファイアウォールの簡単な設定チュートリアル
  • CentOS 7.0 でデフォルトのファイアウォールを無効にし、iptables ファイアウォールを有効にする方法
  • CentOS 7 のファイアウォールの一般的なコマンドの概要
  • CentOS7 ファイアウォール操作コマンドの完全なリスト

<<:  MySQL 5.7.21 解凍バージョンのインストールと設定のグラフィックチュートリアル

>>:  node.js の require メソッドの読み込みルールの詳細な説明

推薦する

Nginx 外部ネットワーク アクセス イントラネット サイト構成操作

背景:サイトはフロントエンドとバックエンドから分離されています: vue+springbootフロン...

CSS で写真のスタッキング効果を実装するサンプルコード

成果を達成するステップ1. 初期index.html最初の写真、一番上の写真を作成します。写真の i...

選択タグ内のオプションをクリアする3つの方法

方法1コードをコピーコードは次のとおりです。 document.getElementById(&qu...

ElementUI の el-dropdown に複数のパラメータを実装する方法

最近、業務上のボタンの増加により、ページレイアウトにボタンが多すぎて、ページが美しくなく、ユーザーエ...

メッセージボードにメッセージを追加および削除するための JavaScript

この記事では、JavaScript メッセージ ボードでメッセージを追加および削除する小さな例を詳細...

Centos7でのパーティションのフォーマットとマウントの実装

Linux では、ハードディスクの追加やパーティションの再マウントといった状況に頻繁に遭遇します。こ...

ネガティブマージン関数の紹介と使用方法の概要

1998 年の CSS2 勧告の時点で、テーブルは徐々に舞台から消え、歴史の中に記録されるようになり...

MySQL 5.7.21 のインストールと設定方法のグラフィックチュートリアル (ウィンドウ)

ウィンドウ環境にmysql5.7.21をインストールします。詳細は次のとおりです。 1. MySQL...

MySQL 8.0 再帰クエリの簡単な使用例

序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...

MySQL テーブルとデータベースでデータを分割する方法

目次1. 縦方向のスライス1.1 垂直データベース1.2 垂直テーブル分割2. 水平(横断)セグメン...

nginx をコンパイルしてインストールした後、スムーズに nginx をアップグレードする方法

nginx をコンパイルしてインストールし、一定期間使用した後、現在のバージョンに脆弱性があることや...

Vue3 のリアクティブ関数 toRef 関数 ref 関数の紹介

目次リアクティブ機能使用法: toRef 関数 (理解するだけ)使用法: ref関数レスポンシブデー...

jsオブジェクトの読み取り速度の詳細な例

1. リテラルとローカル変数へのアクセスは最も高速ですが、配列要素とオブジェクト メンバーへのアクセ...

Linux の daily_routine サンプルコードの詳細な説明

まずサンプルコードを見てみましょう: #/bin/bash cal 日付 -u echo "...