自動システムアップデート

09.11.2020

にインストールされています オペレーティング·システムファイアウォールは、不正なトラフィックが相互に通過するのを防ぐために使用されます。 コンピュータネットワーク。 ファイアウォールの特別なルールは手動または自動で作成され、アクセス制御を担当します。 Linux カーネル上で開発された OS である CentOS 7 は、ファイアウォールを内蔵しており、ファイアウォールを使用して管理されます。 FirewallD はデフォルトで有効になっています。今日はその設定について説明したいと思います。

前述したように、CentOS 7 の標準ファイアウォールは FirewallD ユーティリティです。 このため、このツールを例としてファイアウォールの設定について説明します。 同じ iptables を使用してフィルタリング ルールを設定できますが、これは少し異なる方法で行われます。 次のリンクをクリックして、前述のユーティリティの構成をよく理解することをお勧めします。これにより、FirewallD の分析が開始されます。

ファイアウォールの基本

ネットワークの信頼性に基づいてトラフィックを管理するためのルールのセットであるゾーンがいくつかあります。 これらすべてに独自のポリシーが与えられ、その全体がファイアウォール構成を形成します。 各ゾーンには 1 つ以上のネットワーク インターフェイスが割り当てられており、フィルタリングを調整することもできます。 適用されるルールは、使用されるインターフェイスに直接依存します。 例えば公衆Wi-Fiに接続する場合 ファイアウォール制御レベルが向上し、 ホームネットワークチェーン参加者に追加のアクセスが開かれます。 問題のファイアウォールには次のゾーンが含まれています。

  • 信頼できる — すべてのネットワーク デバイスにおける最大レベルの信頼。
  • ホーム - グループ ローカルネットワーク。 環境には信頼がありますが、受信接続は特定のマシンでのみ利用できます。
  • 作業 - 作業領域。 ほとんどのデバイスには信頼があり、追加のサービスがアクティブ化されます。
  • dmz は、隔離されたコンピュータ用のゾーンです。 このようなデバイスはネットワークの残りの部分から切断され、特定のネットワークのみを許可します。 受信トラフィック;
  • 内部 — 内部ネットワークのゾーン。 信頼がすべてのマシンに適用され、追加のサービスが開かれます。
  • 外部 — 前のゾーンとは逆のゾーン。 外部ネットワークでは、NAT マスカレードがアクティブになり、内部ネットワークが閉じられますが、アクセスを取得する機能はブロックされません。
  • public - すべてのデバイスを信頼せず、受信トラフィックを個別に受信するパブリック ネットワークのゾーン。
  • ブロック - すべての受信リクエストはリセットされ、エラーが送信されます。 icmp-ホスト-禁止または icmp6-adm-禁止;
  • ドロップ - 最小の信頼レベル。 受信接続は通知なしにドロップされます。

ポリシー自体は一時的または永続的なものにすることができます。 パラメータが表示または編集されると、ファイアウォールのアクションは再起動することなくすぐに変更されます。 一時的なルールが適用された場合、それらは FirewallD の再起動後にリセットされます。 永続ルールはそのように呼び出されます。 -permanent 引数が適用されると永続的に保存されます。

FirewallD を有効にする

まず、FirewallD を実行するか、FirewallD が実行されていることを確認する必要があります。 アクティブ状態。 機能するデーモン (実行中のプログラム) のみ 背景) ファイアウォール ルールが適用されます。 アクティベーションは数回クリックするだけで完了します。

  1. クラシックを起動 "ターミナル"メニューなどの便利な方法 「アプリケーション」.
  2. コマンド sudo systemctl start firewalld.service を入力し、 キーを押します。 入力.
  3. このユーティリティはスーパーユーザーに代わって管理されるため、パスワードを入力して自分の信頼性を確認する必要があります。
  4. サービスが機能していることを確認するには、 firewall-cmd --state を指定します。
  5. 開いたグラフィカル ウィンドウで、自分が本物であることを再確認します。
  6. 新しい行が表示されます。 意味 「走る」ファイアウォールが機能していることを示します。

ファイアウォールを一時的または永続的に無効にする必要がある場合は、次のリンクにある他の記事に記載されている手順を使用することをお勧めします。

デフォルトのルールと利用可能なゾーンを表示する

正常に動作しているファイアウォールにも、独自の特定のルールとアクセス可能なゾーンがあります。 ポリシーの編集を開始する前に、現在の構成をよく理解しておくことをお勧めします。 これは簡単なコマンドを使用して行われます。

  1. firewall-cmd --get-default-zone コマンドは、デフォルト ゾーンを決定するのに役立ちます。
  2. アクティブ化すると、次のように表示されます 改行をクリックすると、必要なパラメータが表示されます。 たとえば、以下のスクリーンショットでは、ゾーンはアクティブであるとみなされます。 "公共".
  3. ただし、複数のゾーンを同時にアクティブにすることができ、それらは別のインターフェイスに関連付けられます。 この情報は、 firewall-cmd --get-active-zones で確認してください。
  4. firewall-cmd --list-all コマンドは、デフォルト ゾーンに設定されたルールを表示します。 以下のスクリーンショットを見てください。 アクティブゾーンが表示されます "公共"割り当てられたルール "デフォルト"- デフォルトの操作、インターフェース 「enp0s3」と2つのサービスが追加されました。
  5. 使用可能なすべてのファイアウォール ゾーンを確認する場合は、 firewall-cmd --get-zones と入力します。
  6. 特定のゾーンのパラメータは、 firewall-cmd --zone=name --list-all によって決定されます。 名前— ゾーン名。

必要なパラメータを決定したら、それらの変更と追加に進むことができます。 最も一般的な構成をいくつか詳しく見てみましょう。

インターフェイスゾーンのセットアップ

上記の情報からわかるように、各インターフェイスには独自のデフォルト ゾーンがあります。 ユーザーまたはプログラムによって設定が変更されるまで、そこに残ります。 1 つのセッションでインターフェイスをゾーンに手動で転送することができます。これは、コマンド sudo firewall-cmd --zone=home --change-interface=eth0 をアクティブ化することによって行われます。 結果 "成功"転送が成功したことを示します。 このような設定は、ファイアウォールを再起動するとすぐにリセットされることに注意してください。

このようにパラメータを変更すると、サービスがリセットされる可能性があることに注意してください。 たとえば、SSH は特定のゾーンで使用できますが、それらの中には、特定のゾーンでの操作をサポートしていないものもあります。 "家"、ただし、カスタムまたは特別なものでは、サービスは動作を拒否します。 firewall-cmd --get-active-zones と入力すると、インターフェイスが新しいブランチに正常にリンクされたことを確認できます。

以前に行った設定をリセットしたい場合は、単純にファイアウォールを再起動します: sudo systemctl restart firewalld.service 。

