xfeng

xfeng

Sporting | Reading | Technology | Recording
github
bilibili

ファイアウォールの強化

image

1. 概要#

この記事ではファイアウォールの知識について説明します。ファイアウォールの役割、分類、性能、iptables および firewalld に焦点を当てています。この記事は長いため、読むのに一定の時間が必要です。

2. ファイアウォール#

2.1 ファイアウォールの役割#

コンピュータ分野において、ファイアウォールは情報セキュリティを保護するためのデバイスです。

ファイアウォールはデフォルト設定またはユーザー定義のルールに従って、データの転送を許可または制限します。

  • 内部ネットワークのセキュリティを保護するためのデバイス
  • ルールに基づいて保護を行う
  • ユーザー定義のルール
  • 外部アクセスを許可または制限する

2.2 ファイアウォールの分類#

論理的には:

  • ホストファイアウォール:単一のホストを保護する(個人向け)
  • ネットワークファイアウォール:ネットワークを保護し、ネットワークの境界に位置し、ファイアウォールの背後にはローカルエリアネットワークがある(団体向け)

物理的には:

  • ハードウェアファイアウォール:ハードウェアレベルでファイアウォール機能を実現し、一部はソフトウェアに基づいており、性能が高く、コストも高い。例:Cisco、Huawei、天融信

image

  • ソフトウェアファイアウォール:アプリケーションソフトウェアが一般的なハードウェアプラットフォーム上で動作するファイアウォールで、ハードウェアファイアウォールに比べて性能が低く、コストも低い。Linux システムには標準で搭載されており、直接使用できます。例:WAF(主にすべての HTTP データをキャッチするか、特定のルールを満たすセッションに使用され、クラウドプラットフォームでよく見られます)

image

2.3 ファイアウォールの性能#

  • スループット
  • 同時接続数
  • 新規接続
  • レイテンシ
  • ジッター

3. iptables#

3.1 iptables とは#

netfilter/iptables は iptables と略され、Linux プラットフォーム上のパケットフィルタリングファイアウォールで、オープンソースであり、カーネルに組み込まれており、高コストの エンタープライズグレードのハードウェアファイアウォール の代替となります。

パケットフィルタリング、つまりファイアウォール

パケットリダイレクト、つまり転送

ネットワークアドレス変換、つまり NAT

  • iptables はファイアウォールではなく、ファイアウォールのユーザーエージェントです
  • ユーザーのセキュリティ設定を「セキュリティフレームワーク」に追加するために使用されます
  • 「セキュリティフレームワーク」がファイアウォールです
  • netfilter が「セキュリティフレームワーク」です
  • netfilter はカーネル空間にあり、Linux システムのコア層内部のパケット処理モジュールです
  • iptables はユーザー空間でカーネル空間の netfilter を操作するための コマンドラインツール です

注意:iptables はファイアウォールのサービスではなく、実際のサービスはカーネルによって提供され、netfilter が本当のファイアウォールです

3.2 iptables の動作原理#

iptables はルールに従って動作し、ルールは運用管理者が定義した条件です。

ルールは一般的に「もしパケットヘッダーがこの条件に合致するなら、このパケットをこのように処理する」と定義されます。

ルールはカーネル空間の パケットフィルタリングテーブル に保存されます。

これらのルールはそれぞれ、送信元アドレス、宛先アドレス、転送プロトコル(TCP、UDP、ICMP)およびサービスタイプ(HTTP、FTP)などを指定します。

パケットがルールと一致すると、iptables は ルールで定義された方法 に従ってこれらのパケットを処理します。例えば、許可(ACCEPT)、拒否(REJECT)、破棄(DROP)などです。

注意:ファイアウォールの主な作業は iptables ルールの追加、変更、削除などです

3.3 iptables におけるチェーンの概念#

