ウェブサイト検索

RHCSA シリーズ: Firewall Essentials と FirewallD と Iptables を使用したネットワーク トラフィック制御 - パート 11


簡単に言うと、ファイアウォールは、事前に定義された一連のルール (パケットの宛先/送信元、トラフィックの種類など) に基づいてネットワーク内の送受信トラフィックを制御するセキュリティ システムです。 。

この記事では、Red Hat Enterprise Linux 7 のデフォルトの動的ファイアウォール デーモンである firewalld とレガシーの iptables サービスの基本を確認します。 Linux 用のファイアウォール サービス。ほとんどのシステム管理者やネットワーク管理者がよく知っており、RHEL 7 でも利用できます。

FirewallD と iptables の比較

内部では、firewalld サービスと iptables サービスの両方が、同じインターフェイス (当然のことながら iptables コマンド) を介してカーネル内の netfilter フレームワークと通信します。 。ただし、iptables サービスとは異なり、firewalld は、既存の接続が失われることなく、通常のシステム動作中に設定を変更できます。

Firewalld は RHEL システムにデフォルトでインストールされている必要がありますが、実行されていない場合もあります。次のコマンドを使用して確認できます (firewall-config はユーザー インターフェイス構成ツールです)。


yum info firewalld firewall-config

そして、


systemctl status -l firewalld.service

一方、iptables サービスはデフォルトでは含まれていませんが、経由でインストールできます。


yum update && yum install iptables-services

どちらのデーモンも、通常のsystemd コマンドを使用して起動し、起動時に起動できるようにすることができます。


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

こちらもお読みください: Systemd サービスを管理するための便利なコマンド

設定ファイルに関しては、iptables サービスは /etc/sysconfig/iptables を使用します (パッケージがシステムにインストールされていない場合、これは存在しません)。クラスター ノードとして使用される RHEL 7 ボックスでは、このファイルは次のようになります。

一方、firewalld は、/usr/lib/firewalld/etc/firewalld の 2 つのディレクトリに設定を保存します。


ls /usr/lib/firewalld /etc/firewalld

いくつかのルールをあちこちに追加した後、この記事の後半でこれらの構成ファイルをさらに詳しく調べます。ここまでで、両方のツールに関する詳細情報をいつでも見つけることができることを思い出していただくだけで十分でしょう。


man firewalld.conf
man firewall-cmd
man iptables

その他、重要なコマンドとシステム ドキュメントの確認 - 現在のシリーズのパート 1 を参照することを忘れないでください。ここでは、RHEL 7 システムにインストールされているパッケージに関する情報を入手できるいくつかのソースについて説明しました。 。

iptables を使用してネットワーク トラフィックを制御する

「Configure Iptables Firewall – Part 8」Linux Foundation Certified Engineer (LFCE) シリーズのパート 8 を参照して、iptables の内部についての記憶を新たにすることをお勧めします。次に進む前に。したがって、すぐに例に入ることができます。

例 1: 受信および送信 Web トラフィックの両方を許可する

TCP ポート 80443 は、Apache Web サーバーが通常 (HTTP) と安全な (HTTPS<) を処理するために使用するデフォルトのポートです。) Web トラフィック。次のように、enp0s3 インターフェイスの両方のポートを介した受信および送信 Web トラフィックを許可できます。


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
例 2: 特定のネットワークからのすべて (または一部) の受信接続をブロックする

特定のネットワーク (たとえば、192.168.1.0/24 など) から発信されるすべて (または一部の) タイプのトラフィックをブロックする必要がある場合があります。


iptables -I INPUT -s 192.168.1.0/24 -j DROP

192.168.1.0/24 ネットワークからのすべてのパッケージをドロップしますが、


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

ポート 22 経由の受信トラフィックのみを許可します。

例 3: 受信トラフィックを別の宛先にリダイレクトする

RHEL 7 ボックスをソフトウェア ファイアウォールとしてだけでなく、実際のハードウェア ベースのファイアウォールとしても使用し、2 つの異なるネットワーク間に配置する場合は、システムで IP 転送がすでに有効になっている必要があります。 。そうでない場合は、次のように /etc/sysctl.conf を編集し、net.ipv4.ip_forward の値を 1 に設定する必要があります。


net.ipv4.ip_forward = 1

次に、変更を保存し、テキスト エディタを閉じて、最後に次のコマンドを実行して変更を適用します。


sysctl -p /etc/sysctl.conf

たとえば、IP 192.168.0.10 の内部ボックスにプリンタがインストールされており、CUPS サービスがポート 631 でリッスンしている場合があります(両方ともプリント サーバーとファイアウォール上で)。ファイアウォールの反対側のクライアントからの印刷要求を転送するには、次の iptables ルールを追加する必要があります。


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

iptables はルールを順番に読み取るので、デフォルトのポリシーやそれ以降のルールが上記の例で説明したルールをオーバーライドしないように注意してください。

FirewallD の使用を開始する

ファイアウォールで導入された変更の 1 つはゾーンです。この概念により、ネットワークをさまざまなゾーンに分離することができ、ユーザーがそのネットワーク内のデバイスとトラフィックに置くことを決定した信頼レベルが得られます。

アクティブなゾーンをリストするには:


firewall-cmd --get-active-zones

以下の例では、パブリック ゾーンがアクティブであり、enp0s3 インターフェイスが自動的に割り当てられています。特定のゾーンに関するすべての情報を表示するには:


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

RHEL 7 セキュリティガイドでゾーンの詳細を読むことができるため、ここではいくつかの具体的な例のみをリストします。

例 4: ファイアウォールを通過するサービスを許可する

サポートされているサービスのリストを取得するには、を使用します。


firewall-cmd --get-services

http および https の Web トラフィックがファイアウォールを通過できるようにするには、次の手順を実行します。これは即時およびその後の起動時に有効になります。


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

code>–zone が省略された場合は、デフォルト ゾーン (firewall-cmd –get-default-zone で確認できます) が使用されます。

ルールを削除するには、上記のコマンドの「add」という単語を「remove」に置き換えます。

例 5: IP/ポート転送

まず、目的のゾーンでマスカレードが有効になっているかどうかを確認する必要があります。


firewall-cmd --zone=MyZone --query-masquerade

以下の画像では、外部ゾーンではマスカレードが有効になっていますが、パブリックでは有効になっていないことがわかります。

パブリックに対してマスカレードを有効にすることができます。


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

または外部でマスカレードを使用します。 ファイアウォールを使用して例 3 を複製するには次のようにします。


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

ファイアウォールをリロードすることを忘れないでください。

RHCSA シリーズのパート 9 でさらに例を見つけることができます。そこでは、Web サーバーと FTP サーバーで通常使用されるポートを許可または無効にする方法、およびそれらのサービスのデフォルト ポートが使用されない場合に対応するルールを変更する方法について説明しました。変更されます。さらに、その他の例については、firewalld wiki を参照してください。

こちらもお読みください: RHEL 7 でファイアウォールを構成するための便利な FirewallD の例

結論

この記事では、ファイアウォールとは何か、RHEL 7 でファイアウォールを実装するために利用できるサービスとは何かを説明し、これを開始するのに役立ついくつかの例を示しました。タスク。ご意見、ご提案、ご質問がございましたら、以下のフォームを使用してお気軽にお知らせください。よろしくお願いします!