パケット フィルタリング、ネットワーク アドレス変換を実行し、カーネル ランタイム パラメータを設定する方法 - パート 2
パート 1 (「静的ネットワーク ルーティングのセットアップ」) で約束したように、この記事 (RHCE シリーズのパート 2) では、まず次のことを紹介します。特定の条件が変化したり必要が生じた場合に実行中のカーネルの動作を変更するためのランタイム カーネル パラメータの設定に入る前に、Red Hat Enterprise Linux 7 のパケット フィルタリングとネットワーク アドレス変換 (NAT) の原理を理解してください。
RHEL 7 のネットワーク パケット フィルタリング
パケット フィルタリングについて話すときは、ファイアウォールが通過しようとする各データ パケットのヘッダーを読み取る、ファイアウォールによって実行されるプロセスを指します。次に、システム管理者が事前に定義したルールに基づいて必要なアクションを実行して、パケットをフィルタリングします。
ご存知かと思いますが、RHEL 7 以降、ファイアウォール ルールを管理するデフォルトのサービスは firewalld です。 iptables と同様に、ネットワーク パケットを検査して操作するために、Linux カーネルの netfilter モジュールと通信します。 iptables とは異なり、更新はアクティブな接続を中断することなくすぐに有効になります。サービスを再起動する必要さえありません。
firewalld のもう 1 つの利点は、事前設定されたサービス名に基づいてルールを定義できることです (これについては後ほど詳しく説明します)。
パート 1 では、次のシナリオを使用しました。
ただし、パケット フィルタリングについてはまだ説明していないため、例を簡略化するためにルーター #2 のファイアウォールを無効にしたことを思い出してください。宛先の特定のサービスまたはポート宛ての受信パケットを有効にする方法を見てみましょう。
まず、enp0s3 (192.168.0.19) から enp0s8 (10.0.0.18) への受信トラフィックを許可する永続ルールを追加しましょう。strong>):
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT
上記のコマンドは、ルールを /etc/firewalld/direct.xml に保存します。
cat /etc/firewalld/direct.xml
次に、ルールを有効にしてすぐに有効にします。
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT
これで、RHEL 7 ボックスから Web サーバーに Telnet 接続し、tcpdump を再度実行して 2 台のマシン間の TCP トラフィックを監視できるようになります。今回はルーター #2 のファイアウォールを使用します。有効になりました。
telnet 10.0.0.20 80
tcpdump -qnnvvv -i enp0s3 host 10.0.0.20
192.168.0.18 からの Web サーバー (ポート 80) への受信接続のみを許可し、192.168.0.0/ の他のソースからの接続をブロックしたい場合はどうすればよいでしょうか。 24 番のネットワーク?
Web サーバーのファイアウォールに次のルールを追加します。
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' --permanent
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' --permanent
これで、192.168.0.18 から、または 192.168.0.0/24 の他のマシンから Web サーバーに対して HTTP リクエストを行うことができます。最初のケースでは接続は正常に完了しますが、2 番目のケースでは最終的にタイムアウトになります。
これを行うには、次のコマンドのいずれかを実行します。
telnet 10.0.0.20 80
wget 10.0.0.20
リッチ ルールの詳細については、Fedora プロジェクト Wiki の Firewalld リッチ言語ドキュメントを確認することを強くお勧めします。
RHEL 7 のネットワーク アドレス変換
ネットワーク アドレス変換 (NAT) は、プライベート ネットワーク内のコンピュータのグループ (そのうちの 1 つだけの場合もあり) に一意のパブリック IP アドレスを割り当てるプロセスです。その結果、ネットワーク内では依然として独自のプライベート IP アドレスによって一意に識別されますが、外部からはすべて同じに見えます。