netfilter が本当のファイアウォールであり、カーネルの一部です。netfilter を機能させるためには、カーネル内に「ゲート」を設定する必要があります。出入りするデータパケットはこれらのゲートを通過し、検査され、放行条件に合致するものは許可され、阻止条件に合致するものはブロックされます。これにより input と output ゲートが存在し、iptables ではこれらのゲートを チェーン と呼びます。

image

上の図に基づき、ユーザーが送信するパケットの要求サーバーアドレスが自ホストではなく他のサーバーである場合、パケット転送を行う必要があります。この転送はカーネルがサポートする IP_FORWARD 機能であり、この時、私たちのホストはルーターの機能を持ち、「ルーティング前」、「転送」、「ルーティング後」に対応します。英語では「PREROUTING」、「FORWARD」、「POSTROUTING」となります。これが 5 つのチェーン です。

  1. INPUT:着信パケットを処理する
  2. OUTPUT:発信パケットを処理する
  3. FORWARD:転送パケットを処理する(主にパケットを他のネットワークインターフェースに転送する)。データパケットがホストを通過する際、ネットワークインターフェースはデータパケットをバッファに受信し、カーネルはパケットの IP ヘッダーを読み取り、パケットがホストに送信されていない場合(宛先 IP がホストでない場合)、カーネルは直接 forward チェーンに送信し、マッチングを行います。マッチング後、forward のルールに合致する場合、postrouting を経て次のホップまたは目的ホストに送信されます。
  4. PREROUTING:ルーティング選択を行う前にデータパケットを処理し、ファイアウォールに到達するデータパケットの宛先 IP アドレスを変更して、ターゲットホストを判断します。
  5. POSTROUTING:ルーティング選択を行った後にデータパケットを処理し、ファイアウォールから出るデータパケットの送信元 IP アドレスを変更して、どのインターフェースを経由して次のホップに送信するかを判断します。

私たちは、ファイアウォールの役割が通過するデータパケットに対してルールマッチングを行い、対応する「アクション」を実行することにあることを知っています。したがって、データパケットがこれらのゲートを通過する際、必ずこのゲートのルールに一致する必要があります。しかし、ゲートのルールは一つだけではなく、多くのルールが存在する可能性があります。私たちが 多くのルールを一つのゲートに配置する と、すべてのデータパケットが通過する際にマッチングを行う必要があるため、ルールチェーンが形成されます。この「チェーン」を「ルールチェーン」とも呼びます。

image

3.4 iptables におけるテーブルの概念#

各「ルールチェーン」には一連のルールが設定されており、これにより 異なる「ルールチェーン」を組み合わせて特定の機能を実現する集合分類 を作成できます。この集合分類をテーブルと呼び、iptables には合計 5 つのテーブルがあります。

  1. filter:フィルタリング機能、データパケットを通過させるかどうかを決定し、真のファイアウォールに属します。カーネルモジュール:iptables_filter
  2. nat:ネットワークアドレス変換機能、データパケット内の送信元、宛先 IP アドレスまたはポートを変更します。カーネルモジュール:iptable_nat
  3. mangle:データパケットの再封装機能、データパケットにマークを設定します。カーネルモジュール:iptable_mangle
  4. raw:データパケットを追跡するかどうかを決定します。カーネルモジュール:iptables_raw
  5. security:強制アクセス制御ルールを定義するかどうか。後から追加されました。

3.5 iptables におけるチェーンの関係#

ファイアウォールを適用する際は、テーブルを操作の入口として使用します。該当するテーブル内のルールチェーンにルールを追加することで特定の機能を実現できます。

したがって、どのテーブルがどのルールチェーンを含むかを知っておく必要があります。

  • filter テーブルで使用できるチェーン:INPUT, FORWARD, OUTPUT
  • nat テーブルで使用できるチェーン:PREROUTING, OUTPUT, POSTROUTING, INPUT
  • mangle テーブルで使用できるチェーン:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
  • raw テーブルで使用できるチェーン:PREROUTING, OUTPUT

image

注意:iptables におけるテーブルの優先順位:raw->mangle->nat->filter(高い順)