場合によっては、1 つのセッションだけのインターフェイス ゾーンを変更することが必ずしも便利であるとは限りません。 この場合、すべての設定が永続的に入力されるように構成ファイルを編集する必要があります。 これを行うには、テキストエディタを使用することをお勧めします ナノ、公式の sudo リポジトリからインストールされます ヤムインストールナノ。 次に、残っているのは次のことを行うだけです。

  1. sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 と入力して、エディターで構成ファイルを開きます。 eth0— 必要なインターフェイスの名前。
  2. 本物であることを確認する アカウントさらなるアクションを実行します。
  3. パラメータを見つける "ゾーン"その値を目的の値 ( public や home など) に変更します。
  4. キーを押したままにします Ctrl + Oをクリックして変更を保存します。
  5. ファイル名は変更せず、そのままクリックしてください。 入力.
  6. 出口 テキストエディタを通して Ctrl+X.

これで、次に設定ファイルを編集するまで、インターフェイス ゾーンは指定したとおりになります。 更新された設定を有効にするには、 sudo systemctl restart network.service および sudo systemctl restart firewalld.service を実行します。

デフォルトゾーンの設定

上では、デフォルト ゾーンを見つけることができるコマンドをすでに示しました。 任意のパラメータを設定して変更することもできます。 これを行うには、コンソールに sudo firewall-cmd --set-default-zone=name と入力するだけです。 名前— 必要なゾーンの名前。

コマンドの成功は碑文によって示されます。 "成功"別の行で。 この後、構成ファイルで別途指定されていない限り、現在のすべてのインターフェイスは指定されたゾーンにバインドされます。

プログラムとユーティリティのルールの作成

記事の冒頭で、各ゾーンのアクションについて説明しました。 このようなブランチでサービス、ユーティリティ、プログラムを定義すると、各ユーザーのニーズに合わせてそれぞれに個別のパラメータを適用できるようになります。 まず、現在利用可能なサービスの完全なリスト ( firewall-cmd --get-services ) をよく理解しておくことをお勧めします。

結果はコンソールに直接表示されます。 各サーバーはスペースで区切られており、リストから目的のツールを簡単に見つけることができます。 必要なサービスが利用できない場合は、追加でインストールする必要があります。 ソフトウェアの公式ドキュメントでインストール規則についてお読みください。

上記のコマンドはサービス名のみを表示します。 それぞれの詳細情報は、/usr/lib/firewalld/services にある個別のファイルから取得できます。 このようなドキュメントは XML 形式であり、SSH へのパスは /usr/lib/firewalld/services/ssh.xml のようになり、ドキュメントには次の内容が含まれます。

SSH
Secure Shell (SSH) は、リモート マシンにログインしてコマンドを実行するためのプロトコルです。 安全な暗号化通信を提供します。 ファイアウォールで保護されたインターフェイスを介して SSH 経由でマシンにリモートにアクセスする予定がある場合は、このオプションを有効にします。 このオプションを使用するには、openssh-server パッケージがインストールされている必要があります。

特定のゾーンのサービス サポートは手動でアクティブ化されます。 で "ターミナル"コマンド sudo firewall-cmd --zone=public --add-service=http を発行する必要があります。 --zone=パブリック- アクティベーション用のゾーン、および --add-service=http— サービスの名前。 このような変更は 1 つのセッションにのみ適用されることに注意してください。

永続的な追加は sudo firewall-cmd --zone=public --permanent --add-service=http によって行われ、その結果が "成功"操作が正常に完了したことを示します。

ビュー 完全なリスト別のコンソール行にリストを表示することで、特定のゾーンの永続的なルールを作成できます: sudo firewall-cmd --zone=public --permanent --list-services 。

サービスにアクセスできない問題の解決

デフォルトでは、ファイアウォール ルールには最も人気があり安全なサービスが許可されていますが、一部の標準または サードパーティのアプリケーション彼はブロックします。 この場合、ユーザーはアクセスの問題を解決するために設定を手動で変更する必要があります。 これは 2 つの異なる方法で実行できます。

ポートフォワーディング

ご存知のとおり、すべてのネットワーク サービスは特定のポートを使用します。 ファイアウォールによって簡単に検出され、ファイアウォールを使用してブロックを実行できます。 ファイアウォールによるこのようなアクションを回避するには、コマンド sudo firewall-cmd --zone=public --add-port=0000/tcp を使用して必要なポートを開く必要があります。 --zone=パブリック- 港湾エリア、 --add-port=0000/tcp— ポート番号とプロトコル。 firewall-cmd --list-ports オプションを使用すると、開いているポートのリストが表示されます。

範囲に含まれるポートを開く必要がある場合は、 sudo firewall-cmd --zone=public --add-port=0000-9999/udp という行を使用します。 --add-port=0000-9999/udp— ポートの範囲とそのプロトコル。

上記のコマンドでは、そのようなパラメーターの使用をテストすることのみが可能です。 成功した場合は、同じポートを永続設定に追加する必要があります。これを行うには、 sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp または sudo firewall-cmd -- と入力します。ゾーン=パブリック --permanent --add-port=0000-9999/udp 。 開いている永続ポートのリストは、 sudo firewall-cmd --zone=public --permanent --list-ports のように表示されます。

サービス定義

ご覧のとおり、ポートの追加は特に難しいことはありませんが、多数のアプリケーションを使用する場合、手順はさらに複雑になります。 使用中のすべてのポートを追跡するのは困難になるため、より良いオプションはサービスを定義することです。


あなたがしなければならないのは、サービスへのアクセスに関する問題を解決するための最も適切な方法を選択し、提供される指示に従うことだけです。 ご覧のとおり、すべての操作は非常に簡単に実行でき、問題は発生しません。

カスタムゾーンの作成

FirewallD が最初に特定のルールを使用して多数の異なるゾーンを作成したことはすでにご存知でしょう。 ただし、次のような状況があります。 システム管理者次のようなカスタム ゾーンを作成する必要があります。 「パブリックウェブ」インストールされている Web サーバーの場合、または 「プライベートDNS」— DNS サーバーの場合。 これら 2 つの例を使用して、ブランチの追加を見ていきます。


この記事では、カスタム ゾーンを作成し、そこにサービスを追加する方法を学習しました。 デフォルトでの設定とインターフェイスの割り当てについてはすでに説明しました。必要なのは、正しい名前を指定することだけです。 永続的な変更を行った後は、必ずファイアウォールを再起動してください。

ご覧のとおり、FirewallD ファイアウォールは、最も柔軟なファイアウォール構成を作成できる非常に包括的なツールです。 残っているのは、ユーティリティがシステムで起動し、指定されたルールがすぐに動作を開始することを確認することだけです。 これを行うには、sudo systemctl Enable firewalld コマンドを使用します。

