開発者ドキュメント

CentOS7でFirewallDからIptablesに移行する方法

序章

他のほとんどのLinuxディストリビューションと同様に、CentOS7は netfilter ネットワークスタックを流れるパケットにアクセスするためのLinuxカーネル内のフレームワーク。 これにより、ファイアウォールシステムを実装するために、パケットを検査および操作するために必要なインターフェイスが提供されます。

ほとんどのディストリビューションは iptables を使用するファイアウォール netfilter ファイアウォールルールを適用するためのフック。 CentOS 7には、と呼ばれる代替サービスが付属しています firewalld これは同じ目的を果たします。

その間 firewalld は優れた機能を備えた非常に有能なファイアウォールソリューションであり、一部のユーザーにとっては使い続けるのが簡単な場合があります iptables 彼らがその構文に満足し、その動作とパフォーマンスに満足している場合。 The iptables コマンドは実際にによって使用されます firewalld それ自体ですが、 iptables serviceはデフォルトではCentOS7にインストールされていません。 このガイドでは、をインストールする方法を示します iptables CentOS 7でサービスを提供し、ファイアウォールを firewalldiptables (代わりにFirewallDの使用方法を学びたい場合は、このガイドを確認してください)。

現在のファイアウォールルールを保存する(オプション)

に切り替える前に iptables サーバーのファイアウォールソリューションとして、現在のルールを保存することをお勧めします。 firewalld 施行しています。 上で述べたように firewalld デーモンは実際に iptables と話すコマンド netfilter カーネルフック。 このため、を使用して現在のルールをダンプできます。 iptables 指図。

現在のルールセットを標準出力とホームディレクトリ内のファイルにダンプします。 firewalld_iptables_rules 次のように入力します。

  1. sudo iptables -S | tee ~/firewalld_iptables_rules

で同じことをします ip6tables:

  1. sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

に応じて firewalld アクティブだったゾーン、有効にされたサービス、およびから渡されたルール firewall-cmd 直接 iptables、ダンプされたルールセットは非常に広範囲にわたる可能性があります。

The firewalld サービスは通常の方法でファイアウォールポリシーを実装します iptables rules.It は、を使用して管理フレームワークを構築することでこれを実現します iptables チェーン。 表示される可能性のあるルールのほとんどは、これらの管理チェーンを作成し、これらの構造に出入りするトラフィックの流れを指示するために使用されます。

最終的に自分のファイアウォールルールに移行する iptables サービスは、次のような管理フレームワークを再作成する必要はありません。 firewalld 依存している。 このため、最終的に実装するルールセットははるかに単純になる可能性があります。 可能な限り多くの生データをそのまま保持するために、ここではセット全体を保存しています。

次のように入力して、再作成する必要のあるポリシーを理解するための、より重要な行のいくつかを確認できます。

  1. grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

これは主に、最終決定につながるルールを表示します。 ユーザーが作成したチェーンにのみジャンプするルールは表示されません。

Iptablesサービスをダウンロードしてインストールする

サーバーの移行を開始するには、ダウンロードしてインストールする必要があります iptables-service CentOSリポジトリからのパッケージ。

次のように入力して、サービスファイルをダウンロードしてインストールします。

  1. sudo yum install iptables-services

これにより、ダウンロードしてインストールされます systemd 管理に使用されるスクリプト iptables サービス。 また、いくつかのデフォルトを書き込みます iptablesip6tables 構成ファイルを /etc/sysconfig ディレクトリ。

Iptablesファイアウォールルールを作成する

次に、あなたはあなたの iptables を変更することによるファイアウォールルール /etc/sysconfig/iptables/etc/sysconfig/ip6tables ファイル。 これらのファイルには、起動時に読み取られて適用されるルールが含まれています。 iptables サービス。

ファイアウォールルールをどのように構築するかは、 system-config-firewall プロセスがインストールされ、これらのファイルを管理するために使用されています。 の上部を確認してください /etc/sysconfig/iptables ファイルを使用して、手動編集を推奨していないかどうかを確認します。

  1. sudo head -2 /etc/sysconfig/iptables

出力が次のようになっている場合は、手動で編集してください。 /etc/sysconfig/iptables/etc/sysconfig/ip6tables のポリシーを実装するためのファイル iptables ファイアウォール:

output
# sample configuration for iptables service # you can edit this manually or use system-config-firewall

でファイルを開いて編集します sudo ルールを追加する権限:

  1. sudo nano /etc/sysconfig/iptables
  2. sudo nano /etc/sysconfig/ip6tables

ルールを作成したら、次のコマンドを使用してIPv4およびIPv6ルールをテストできます。

  1. sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
  2. sudo sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

一方、検査からの出力が /etc/sysconfig/iptables ファイルは次のようになります。手動でファイルを編集しないでください。

output
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended.

これは、 system-config-firewall 管理ツールがインストールされ、このファイルの管理に使用されています。 手動で変更した場合は、ツールによって上書きされます。 これが表示された場合は、関連するツールの1つを使用してファイアウォールに変更を加える必要があります。 テキストUIの場合は、次のように入力します。

  1. sudo system-config-firewall-tui

グラフィカルUIがインストールされている場合は、次のように入力して起動できます。

  1. sudo system-config-firewall

について学ぶのに助けが必要な場合 iptables ルールと構文については、主にUbuntuシステムを対象としている場合でも、次のガイドが役立つ場合があります。

FirewallDサービスを停止し、Iptablesサービスを開始します

次に、現在を停止する必要があります firewalld ファイアウォールを起動し、 iptables サービス。 を使用します && すぐに新しいファイアウォールサービスを開始するように構築する firewalld サービスは正常にシャットダウンします:

  1. sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables

あなたはそれを確認することができます firewalld 次のように入力して実行されていません:

  1. sudo firewall-cmd --state

また、で設定したルールが /etc/sysconfig 次のように入力すると、ディレクトリが読み込まれ、適用されます。

  1. sudo iptables -S
  2. sudo ip6tables -S

この時点で、 iptablesip6tables 現在のセッションでサービスがアクティブになっています。 ただし、現在、 firewalld サービスは、サーバーの再起動時に自動的に開始されるサービスです。

問題がある場合はサーバーを再起動して古いファイアウォールに戻すことができるため、ファイアウォールポリシーをテストして、必要なレベルのアクセス権があることを確認するのに最適なタイミングです。

FirewallDサービスを無効にし、Iptablesサービスを有効にする

ポリシーが正しく適用されていることを確認するためにファイアウォールルールをテストした後、先に進んで無効にすることができます firewalld 次のように入力してサービスを提供します。

  1. sudo systemctl disable firewalld

これにより、起動時にサービスが自動的に開始されなくなります。 以来 firewalld サービスを手動で開始しないでください。 iptables サービスが実行されている場合は、サービスをマスクすることで追加の手順を実行できます。 これにより、 firewalld サービスを手動で開始することもできません。

  1. sudo systemctl mask firewalld

今、あなたはあなたを有効にすることができます iptablesip6tables 起動時に自動的に開始するようにサービスを提供します。

  1. sudo systemctl enable iptables
  2. sudo systemctl enable ip6tables

これでファイアウォールの移行が完了します。

結論

ファイアウォールの実装は、サーバーを安全に保つための重要なステップです。 その間 firewalld は優れたファイアウォールソリューションであり、最も使い慣れたツールを使用したり、より多様なインフラストラクチャで同じシステムを使用したりすることが最も理にかなっています。

モバイルバージョンを終了