3.6 データパケットが iptables を通過する流れ#

image

3.7 iptables ルールのマッチ条件#

3.71 基本マッチ条件#

送信元アドレス、宛先アドレス、送信元ポート、宛先ポートなど

基本マッチはオプションと機能を使用します。

-p 指定ルールプロトコル、tcp udp icmp all
-s 指定データパケットの送信元アドレス、ip hostname
-d 指定宛先アドレス
-i 入力インターフェース
-o 出力インターフェース
! 取反

基本マッチの特徴は:拡張モジュールを読み込む必要がなく、マッチルールが有効です。

3.72 拡張マッチ条件#

拡張マッチは暗黙的マッチと明示的マッチに分かれます。

拡張マッチの特徴は:拡張モジュールを読み込む必要があり、マッチルールが有効になります。

暗黙的マッチの特徴:-p オプションでプロトコルを指定する際、同時に - m オプションで拡張モジュールを指定する必要がなく、手動で拡張モジュールを読み込む必要もありません。

明示的マッチの特徴:-m オプションを使用して呼び出す拡張モジュールの拡張メカニズムを指定し、手動で拡張モジュールを読み込む必要があります。

暗黙的マッチのオプションと機能:

-p プロトコルをマッチ、例:tcp、udp
--sport パケットの送信元ポートをマッチ、複数のポートを指定できますが、連続したポート範囲のみ
--dport パケットの宛先ポートをマッチ、複数のポートを指定できますが、連続したポート範囲のみ
--tcp-flags mask comp パケット内のtcpプロトコルのフラグをマッチ
--icmp-type
0/0: echo reply 他のホストがpingを許可
8/0:echo request 他のホストにpingを許可

明示的マッチのオプションと機能:(-m)

  • multiport:複数ポート
iptables -I INPUT -d 192.168.1.111 -p tcp -m multiport --dports 22,80 -j ACCEPT
//INPUTチェーンでローカルのtcp 22、tcp80ポートを開放
iptables -I OUTPUT -s 192.168.1.111 -p tcp -m multiport --sports 22,80 -j ACCEPT
//OUTPUTチェーンで送信元ポートtcp 22、tcp80を開放
  • iprange:複数 IP アドレス
iptables -A INPUT -d 192.168.1.111 -p tcp --dport 23 -m iprange --src-range 192.168.2.11-192.168.2.21 -j ACCEPT
//INPUTチェーンで複数の送信元IPアドレスを開放
iptables -A OUTPUT -s 192.168.1.111 -p tcp --sport 23 -m iprange --dst-range 192.168.2.11-192.168.2.21 -j ACCEPT
//OUTPUTチェーンで複数の宛先IPアドレスを開放
  • time:アクセス時間範囲を指定
iptables -A INPUT -d 192.168.1.111 -p tcp --dport 901 -m time --weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --time-stop 18:00:00 -j ACCEPT

iptables -A OUTPUT -s 192.168.1.111 -p tcp --sport 901 -j ACCEPT
  • string:文字列、パケット内のアプリケーション層データに対して文字列パターンマッチング検査を行います(アルゴリズムを通じて実現)
--algo {bm|kmp}:文字マッチング検索時に使用するアルゴリズム
--string "STRING": 検索する文字列
--hex-string “HEX-STRING”: 検索する文字を16進数形式にエンコードして指定
  • connlimit:接続制限、各クライアント IP に対する同時接続数の制限
--connlimit-upto n 接続数がn以下のときにマッチ
--connlimit-above n 接続数がnを超えるときにマッチ
  • limit:パケットのレート制限
  • state:
  • 自ホスト上のリクエストと応答間のデータパケットの状態を追跡します。状態は 5 種類あります:INVALID, ESTABLISHED, NEW, RELATED, UNTRACKED
--state state
NEW 新しい接続リクエスト
ESTABLISHED 確立された接続
INVALID 認識できない接続
RELATED 関連する接続、現在の接続は新しいリクエストですが、既存の接続に付随しています
UNTRACKED 未追跡の接続