CentoOS 7 以降、トラフィック フィルタリング ルールを構成するための新しいツールが登場しました ファイアウォール。 iptables ルールを管理するためにこれを使用することをお勧めします。 CentOS 8 では、標準の iptables フィルタリング パッケージの代わりに、nftables フレームワークが使用されるようになり、firewalld を通じてファイアウォール ルールを構成するとき、実際には nftables を構成することになります。 この記事では、CentOS 8 を実行しているサーバー上での firewalld のインストール、基本概念、構成について説明します (CentOS 7 も同様です)。


ファイアウォールD– 動的ルール管理 (再起動なし) と永続的なファイアウォール ルールの実装をサポートし、不要なトラフィックからサーバーを保護するファイアウォール。 および nftables のインターフェイスとして機能します。 FirewallD は、ほぼすべての Linux ディストリビューションで使用できます。

ファイアウォールの基本的な概念、ゾーン、ルール

インストールと構成を始める前に ファイアウォールでは、さまざまな接続の信頼レベルを定義するために使用されるゾーンの概念を紹介します。 さまざまなゾーン用 ファイアウォールさまざまなフィルタリング ルールを適用したり、事前定義されたサービス、プロトコルとポート、ポート転送、リッチ ルールの形式でアクティブなファイアウォール オプションを指定したりできます。

ファイアウォールゾーンに適用されるルールに応じて、受信トラフィックをゾーンごとにフィルタリングします。 もし IP- リクエスト送信者のアドレスが特定のゾーンのルールに一致すると、パケットはこのゾーンを通じて送信されます。 アドレスがサーバー上に構成されているゾーンのいずれにも一致しない場合、パケットはデフォルト ゾーンによって処理されます。 取り付けるとき ファイアウォールデフォルトゾーンは呼ばれます 公共.

firewalld には、権限が事前に設定されているゾーンがあります さまざまなサービス。 これらの設定を使用することも、独自のゾーンを作成することもできます。 firewalld のインストール時に作成されるデフォルト ゾーンのリスト (/usr/lib/firewalld/zones/ ディレクトリに保存されます):

落とす 最低限の信頼レベル。 すべての着信接続は応答なしでブロックされ、発信接続のみが許可されます。
ブロック ゾーンは前のゾーンと似ていますが、受信リクエストが拒否されると、Ipv4 の場合は icmp-host-prohibited メッセージ、Ipv6 の場合は icmp6-adm-prohibited メッセージが送信されます。
公共 信頼できないパブリックネットワークを表します。 選択した受信接続を個別に許可できます。
外部の ファイアウォールをゲートウェイとして使用する場合は外部ネットワーク。 NAT マスカレード用に構成されているため、内部ネットワークはプライベートのままですがアクセス可能です。
内部 外部ゾーンの対義語。 ホストには十分なレベルの信頼があり、多数の追加サービスが利用可能です。
DMZ DMZ (ネットワークの他の部分にアクセスできない隔離されたコンピューター) 内にあるコンピューターに使用されます。 特定の受信接続のみが許可されます。
仕事 作業用マシンのゾーン (ネットワーク上のほとんどのコンピュータは信頼されています)。
ホームネットワークゾーン。 ほとんどの PC は信頼できますが、サポートされるのは特定の受信接続のみです。
信頼できる ネットワーク上のすべてのマシンを信頼します。 すべての中で最もオープンな 利用可能なオプション、意識的に使用する必要があります。

ファイアウォール永続的なルールと一時的なルールの 2 つのルール セットが使用されます。 一時ルールは、サーバーが再起動されるまで機能します。 デフォルトでは、ルールを追加する場合、 ファイアウォール、ルールは一時的なものとみなされます ( ランタイム)。 ルールを永続的に追加するには、フラグを使用する必要があります。 - 永続。 このようなルールは、サーバーの再起動後に適用されます。

CentOS での firewalld のインストールと有効化

CentOS 7/8 では、OS にデフォルトで firewalld がインストールされます。 これを削除し、firewalld をインストールする場合は、標準の /dnf マネージャーを使用できます。

# yum install firewalld -y - Centos 7 の場合
# dnf install firewalld -y - Centos 8 の場合

悪魔に ファイアウォールサーバーの起動時に自動的に開始される場合は、次の場所に追加する必要があります。

# systemctl ファイアウォールを有効にする

そして実行します:

# systemctl ファイアウォールを開始します

サービスのステータスを確認します。

# systemctl ステータスファイアウォール

● firewalld.service - firewalld - 動的ファイアウォール デーモン ロード済み: ロード済み (/usr/lib/systemd/system/firewalld.service; 有効; ベンダー プリセット: 有効) Active: 2019-10-14 月 14:54 以降アクティブ (実行中) :40 +06; 22 秒前 ドキュメント: man:firewalld(1) メイン PID: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 10 月 14 日 14:54:40 server.vpn.ru systemd: firewalld を開始しています - 動的ファイアウォール デーモン...10 月 14 日 14:54:40 server.vpn.ru systemd: firewalld - 動的ファイアウォール デーモンを開始しました。

または次のコマンドを使用します。

# ファイアウォール-cmd --state

firewall-cmd コマンドは、nftables/iptables への firewalld フロントエンドです。

# ファイアウォール-cmd --state

ファイアウォールルールの操作

デフォルトのルール:

firewalld ルールを設定する前に、デフォルトでどのゾーンが使用されるかを確認する必要があります。

# ファイアウォール-cmd --get-default-zone

firewalld をインストールしたばかりでまだ構成していないため、デフォルトのゾーンがあります。 公共.

アクティブゾーンを確認してみましょう。 パブリックも 1 つあります。

# firewall-cmd --get-active-zones

パブリックインターフェース: eth0

ご覧のとおり、eth0 ネットワーク インターフェイスはゾーンによって制御されています。 公共.

コアルールを表示するには、次のように入力します。

# ファイアウォール-cmd --list-all

パブリック (アクティブ) ターゲット: デフォルト icmp-block-inversion: なし インターフェイス: eth0 ソース: サービス: dhcpv6-client ssh ポート: プロトコル: マスカレード: なし 転送ポート: ソース ポート: icmp ブロック: 豊富なルール:

リストから、DHCP クライアントと SSH に関連する通常の操作がこのゾーンに追加されていることがわかります。

利用可能なゾーン

すべてのゾーンのリストを表示するには、次のコマンドを実行する必要があります。

# ファイアウォール-cmd --get-zones

次のリストを取得しました。

ブロック dmz ドロップ外部ホーム内部パブリック信頼できる作業

特定のゾーンのルールを確認するには、フラグ - ゾーンを追加する必要があります。

# firewall-cmd --zone=home --list-all

ホーム ターゲット: デフォルト icmp-block-inversion: いいえ インターフェイス: ソース: サービス: dhcpv6-client mdns samba-client ssh ポート: プロトコル: マスカレード: いいえ forward-ports: ソース ポート: icmp-blocks: 豊富なルール:

すべてのゾーンのルールは、次のコマンドで表示できます。

# firewall-cmd --list-all-zones

多くのゾーンが存在する可能性があるため、リストは非常に大きくなります。

デフォルトのゾーンを変更します。

デフォルトでは、すべてのネットワーク インターフェイスはゾーン内に配置されます。 公共ただし、次のコマンドを使用して任意のゾーンに転送できます。

# firewall-cmd --zone=home -change-interface=eth0

パラメータの後 --ゾーン=希望のゾーンを指定します。

デフォルトのゾーンを変更するには、次のコマンドを使用する必要があります。

# firewall-cmd --set-default-zone=home

アプリケーションルールの追加

アプリケーションのポートを開くには、サービスを例外に追加します。 利用可能なサービスのリストを表示します。

出力には多数のサービスが含まれます。 詳細情報サービスについては、 XMLファイル。 これらのファイルはディレクトリにあります /usr/lib/firewalld/services。

例えば:

# cd /usr/lib/firewalld/services

メール(SMTP) このオプションでは、受信 SMTP メール配信が許可されます。 リモート ホストがマシンに直接接続してメールを配信できるようにする必要がある場合は、このオプションを有効にします。 POP3 または IMAP によって ISP のサーバーからメールを収集する場合、または fetchmail などのツールを使用する場合は、これを有効にする必要はありません。SMTP サーバーが不適切に構成されていると、リモート マシンがサーバーを使用して送信できる可能性があることに注意してください。スパム。

XML ファイルには、firewalld で開かれるサービス、プロトコル、およびポート番号の説明が含まれています。

ルールを追加するときは、パラメータを使用できます --add-service特定のサービスへのアクセスを開くには:

# firewall-cmd --zone=public --add-service=http

# firewall-cmd --zone=public --add-service=https

ルールを追加した後、指定したゾーンにサービスが追加されているかどうかを確認できます。

# firewall-cmd --zone=public --list-services

Dhcpv6-client http https ssh

これらのルールを永続的にしたい場合は、追加時にパラメータを追加する必要があります。 -永続.

ゾーンからサービスを削除するには:

# firewall-cmd --permanent --zone=public --remove-service=http

Dhcpv6-client https ssh テスト

サービスを例外に追加したい場合は、ファイルを作成できます。 XML自分で記入してください。 任意のサービスからデータをコピーしたり、名前、説明、ポート番号を変更したりできます。

ファイルをコピーしましょう smtp.xmlユーザー サービスを操作するためのディレクトリに移動します。

# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

ファイル内のサービスの説明を変更します。

XML ファイル自体も、サービスの名前に応じて名前を変更する必要があります。 その後、firewalld を再起動し、サービスがリストにあるかどうかを確認する必要があります。

サービスに電話しました テストそしてそれがリストに現れました:

Syslog-tls Telnet テスト TFTP

これで、作成したサービスを任意のゾーンに追加できるようになります。

# firewall-cmd --zone=public --add-service=test --permanent

# firewall-cmd --zone=public --permanent --list-services

Dhcpv6-client http https ssh テスト

必要なサービスがリストに見つからない場合は、次のコマンドを使用して firewalld で必要なポートを開くことができます。

# firewall-cmd --zone=public -add-port=77/tcp - ポート 77 を開きます tcp
# firewall-cmd --zone=public -add-port=77/udp - ポート 77 を開きます udp
# firewall-cmd --zone=public -add-port=77-88/udp - ポート範囲 77-88 を開きます udp
# firewall-cmd --zone=public -list-ports - 許可されたポートのリストを確認します。

ICMP 応答をブロック/許可します。

# firewall-cmd --zone=public --add-icmp-block=echo-r​​eply
# firewall-cmd --zone= public --remove-icmp-block=echo-r​​eply

追加されたポートを削除します。

# firewall-cmd --zone=public -remove-port=77/udp - 一時ルール 77 を削除します udp

# firewall-cmd --permanent --zone=public -remove-port=77/udp - 永続的なルールを削除します

独自のゾーンを追加する

独自のゾーンを作成できます(これをゾーンと呼びます) 私たちの):

# firewall-cmd --permanent --new-zone=our

新しいゾーンの作成後、およびサービスの作成後は再起動が必要です ファイアウォール:

# ファイアウォール-cmd --reload

# ファイアウォール-cmd --get-zones

ブロック dmz ドロップ外部ホーム内部私たちの公共の信頼できる仕事

ゾーン 私たちの利用可能。 サービスを追加したり、特定のポートを開いたりできます。

Firewalld: IP アドレスのブロック、例外の作成

信頼できる IP アドレスをファイアウォールの例外に追加したり、不要な IP アドレスをブロックしたりできます。

特定の IP アドレス (8.8.8.8 など) をサーバーに追加するには、次のようにします。 ファイアウォール、次のコマンドを使用します。

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" 送信元アドレス="8.8.8.8" accept"

エリアを確認して確認してください IP豊富なルールの例外に追加:

パブリック (アクティブ) ターゲット: デフォルト icmp-block-inversion: なし インターフェイス: eth0 ソース: サービス: dhcpv6-client http https ssh テスト ポート: プロトコル: マスカレード: なし 転送ポート: ソース ポート: icmp ブロック: 豊富なルール:ルールファミリー="ipv4" 送信元アドレス="8.8.8.8" 受け入れます

ブロックするには IP、交換する必要があります 受け入れるの上 拒否する:

# firewall-cmd --zone=public --add-rich-rule="ルールファミリー="ipv4" 送信元アドレス="8.8.4.4" 拒否"

# firewall-cmd --zone=public --list-all

パブリック (アクティブ) ターゲット: デフォルト icmp-block-inversion: なし インターフェイス: eth0 ソース: サービス: dhcpv6-client http https ssh テスト ポート: プロトコル: マスカレード: なし 転送ポート: ソース ポート: icmp ブロック: 豊富なルール:ルールファミリー="ipv4" ソースアドレス="8.8.8.8" 受け入れルールファミリー="ipv4" ソースアドレス="8.8.4.4" 拒否

特定の IP アドレスからのリクエストに対してのみ特定のサービスを許可できます。

#firewall-cmd --permanent --add-rich-rule "rule family="ipv4" 送信元アドレス="10.10.1.0/24" サービス名="https" accept"

サーバーへのすべてのリクエストを緊急にブロックする必要がある場合は、panic コマンドを使用します。

# ファイアウォール-cmd --パニック-オン

次のコマンドのいずれかを使用して、パニック モードを無効にできます。

# ファイアウォール-cmd --パニック-オフ

またはサーバーを再起動します。

firewalld 構成をブロックして、ローカル サービスが ルート権作成したファイアウォール ルールを変更できませんでした:

# ファイアウォール-cmd --lockdown-on

ブロックモードを無効にします。

# ファイアウォール-cmd --lockdown-off

ファイアウォールでのポート転送

firewalld でポート転送ルールを作成できます。 ポート 443 を 9090 に転送するには:

# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

ポート転送ルールを削除するには:

# firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090

FirewallD は、CentOS 7 サーバーでデフォルトで利用できるファイアウォール管理ツールです。これは基本的に IPTables のラッパーであり、グラフィカル構成ツール、firewall-config、および firewall-config ツールが付属しています。 コマンドラインファイアウォール-cmd。 IPtables サービスでは、変更ごとに古いルールを削除し、ファイル内に新しいルールを作成する必要があります。 /etc/sysconfig/iptables`、firewalld の場合は相違点のみが適用されます。

ファイアウォールDゾーン

FirewallD は、Iptables のルールやチェーンの代わりにサービスとゾーンを使用します。 デフォルトでは、次のゾーンが使用可能です。

  • 落とす– すべての受信メッセージを破棄します ネットワークパケット応答なし、送信のみ ネットワーク接続利用可能。
  • ブロック– icmp-host-prohibited というメッセージを含むすべての受信ネットワーク パケットを拒否し、送信ネットワーク接続のみが許可されます。
  • 公共– 公共エリアでの使用のために、選択された受信接続のみが受け入れられます
  • 外部の– マスカレードのある外部ネットワークの場合、選択された受信接続のみが受け入れられます。
  • DMZ– 非武装地帯DMZ、から公的にアクセス可能 アクセスが制限されている内部ネットワーク、選択された受信接続のみが受け入れられます。
  • 仕事
  • – ホーム ゾーンのコンピュータの場合、選択された受信接続のみが受け入れられます。
  • 内部– 内部ネットワーク上のコンピュータの場合、選択された受信接続のみが受け入れられます。
  • 信頼できる– すべてのネットワーク接続が受け入れられます。

すべてのリストを取得するには 利用可能なゾーン:

# firewall-cmd --get-zones ワークドロップ内部外部の信頼できるホーム dmz パブリックブロック

デフォルトゾーンのリストを表示するには:

# firewall-cmd --get-default-zone public

デフォルトのゾーンを変更するには:

ファイアウォールサービス

FirewallD サービスは、firewalld のサービス エントリ情報を含む XML 構成ファイルです。 利用可能なすべてのサービスのリストを取得するには:

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry Dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imap ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis Pop3 Pop3s postgresql privoxy proxy-dhcp ptp Puppetmaster radi us rpc バインドrsyncd samba samba-client sane smtp smtps snmp snmptrapquid ssh synergy syslog syslog-tls telnet tftp tftp-client tintor-socks 伝送クライアント vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

構成 XMLファイルディレクトリに保存される /usr/lib/firewalld/services/そして /etc/firewalld/サービス/.

FirewallD を使用したファイアウォールのセットアップ

例として、Web サーバー、ポート 7022 の SSH、およびメール サーバーを実行している場合に、FirewallD を使用してファイアウォールを構成する方法を次に示します。

まず、DMZ のデフォルト ゾーンを設定します。

# ファイアウォール-cmd --set-default-zone=dmz # ファイアウォール-cmd --get-default-zone dmz

DMZ に HTTP および HTTPS の永続的なサービス ルールを追加するには、次のコマンドを実行します。

# firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

ポート 25 (SMTP) とポート 465 (SMTPS) を開きます。

ファイアウォール-cmd --zone=dmz --add-service=smtp --permanent ファイアウォール-cmd --zone=dmz --add-service=smtps --permanent

オープン、IMAP、IMAPS、POP3、POP3S ポート:

ファイアウォール-cmd --zone=dmz --add-service=imap --permanent firewall-cmd --zone=dmz --add-service=imaps --permanent firewall-cmd --zone=dmz --add-service= Pop3 --permanent firewall-cmd --zone=dmz --add-service=pop3s --permanent

SSH ポートが 7022 に変更されているため、SSH サービス (ポート 22) を削除し、ポート 7022 を開きます。

ファイアウォール-cmd --remove-service=ssh --permanent ファイアウォール-cmd --add-port=7022/tcp --permanent

変更を実装するには、ファイアウォールを再起動する必要があります。

ファイアウォール-cmd --reload

最後に、ルールをリストすることができます。

CentOS 7 には、CentOS 6 とは異なり、データベースに新しいファイアウォール、firewalld が付属しています。 これを無効にして古き良き iptables に置き換えることもできますが、そのための直接の前提条件がない場合は、古いものに依存するよりも新しいものに慣れる方が良いでしょう。 これは Windows 10 を意味するものではありません Windowsよりも優れています 7 であり、Windows XP は Windows 7 よりも優れています ;) このトピックの良い例は selinux です。 最初はほぼ全員(私を含む)がそれをオフにし、少し叱ったことさえありましたが、今ではほとんど誰もそれをアドバイスしません。 それどころか、多くの人はすでに semanage の使用に慣れています (または慣れ始めています)。 firewalld をすぐに無効にするわけではありませんが、どうなるか試してみましょう。

Firewalld は根本的に異なるファイアウォールではありません。 これは netfilter へのもう 1 つのアドオンであるため、iptables の経験がある場合は、少し苦労した後、簡単に新しいツールを使い始めることができます。

ファイアウォールの起動と停止

firewalld が実行されているかどうかを確認してみましょう。

# systemctl ステータスファイアウォール

詳細については、こちらをご覧ください。 簡単に「はい (機能します)」または「いいえ」を言うには、次のようにします。

# ファイアウォール-cmd --state
走っている

わかりました、うまくいきます。

ファイアウォールを停止しています:

# systemctl ファイアウォールを停止します

自動起動禁止:

# systemctl ファイアウォールを無効にする

ファイアウォールを開始します。

# systemctl ファイアウォールを開始します

自動起動を有効にする:

# systemctl ファイアウォールを有効にする

ファイアウォールゾーン

Firewalld はゾーンの概念を広範囲に利用しています。 デフォルトで有効なすべてのゾーンのリスト:

# ファイアウォール-cmd --get-zones
ブロック dmz ドロップ外部ホーム内部パブリック信頼できる作業

ゾーンの目的 (もちろん条件付き):

  • ドロップ - すべての着信パケットは応答なしで破棄 (ドロップ) されます。 送信接続のみが許可されます。
  • block - 着信接続は拒否され、応答 icmp-host-prohibited (または icmp6-adm-prohibited) で拒否されます。 システムによって開始された接続のみが許可されます。
  • 公共 - デフォルトゾーン。 名前から、このゾーンが次のような場所で作業することを目的としていることがわかります。 パブリックネットワーク。 私たちはこのネットワークを信頼しておらず、特定の受信接続のみを許可しています。
  • external - ルーターの外部インターフェイスのゾーン (いわゆるマスカレード)。 定義した受信接続のみが許可されます。
  • dmz - DMZ ゾーン。特定の受信接続のみが許可されます。
  • 職場 - 職場ネットワーク ゾーン。 私たちはまだ誰も信頼していませんが、以前ほどではありません:) 特定の受信接続のみが許可されます。
  • ホーム - ホームゾーン。 環境を信頼しますが、特定の受信接続のみが許可されます
  • 内部 - 内部ゾーン。 環境を信頼しますが、特定の受信接続のみが許可されます
  • 信頼できる - すべてが許可されます。

すべてのアクティブなゾーンのリスト:

# firewall-cmd --get-active-zones
公共
インターフェース: enp1s0

はい、enp1so ネットワーク インターフェイスが接続されているパブリック ゾーンです。 次に、sshd がハングするパブリック ゾーンに新しいポートを追加します。

ネットワーク インターフェイスの名前 (enp1s0 など) がわかれば、それがどのゾーンに属しているかを確認できます。

# firewall-cmd --get-zone-of-interface=enp1s0
公共

どのインターフェイスが特定のゾーンに属しているかを確認できます。

# firewall-cmd --zone=public --list-interfaces
enp1s0

例: 非標準ポートでの SSH の許可

デフォルトの 22/tcp ではなく、ポート 2234/tcp で ssh 経由でサーバーへのアクセスを許可しましょう。 途中で、selinux についても少し触れてみましょう。

まず、サーバーで一般に何が許可されているかを見てみましょう。

# firewall-cmd --permanent --list-all
パブリック (デフォルト)
インターフェース:
情報源:
サービス: ssh dhcpv6-client
マスカレード:いいえ
フォワードポート:
icmp ブロック:
豊富なルール:

ipv6 はまだ使用していないので、対応するものをすぐに削除します。 ファイアウォールからのルール:

# firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client

ポート 2234/tcp への接続を (再起動後に失われないように) 永続的に許可しましょう (それに sshd をハングします)。

# firewall-cmd --permanent --zone=public --add-port=2234/tcp

ルールをリロードしましょう:

# ファイアウォール-cmd --reload

確認してみましょう:

# firewall-cmd --zone=public --list-ports
2234/tcp

OK、ポートは開いています。 sshd 構成を編集します。

# nano /etc/ssh/sshd_config
...
ポート2234
...

# systemctl sshd.service を再起動します

ただし、無効にしていないことが望ましい SELinux では、非標準ポート (sshd のポート 2234/tcp は非標準) で ssh に接続することはできません。 この手順をスキップして SELinux 保護がどのように機能するかを確認することも、すぐにすべてを構成することもできます。

# yum はセマネージを提供します
# yum インストールpolicycoreutils-python
# semanage port -a -t ssh_port_t -p tcp 2234

今はすべて問題ありません。 新しいポートで ssh 接続を確認します。 すべて問題なければ、ポート 22 へのアクセスを閉じます。

# firewall-cmd --permanent --zone=public --remove-service=ssh
# ファイアウォール-cmd --reload

何が起こったのか見てみましょう:

# ファイアウォール-cmd --list-all
public (デフォルト、アクティブ)
インターフェース:
情報源:
サービス:
ポート: 2234/tcp
マスカレード:いいえ
フォワードポート:
icmp ブロック:
豊富なルール:

それだけです。

さまざまな便利なコマンド:

すべての送受信パケットに対してブロック モードを有効にします。

# ファイアウォール-cmd --パニック-オン

すべての送受信パケットのブロッキング モードを無効にします。

# ファイアウォール-cmd --パニック-オフ

すべての送受信パケットのブロック モードが有効になっているかどうかを確認します。

# ファイアウォール-cmd --クエリ-パニック

現在の接続を失わずに firewalld ルールをリロードします。

# ファイアウォール-cmd --reload

firewalld ルールをリロードしてリセットする 現在の接続(問題が発生した場合にのみ推奨):

# ファイアウォール-cmd --complete-reload

ネットワーク インターフェイスをゾーンに追加します。

# firewall-cmd --zone=public --add-interface=em1

ネットワーク インターフェイスをゾーンに追加します (ファイアウォールの再起動後に保存されます)。

# firewall-cmd --zone=public --permanent --add-interface=em1

ifcfg-enp1s0 設定で、このインターフェイスがどのゾーンに属するかを指定できます。 これを行うには、ZONE=work をファイル /etc/sysconfig/network-scripts/ifcfg-enp1s0 に追加します。 ZONE パラメータが指定されていない場合は、デフォルトのゾーン (/etc/firewalld/firewalld.conf ファイルの DefaultZone パラメータ) が割り当てられます。

許可するポート範囲:

# ファイアウォールcmd --zone=public --add-port=5059-5061/udp

マスカレード (マスカレード、別名、別名...):

ステータスを確認します:

# firewall-cmd --zone=external --query-masquerade

オンにする:

# firewall-cmd --zone=external --add-masquerade

ここで、たとえばパブリック ゾーンのマスカレードを有効にできることに注意してください。

ポート 22 で受信したメッセージを別のホストにリダイレクトします。

# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.23

宛先ポートを変更して (22 から 192.168.1.23:2055)、ポート 22 の受信メッセージを別のホストにリダイレクトします。

# ファイアウォール-cmd --zone=external /
--add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.23

ここで終わります、なぜなら... 例は無限にある可能性があります。 付け加えておきますが、私個人としては、firewalld のイノベーションについて完全に自分の意見をまとめていないのです。なぜなら... 構文に慣れるまでに時間がかかりますし、動物園内に異なる OS Linux が存在する場合、そもそも慣れの問題が発生する可能性があります。 しかし、firewalld をマスターすると視野が広がります。多くの場合、努力する価値はあります。

ファイアウォールの利点

主な利点は、iptables チェーンから少し抽象化されているため、ポート転送を有効にするために、FORWARD に加えて PREROUTING や POSTROUTING について考える必要がないことです。 「製造元からの IPtables API」のようなものが提供されます。 nat を有効にしている場合は、正確にどこで (どのような環境で) かは関係ありません。 シリアルナンバー現在のルール) ルールが掲載されます。 eth0 で nat を有効にすることを指定するだけです。 ナンセンスではありません;) これは、ファイアウォールを管理するための Web インターフェイスを整理する必要がある場合に便利です。

ステータス(nat が有効かどうかなど)を確認することができます。 また、これをスクリプトやアプリケーションのロジックなどでも使用します。 iptables でステータスリクエスト (オン/オフ) を作成する方法がわかりません。 もちろん、 iptables -L -t nat | のようなこともできます。 grep "..." ですが、これは "firewall-cmd --zone=external --query-masquerade" の実行とは少し異なることを認めなければなりません。 たとえば、CentOS を搭載した VM が数百個あり、WAN インターフェイスなどの名前が若干異なる場合があります。 これで、さまざまなマシンで期待どおりの結果が得られるユニバーサル コマンドレットが完成しました。

ファイアウォールのデメリット

私の意見では、主な欠点は、慣れてくると、Debian、Ubuntu、CentOS、そして一般的にどこにでもある「純粋な」iptables に慣れ始めることです。 ちなみに、Mikrotik でも、構文とチェーンのタイプは iptables に似ています。 もちろん、これはすべての人に当てはまるわけではありません。 そして、専門家は、特定の条件がある場合、何を扱うかは気にしません。彼は自分が持っているもので仕事をします。 しかし...私は逆行性の人間で、各大手企業が独自に導入する新製品には(明らかなメリットがない場合に)必死に抵抗します。 RedHat は、より多くの新しいスペシャリストがファイアウォールのエースになることで利益を得るでしょう。

そして、firewalld に切り替えた場合、純粋な iptables 構文は邪魔になるだけです。標準の firewalld 構文を使用せずにルールの変更や追加を開始すると、混乱が生じるか、ファイアウォールが単に故障するだけです。

ファイアウォールはいらない! 古い iptables を返してください!

それでも過去に戻って、firewalld を iptables に置き換えたい場合は、それを行うのはまったく難しいことではありません。

ここは初心者向けの場所ではありません:

# systemctl ファイアウォールを無効にする
# systemctl ファイアウォールを停止します

古き良き iptables をインストールします。

# yum iptables サービスをインストールします

ファイアウォールを起動します。

# systemctl で iptables を開始します
# systemctl は ip6tables を開始します

オンにすると自動起動します:

# systemctl で iptables を有効にする
# systemctl で ip6tables を有効にする

再起動後に iptables ルールを保存するには:

# /sbin/iptables-save > /etc/sysconfig/iptables
# /sbin/ip6tables-save > /etc/sysconfig/ip6tables

または、昔ながらの方法:

# サービス iptables の保存

現在のルールは次のファイルにあります。
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables

iptables を再起動します (たとえば、変更を加えた後):

# systemctl iptables.service を再起動します


しかし、iptables コマンドは複雑なので、多くのユーザーはすべてのオプションを覚えて、それらをいつ使用するかが困難です。 したがって、ディストリビューション開発者は、ファイアウォール管理を簡素化するのに役立つ独自のアドオンを iptables 上に作成します。 CentOS には、Firewalld と呼ばれる iptables を管理するためのアドオンがあります。

Firewalld には、iptables と比較していくつかの重要な違いがあります。 ここでは、ネットワーク アクセス制御は、チェーンやルールではなく、ゾーンとサービスのレベルで実行されます。 また、ルールは実行中のセッションを中断することなく動的に更新されます。 この記事では、例として Firewalld を使用してファイアウォール CentOS 7 を設定する方法について説明します。

上で述べたように、Firewalld はルール チェーンではなくゾーンで機能します。 各ネットワーク インターフェイスには特定のゾーンを割り当てることができます。 ゾーンは、そのネットワーク インターフェイスに適用されるルール、制限、およびアクセス許可のセットです。 インターフェイスごとに選択できるゾーンは 1 つだけです。 開発者はいくつかのプリセット ゾーンを作成しました。

  • 落とす- すべての受信パケットをブロックし、送信パケットのみを許可します
  • ブロック- 前のオプションとは異なり、パッケージの送信者にパッケージをブロックするメッセージが送信されます。
  • 公共- 受信接続は ssh と dhclient でのみサポートされます。
  • 外部の- 内部ネットワークを隠すための NAT をサポートします。
  • 内部- ssh、samba、mdns、および dhcp サービスが許可されます。
  • DMZ- ネットワークにアクセスできない分離されたサーバーに使用されます。 SSH 経由の接続のみが許可されます。
  • 仕事- ssh および dhcp サービスは許可されます。
  • - 内部と同様。
  • 信頼できる- すべてが許可されます。

したがって、サービスを許可または拒否するには、現在のゾーンにサービスを追加または削除するか、インターフェイス ゾーンを許可されているゾーンに変更するだけで済みます。 iptables のパケットのデフォルトのアクション ポリシーからも類似点を引き出すことができます。 信頼されたゾーンには ACCEPT ポリシーがあり、すべての接続が許可されます。ブロック ゾーンには、すべての接続を拒否する DENY ポリシーがあり、他のすべてのゾーンはブロック ゾーンの後継とみなされます。さらに、一部のゾーンに対してネットワーク接続を許可するための事前定義されたルールがすでにあります。サービス。

Firewalld には次の 2 種類の構成もあります。

  • ランタイム- 再起動するまでのみ有効で、特に明記されていないすべての変更はこの構成に適用されます。
  • 永続- 再起動後も機能する永続的な設定。

これで必要なものはすべてわかったので、firewalld-cmd ユーティリティに進みましょう。

Firewall-cmd の構文とオプション

Firewalld 設定は、firewall-cmd コンソール ユーティリティを使用するか、グラフィカル インターフェイスで管理できます。 CentOS はサーバーで使用されることが多いため、ターミナルで作業する必要があります。 ユーティリティの構文を見てみましょう。

ファイアウォール-cmd オプション

ゾーンの管理には次の構文が使用されます。

firewall-cmd --configuration --zone=オプション ゾーン

構成として、再起動後に変更を保存するには --permanent オプションを指定するか、何も指定しない場合は、変更は再起動するまでのみ有効になります。 ゾーンには、目的のゾーンの名前を使用します。 ユーティリティのオプションを見てみましょう。

  • - 州- ファイアウォールのステータスを表示します。
  • --リロード- 永続的な構成からルールを再ロードします。
  • --complete-reload- すべての接続を中断してルールをハードリブートします。
  • --ランタイムから永続化- ランタイム構成設定を永続的な構成に転送します。
  • - 永続- 永続的な構成を使用します。
  • --get-デフォルトゾーン- デフォルトゾーンを表示します。
  • --set-デフォルトゾーン- デフォルトゾーンを設定します。
  • --get-アクティブゾーン- アクティブなゾーンを表示します。
  • --get-zones- 利用可能なすべてのゾーンを表示します。
  • --get-services- 事前定義されたサービスを表示します。
  • --list-all-zones- すべてのゾーンの構成を表示します。
  • --新しいゾーン- 新しいゾーンを作成します。
  • --削除ゾーン- ゾーンを削除します。
  • --リスト-すべて- 選択したゾーンから追加されたすべてを表示します。
  • --リストサービス- ゾーンに追加されたすべてのサービスを表示します。
  • --add-service- サービスをゾーンに追加します。
  • --サービスの削除- サービスをゾーンから削除します。
  • --リスト-ポート- ゾーンに追加されたディスプレイポート。
  • --ポートの追加- ゾーンにポートを追加します。
  • --ポートの削除- ゾーンからポートを削除します。
  • --クエリポート- ポートがゾーンに追加されているかどうかを表示します。
  • --リスト-プロトコル- ゾーンに追加された表示プロトコル。
  • --追加プロトコル- ゾーンにプロトコルを追加します。
  • --削除プロトコル- ゾーンからプロトコルを削除します。
  • --list-source-ports- ゾーンに追加された送信元ポートを表示します。
  • --ソースポートの追加- 送信元ポートをゾーンに追加します。
  • --remove-source-port- 送信元ポートをゾーンから削除します。
  • --list-icmp-blocks- icmp ブロックのリストを表示します。
  • --add-icmp-ブロック- icmp ブロックを追加します。
  • --add-icmp-ブロック- icmp ブロックを削除します。
  • --add-forward-ポート- NAT へのリダイレクト用のポートを追加します。
  • --remove-forward-port- NAT へのリダイレクト用のポートを削除します。
  • --追加-マスカレード- NAT を有効にする。
  • --マスカレードの削除- NAT を削除します。

これらがユーティリティのすべてのオプションではありませんが、この記事ではこれらで十分です。

CentOS 7 でのファイアウォールの設定

1. ファイアウォールのステータス

最初のステップは、ファイアウォールの状態を確認することです。 これを行うには、次を実行します。

sudo systemctlステータスファイアウォール

Firewalld サービスが無効になっている場合は、有効にする必要があります。

sudo systemctl ファイアウォールを開始
sudo systemctl ファイアウォールを有効にする

次に、firewall-cmd コマンドを使用して、Firewalld が実行されているかどうかを確認する必要があります。

sudo ファイアウォール-cmd --state

プログラムが実行中で何も問題がなければ、「実行中」というメッセージが表示されます。

2. ゾーン管理

すでに理解されているように、ゾーンは管理のための主要なツールです ネットワーク接続。 デフォルトのゾーンを表示するには、次を実行します。

sudo ファイアウォール-cmd --get-default-zone

私の場合、これはパブリックゾーンです。 --set-default-zone オプションを使用して、現在のゾーンを変更できます。

sudo ファイアウォール-cmd --set-default-zone=public

すべてのネットワーク インターフェイスでどのゾーンが使用されているかを確認するには、次のコマンドを実行します。

sudo ファイアウォール-cmd --get-active-zones

リストには、割り当てられているゾーンとインターフェイスが表示されます。 このコマンドを使用すると、特定のゾーンの構成を表示できます。 たとえば、パブリック ゾーンの場合は次のようになります。

3. サービスの設定

次のコマンドを使用して、すべての事前定義されたサービスを表示できます。

sudo ファイアウォール-cmd --get-services

このコマンドは、利用可能なすべてのサービスをリストします。それらのサービスのいずれかをゾーンに追加して許可できます。 たとえば、http への接続を許可してみましょう。

sudo firewall-cmd --zone=public --add-service=http --permanent

このサービスを削除するには、次を実行します。

sudo firewall-cmd --zone=public --remove-service=http --permanent

どちらの場合も --permanent オプションを使用して、再起動後も構成が保持されるようにしました。 変更後、ルールを更新する必要があります。

sudo ファイアウォール-cmd --reload

次に、ゾーン構成を見ると、追加されたサービスがそこに表示されます。

sudo firewall-cmd --zone=public --list-all

4. Firewalldでポートを開く方法

必要なプログラムのサービスがない場合は、そのポートを手動で開くことができます。 これを行うには、目的のポートをゾーンに追加するだけです。 たとえば、ポート 8083:

sudo firewall-cmd --zone=public --add-port=8083/tcp --permanent

このポートをゾーンから削除するには、次を実行します。

sudo firewall-cmd --zone=public --remove-port=8083/tcp --permanent

サービスと同様に、centos 7 ファイアウォールでポートを開くには、ファイアウォールを再起動する必要があります。

sudo ファイアウォール-cmd --reload

5. Firewalld ポート転送

Firewalld でのポート プローブは、iptables よりも設定がはるかに簡単です。 たとえば、トラフィックをポート 2223 からポート 22 にリダイレクトする必要がある場合は、ゾーンにリダイレクトを追加するだけです。

sudo firewall-cmd --zone=public --add-forward-port=port=2223:proto=tcp:toport=22

ここでは、リダイレクトは現在のマシン上でのみ実行されます。 NAT ネットワークを設定してポートを別のマシンに転送する場合は、まずマスカレード サポートを有効にする必要があります。

sudo firewall-cmd --zone=public --add-masquerade

次に、ポートを追加できます。

sudo firewall-cmd --zone=public --add-forward-port=port=2223:proto=tcp:toport=22:toaddr=192.168.56.4

6. 高度なルール

ゾーンの機能が十分でない場合は、高度なルールを使用できます。 高度なルールの一般的な構文は次のとおりです。

ルールファミリー = "ファミリー" ソース値 デスティネーション値 ログ監査アクション

主なパラメータの意味は次のとおりです。

  • として プロトコルファミリー ipv4 または ipv6 を指定するか、何も指定しない場合、ルールは両方のプロトコルに適用されます。
  • ソースそして 行き先パケットの送信者および受信者です。 これらのパラメータには、IP アドレス、サービス名、ポート、プロトコルなどが含まれます。
  • ログ- パケットの通過を syslog などに記録できます。 この設定では、ログ行のプレフィックスとログの詳細レベルを指定できます。
  • 監査- これ 別の方法メッセージがいつauditdサービスに送信されるかを記録します。
  • アクション一致したパケットに対して実行する必要があるアクションです。 利用可能: 受け入れ、ドロップ、拒否、マーク。

いくつかの例を見てみましょう。 IP 135.152.53.5 のユーザーのサーバーへのアクセスをブロックする必要があります。

sudo firewall-cmd --zone=public --add-rich-rule "rule family="ipv4" 送信元アドレス = 135.152.53.5拒否"

または、同じユーザーのポート 22 へのアクセスのみを拒否する必要があります。

sudo firewall-cmd --zone=public --add-rich-rule "rule family="ipv4" 送信元アドレス = 135.152.53.5 ポート ポート = 22 プロトコル = tcp拒否"

次のコマンドを使用して、すべての拡張ルールを表示できます。

sudo ファイアウォール-cmd --list-rich-rules

結論

この記事では、CentOS 7 でファイアウォールを構成する方法と、それを使用して実行できるタスクについて説明しました。 このプログラムは iptables よりもはるかに使いやすいですが、私の意見では、Ubuntu ファイアウォール アドオンの方がさらに使いやすいです。