RHCSAシリーズ:FirewallDとIptablesを使用したファイアウォールの基礎とネットワークトラフィックの制御-パート11

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

RHCSA: Control Network Traffic with FirewallD and Iptables – Part 11

この記事では、firewalldRed Hat Enterprise Linux 7のデフォルトのダイナミックファイアウォールデーモン、およびほとんどのシステム管理者とネットワーク管理者がよく知っているレガシーファイアウォールサービスであるiptablesサービスの基本を説明します。

A Comparison Between FirewallD and Iptables

本質的には、firewalldiptablesサービスは、同じインタフェースを通じてカーネル内のnetfilterフレームワークと対話します。これは、やはり、iptablesコマンドです。ただし、iptablesサービスとは異なり、firewalldは既存の接続が失われることなく、通常のシステム操作中に設定を変更できます。

Firewalldは、おそらくRHELシステムにデフォルトでインストールされていますが、実行されていない可能性があります。次のコマンドで確認できます(firewall-configはユーザーインターフェース構成ツールです):

# yum info firewalld firewall-config
Check FirewallD Information

および、

# systemctl status -l firewalld.service
Check FirewallD Status

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

# yum update && yum install iptables-services

どちらのデーモンも、通常のsystemdコマンドで起動および起動時に有効にすることができます。

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

読み物: システムdサービスを管理するための便利なコマンド

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

Iptables Firewall Configuration

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

# ls /usr/lib/firewalld /etc/firewalld
FirewallD Configuration

この記事では、ここに少しルールを追加した後、これらの設定ファイルをさらに詳しく調べます。今のところは、常に両方のツールに関する詳細情報を見つけることができることを思い出してください。

# man firewalld.conf
# man firewall-cmd
# man iptables

それ以外に、現在のシリーズの必須コマンドとシステムドキュメントのレビュー – パート1を見て、RHEL 7システムにインストールされているパッケージに関する情報を取得できるいくつかのソースについて説明しました。RHEL 7システムにインストールされているパッケージに関する情報を取得できるいくつかのソースについて説明しました。

ネットワークトラフィックを制御するためにIptablesを使用する

Iptablesファイアウォールの設定 – パート8Linux Foundation Certified EngineerLFCE)シリーズを参照して、iptablesの内部構造を思い出すことをお勧めします。これにより、すぐに例に入ることができます。

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

TCPポート80および443は、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:着信トラフィックを別の宛先にリダイレクト

あなたのボックスをソフトウェアファイアウォールとしてだけでなく、実際のハードウェアベースのファイアウォールとして使用している場合、それが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の始め方

firewalldで導入された変更の1つはゾーンです。このコンセプトにより、ユーザーがデバイスとそのネットワーク内のトラフィックに置く信頼レベルに基づいてネットワークを異なるゾーンに分割できます。

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

# firewall-cmd --get-active-zones

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

# firewall-cmd --zone=public --list-all
List all FirewallD Zones

あなたがゾーンについてRHEL 7 セキュリティガイドで詳しく読むことができるため、ここでは特定の例をいくつか挙げるだけにします。

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

対応しているサービスのリストを取得するためには、次を使用します。

# firewall-cmd --get-services
List All Supported 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

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

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

例5: IP / ポート転送

まず最初に、希望するゾーンでマスカレードが有効化されているかを確認する必要があります:

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

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

Check Masquerading Status

パブリックのマスカレードを有効化するか、

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

または外部でマスカレードを使用します。以下は例3firewalldで再現するために行うことです:

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

そして、ファイアウォールのリロードを忘れないでください。

この文章を日本語に翻訳します。Part 9のRHCSAシリーズで、通常webサーバーとFTPサーバーが使用するポートを許可または無効にする方法、そしてサービスのデフォルトのポートが変更されたときに適切なルールを変更する方法を説明しました。また、firewalldのウィキを参照してさらにいくつかの例を見つけることができます。

読むもの: RHEL 7でファイアウォールを設定するためのFirewallDの有用な例

結論

この記事で、ファイアウォールとは何であり、RHEL 7でどのようなサービスを使用して一つを実装することができるか、そしてこの任务にはいくつかの例があり、始めるのを助けることを説明しました。何かコメント、提案や質問があれば、下のフォームを使用してお知らせください。ありがとうございます。

Source:
https://www.tecmint.com/firewalld-vs-iptables-and-control-network-traffic-in-firewall/