3.8 iptables ルールのアクション#

iptables ルールのアクションは一般にターゲットと呼ばれ、基本アクションと拡張アクションに分かれます。

  • ACCEPT: データパケットを通過させる
  • DROP: データパケットを直接破棄し、応答情報を返さない
  • REJECT: データパケットの通過を拒否し、クライアントに応答情報を送信する
  • SNAT: 送信元アドレス変換
    • 説明 1:データパケットがネットワークインターフェースから送信される際、データパケット内の送信元アドレス部分を指定された IP に置き換え、受信者はデータパケットの出所が置き換えられた IP ホストであると認識し、応答を返す際も置き換えられた IP アドレスを使用します。
    • 説明 2:データパケットの送信元アドレスを変更し、内部ネットワークのデータパケットがファイアウォールに到達すると、ファイアウォールは外部アドレスでデータパケットの送信元 IP アドレスを置き換え(宛先 IP アドレスは変わらない)、ネットワーク内部のホストがネットワーク外部のホストと通信できるようにします。

image

  • MASQUERADE: マスカレード、SNAT に似ており、動的で一時的に変わる IP アドレスに適しています。例えば、家庭用のブロードバンド。データを送信するネットワークインターフェースの IP を使用して送信元 IP を置き換え、IP アドレスが不固定な場合に使用します。
  • DNAT: 宛先アドレス変換
    • 説明 1:データパケットがネットワークインターフェースから送信される際、データパケット内の宛先 IP を変更します。これは、あなたが A にアクセスしようとしているが、ゲートウェイが DNAT を行い、すべての A へのアクセスデータパケットの宛先 IP アドレスを B に変更することを意味します。実際には最終的に B にアクセスします。
    • 説明 2:データパケットの宛先アドレスを変更し、ファイアウォールが外部からのデータパケットを受信すると、そのデータパケットの宛先 IP アドレスを置き換え(送信元 IP アドレスは変わらない)、内部ネットワークのホストに再転送します。

image

  • REDIRECT: ローカルでポートマッピングを行う
  • LOG:/var/log/message ファイルにログ情報を記録し、次のルールにデータパケットを渡します。

注意:ルーティングは宛先アドレスに基づいてルーティング選択を行うため、DNAT は PREROUTING チェーンで行われ、SNAT はデータパケットが送信される際に行われるため、POSTROUTING チェーンで行われます。

3.9 iptables ルールの戦略 / 考え方#

  • ブラックリスト

    拒否されていないトラフィックはすべて通過できる。この戦略では、管理者は新たに発生する攻撃に対して新しいルールを策定する必要があるため、推奨されません。

  • ホワイトリスト

    許可されていないトラフィックはすべて拒否される。この戦略は比較的保守的で、必要に応じてホストが徐々にオープンされます。現在一般的にはホワイトリスト戦略が採用されており、推奨されます。


  1. テーブルを選択します。このテーブルはデータパケット の処理方法 を決定します。
  2. チェーンを選択します。このチェーンはデータパケット が通過する位置 を決定します。
  3. 適切な条件を選択します。この条件はデータパケット に対してどのような条件マッチを行うか を決定します。
  4. データパケットの処理アクションを選択し、相応のファイアウォールルールを策定します。

3.10 iptables の基本構文#

iptables [-t テーブル名] 管理オプション [チェーン名] [条件マッチ] [-j ターゲットアクションまたはジャンプ]

テーブル名を指定しない場合、デフォルトで filter テーブルを示し、チェーン名を指定しない場合、デフォルトでそのテーブル内のすべてのチェーンを示します。ルールチェーンのデフォルト戦略を設定しない限り、マッチ条件を指定する必要があります。

image

3.11 iptables の一般的なコマンド#

