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

この記事では、firewalld、Red Hat Enterprise Linux 7のデフォルトのダイナミックファイアウォールデーモン、およびほとんどのシステム管理者とネットワーク管理者がよく知っているレガシーファイアウォールサービスであるiptablesサービスの基本を説明します。
A Comparison Between FirewallD and Iptables
本質的には、firewalldとiptablesサービスは、同じインタフェースを通じてカーネル内のnetfilterフレームワークと対話します。これは、やはり、iptablesコマンドです。ただし、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
設定ファイルに関して、iptablesサービスは/etc/sysconfig/iptables
を使用します(システムにパッケージがインストールされていない場合は存在しません)。クラスターノードとして使用されるRHEL 7ボックスでは、このファイルは次のようになります:

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

この記事では、ここに少しルールを追加した後、これらの設定ファイルをさらに詳しく調べます。今のところは、常に両方のツールに関する詳細情報を見つけることができることを思い出してください。
# man firewalld.conf # man firewall-cmd # man iptables
それ以外に、現在のシリーズの必須コマンドとシステムドキュメントのレビュー – パート1を見て、RHEL 7システムにインストールされているパッケージに関する情報を取得できるいくつかのソースについて説明しました。RHEL 7システムにインストールされているパッケージに関する情報を取得できるいくつかのソースについて説明しました。
ネットワークトラフィックを制御するためにIptablesを使用する
Iptablesファイアウォールの設定 – パート8のLinux Foundation Certified Engineer(LFCE)シリーズを参照して、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:着信トラフィックを別の宛先にリダイレクト
あなたの/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

あなたがゾーンについて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
コード>–zoneが省略された場合、デフォルトのゾーン(firewall-cmd –get-default-zoneで確認できます)が使用されます。
ルールを削除するには、上記のコマンドでaddという単語をremoveに置き換えます。
例5: IP / ポート転送
まず最初に、希望するゾーンでマスカレードが有効化されているかを確認する必要があります:
# firewall-cmd --zone=MyZone --query-masquerade
以下の画像では、マスカレードが外部ゾーンでは有効化されているが、パブリックでは有効化されていないことがわかります:

パブリックのマスカレードを有効化するか、
# firewall-cmd --zone=public --add-masquerade
または外部でマスカレードを使用します。以下は例3をfirewalldで再現するために行うことです:
# 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/