パラメータ作用
-Pデフォルト戦略を設定:iptables -P INPUT (DROP|ACCEPT)
-Fルールチェーンをクリア
-Lルールチェーンを表示
-Aルールチェーンの末尾に新しいルールを追加
-I numルールチェーンの先頭に新しいルールを追加
-D num特定のルールを削除
-s送信元アドレス IP/MASK をマッチ、感嘆符 "!" はこの IP 以外を示す。
-d宛先アドレスをマッチ
-i インターフェース名このインターフェースから流入するデータをマッチ
-o インターフェース名このインターフェースから流出するデータをマッチ
-pプロトコルをマッチ、例:tcp、udp、icmp
--dport num宛先ポート番号をマッチ
--sport num送信元ポート番号をマッチ

3.11.1 iptables チェーン管理#

-N, --new-chain chain:カスタムルールチェーンを新規作成
-X, --delete-chain [chain]:ユーザー定義の参照カウントが0の空のチェーンを削除
-F, --flush [chain]:指定されたルールチェーンのルールをクリア
-E, --rename-chain old-chain new-chain:チェーンの名前を変更;
-Z, --zero [chain [rulenum]]:カウンターをゼロにリセットします。注意:各ルールには2つのカウンターがあります(packets:このルールにマッチしたすべてのパケットの数
bytes:このルールにマッチしたすべてのパケットのサイズの合計)
-P, --policy chain target チェーンのポリシーを指定(ACCEPT|DROP|REJECT)

3.11.2 iptables ルール管理#

-A, --append chain rule-specification:指定されたチェーンの末尾に新しいルールを追加
-I, --insert chain [rulenum] rule-specification:指定されたチェーンの指定位置に新しいルールを挿入、デフォルトは先頭
-R, --replace chain rulenum rule-specification:指定されたルールを新しいルールに置き換え
-D, --delete chain rulenum:ルール番号に基づいてルールを削除
-D, --delete chain rule-specification:ルール自体に基づいてルールを削除

3.11.3 iptables ルール表示#

-L, --list [chain]:ルールをリスト表示
-v, --verbose:詳細情報
-vv さらに詳細な情報
-n, --numeric:ホストアドレスとポート番号を数字形式で表示
-x, --exact:カウンターの正確な値を表示し、丸められたデータではなく
--line-numbers:ルールをリスト表示する際、そのチェーン内の対応する番号を表示
-S, --list-rules [chain]:指定されたチェーンのすべてのルールを表示

3.12 iptables の適用例#

iptables-services のインストール / 設定:

sudo apt-get install iptables*  //インストール

sudo systemctl start iptables.service //起動

sudo systemctl enable iptables.service //起動時に自動起動を設定

sudo rpm -ql iptables-services  //設定ファイルを表示

iptables-save > /etc/sysconfig/iptables  //ルールを保存

iptables-restore < /etc/sysconfig/iptables  //再ロード

基本設定:

iptables -F
//既存のルールを削除

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
//デフォルトチェーンのポリシーを設定

ホワイトリストの設定:

iptables -t filter -F
iptables -P INPUT DROP
iptables -t filter -I INPUT -p tcp --dport=22 -j ACCEPT
iptables -t filter -I INPUT -p tcp --dport=80 -j ACCEPT

ブラックリストの設定:

iptables -P INPUT ACCEPT
iptables -F
iptables -t filter -A INPUT -s 192.168.2.20/24 -p tcp --dport 80 -j DROP

lo を通じてローカルデータにアクセス:

iptables -I INPUT -d 127.0.0.1 -p tcp --dport=9000 -i lo -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT
//ローカルループバックインターフェースを通じてローカルにアクセスを許可

接続状態の生成を許可:

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

3.12.1 filter テーブルの適用例#

yum -y install httpd vsftpd sshd
systemctl start httpd vsftpd sshd
iptables -t filter -F
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT

iptables の標準フロー:

iptables -F
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 192.168.2.0/24 -j ACCEPT #内部ネットワークの任意のアクセスを許可
iptables -A INPUT -p tcp --syn --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn --dport 21 -j ACCEPT
iptables -A INPUT -j REJECT
modprobe nf_conntrack_ftp
iptables-save > /etc/sysconfig/iptables
vim /etc/sysconfig/iptables-config
// IPTABLES_MODULES="nf_conntrack_ftp

4. firewalld#

4.1 firewalld とは#

FireWalld は iptables サービス部分を置き換えたもので、基盤として iptables を使用してファイアウォールルールを管理します。

  • 動的ファイアウォール
  • netfilter ユーザー空間を管理するためのツール
  • iptables コマンドを呼び出します。

image

4.2 zone の概念と役割#

ゾーン(zone)は firewalld が事前に準備したファイアウォール戦略の集合であり、戦略テンプレート です。異なるアプリケーションシーンに応じて切り替えることができます。

4.3 FireWalld における zone の分類#

FireWalld の異なるゾーン間の違いは、各ゾーンがデータパケットに対して持つデフォルトの動作が異なることです。
Firewalld にはデフォルトで 9 つのゾーンがあり、それぞれ以下の通りです:

  • block(拒否)
  • dmz(非武装地帯)
  • drop(破棄)
  • external(外部)
  • home(家庭)
  • internal(内部)
  • public(公開) Firewalld のデフォルトゾーン
  • trusted(信頼)
  • work(作業エリア)

4.4 Firewalld の構文#

firewall-cmd [--zone=zone] アクション [--permanent]

注意:--zone オプションを指定しない場合、現在のデフォルトゾーンを示し、--permanent オプションは変更をゾーン設定ファイルに書き込むかどうかを示します。

4.5 Firewalld の一般的なコマンド#

パラメータ作用
--get-default-zoneデフォルトのゾーン名を照会
--set-default-zone=<ゾーン名>デフォルトのゾーンを設定し、永久に有効にする
--get-zones利用可能なゾーンを表示
--get-services事前に定義されたサービスを表示
--get-active-zones現在使用中のゾーンとネットワークインターフェース名を表示
--add-source=この IP またはサブネットからのトラフィックを指定されたゾーンに導く
--remove-source=この IP またはサブネットからのトラフィックを特定のゾーンに導かない
--add-interface=<インターフェース名>このインターフェースからのすべてのトラフィックを特定のゾーンに導く
--change-interface=<インターフェース名>特定のインターフェースとゾーンを関連付ける
--list-all現在のゾーンのネットワークインターフェース設定、リソース、ポート、サービスなどの情報を表示
--list-all-zonesすべてのゾーンのネットワークインターフェース設定、リソース、ポート、サービスなどの情報を表示
--add-service=<サービス名>デフォルトゾーンでそのサービスのトラフィックを許可する
--add-port=<ポート番号 / プロトコル>デフォルトゾーンでそのポートのトラフィックを許可する
--remove-service=<サービス名>デフォルトゾーンでそのサービスのトラフィックを許可しない
--remove-port=<ポート番号 / プロトコル>デフォルトゾーンでそのポートのトラフィックを許可しない
--reload「永久に有効にする」設定ルールを即座に有効にし、現在の設定を上書きする

4.6 Firewall の状態#

firewall-cmd --state
running
//状態を確認
firewall-cmd --reload
success
//ファイアウォールを再読み込みし、ユーザー接続を中断し、テンポラリ設定をクリアし、設定ファイルの永久設定を読み込む
firewall-cmd --complete-reload
success
//ファイアウォールを再読み込みし、ユーザー接続を中断しない(ファイアウォールに重大な障害が発生した場合に使用)
firewall-cmd --panic-on
//緊急モード、すべてのネットワーク接続を強制的に切断

4.7 FireWalld のアクション#

4.7.1 アクションの操作を確認#

firewall-cmd xxx
--get-icmptypes //サポートされているすべてのICMPタイプを確認
--get-zones //すべてのゾーンを確認
--get-default-zone //現在のデフォルトゾーンを確認
--get-active-zones //現在使用中のゾーンを確認
--get-services //現在のゾーンがサポートするサービスを確認
--list-services //現在のゾーンで開放されているサービスのリストを確認
--list-services --zone=home //指定されたゾーンで開放されているサービスのリストを確認
--list-all //デフォルトゾーン内のすべての設定を確認、iptables -L -nに類似
--list-all-zones //すべてのゾーンのすべての設定を確認

4.7.2 ゾーンの変更操作#

firewall-cmd xxx
--set-default-zone=work //デフォルトのゾーンを変更

4.7.3 新しいルールの作成#

firewall-cmd xxx
--add-interface=eth0 //ネットワークインターフェースをデフォルトのゾーンに追加
--add-port=12222/tcp --permanent //ポートをゾーンの開放リストに追加
--add-port=5000-10000/tcp --permanent //ポート範囲を開放リストに追加
--add-service=ftp --permanent //サービスをゾーンの開放リストに追加(サービス名はこのゾーンがサポートするサービスリストの名前と一致する必要があります)
--add-source=192.168.1.1 //ソースアドレスのトラフィックを指定されたゾーンに追加
--add-masquerade //SNAT(送信元アドレス変換)を有効にする

4.7.4 ルールの削除#

firewall-cmd xxx
--remove-service=http //homeゾーン内でhttpサービスを開放リストから削除
--remove-interface=eth0 //デフォルトのゾーン内からネットワークインターフェースを削除
--remove-source=192.168.1.1 //ソースアドレスのトラフィックを指定されたゾーンから削除

4.7.5 ルールの変更#

firewall-cmd xxx
--change-interface=eth1 //指定されたインターフェースを他のゾーンに変更

4.7.6 ルールの確認#

firewall-cmd xxx
--query-masquerade //SNATの状態を確認
--query-interface=eth0 //このネットワークインターフェースがこのゾーンに存在するかを確認

4.7.7 ポート転送#

ポート転送は、指定されたアドレスが指定されたポートにアクセスする際に、トラフィックを指定されたアドレスの指定されたポートに転送することができます。転送の目的が IP を指定しない場合はデフォルトでローカルホストとなり、IP を指定したがポートを指定しない場合はデフォルトで送信元ポートを使用します。

//firewalldを通じてSNATを実現
firewall-cmd --add-masquerade --permanent
firewall-cmd --reload
//80ポートのトラフィックを8080に転送
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
//80ポートのトラフィックを
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.2.20
//削除
firewall-cmd --remove-forwardport=port=80:proto=tcp:toaddr=192.168.2.20 --permanent
//80ポートのトラフィックを192.168.2.20の8080ポートに転送
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.2.20:toport=8080

5. iptables と firewalld の比較#

  • firewalld は iptables のフロントエンドコントローラーです
  • iptables は 静的ファイアウォール であり、任意の戦略変更にはすべての戦略を再読み込みする必要があり、既存の接続が失われます
  • firewalld は 動的ファイアウォール であり、任意の戦略変更にはすべての戦略を再読み込みする必要がなく、変更部分を iptables に保存し、既存の接続を失うことはありません
  • firewalld はデーモンとサービスを提供し、基盤として iptables を使用します
  • firewalld は使用上、iptables よりも人間に優しく、「5 つのテーブル 5 つのチェーン」を理解していなくても、TCP/IP プロトコルを理解していなくても大部分の機能を実現できます
  • firewalld はチェーンルールではなく、ゾーンとサービスを使用します
  • firewalld はデフォルトで拒否されており、設定後にのみ許可されます
  • iptables はデフォルトで許可されており、拒否する必要がある場合にのみ制限されます

6. まとめ#

この記事ではファイアウォールに関するいくつかの内容を記録しました。ファイアウォールの概念、iptables および firewalld に重点を置き、コマンドが多く含まれていますが、すべてを記憶する必要はありません。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。