CentOS7でFirewallDからIptablesに移行する方法
序章
他のほとんどのLinuxディストリビューションと同様に、CentOS7は netfilter
ネットワークスタックを流れるパケットにアクセスするためのLinuxカーネル内のフレームワーク。 これにより、ファイアウォールシステムを実装するために、パケットを検査および操作するために必要なインターフェイスが提供されます。
ほとんどのディストリビューションは iptables
を使用するファイアウォール netfilter
ファイアウォールルールを適用するためのフック。 CentOS 7には、と呼ばれる代替サービスが付属しています firewalld
これは同じ目的を果たします。
その間 firewalld
は優れた機能を備えた非常に有能なファイアウォールソリューションであり、一部のユーザーにとっては使い続けるのが簡単な場合があります iptables
彼らがその構文に満足し、その動作とパフォーマンスに満足している場合。 The iptables
コマンドは実際にによって使用されます firewalld
それ自体ですが、 iptables
serviceはデフォルトではCentOS7にインストールされていません。 このガイドでは、をインストールする方法を示します iptables
CentOS 7でサービスを提供し、ファイアウォールを firewalld
に iptables
(代わりにFirewallDの使用方法を学びたい場合は、このガイドを確認してください)。
現在のファイアウォールルールを保存する(オプション)
に切り替える前に iptables
サーバーのファイアウォールソリューションとして、現在のルールを保存することをお勧めします。 firewalld
施行しています。 上で述べたように firewalld
デーモンは実際に iptables
と話すコマンド netfilter
カーネルフック。 このため、を使用して現在のルールをダンプできます。 iptables
指図。
現在のルールセットを標準出力とホームディレクトリ内のファイルにダンプします。 firewalld_iptables_rules
次のように入力します。
- sudo iptables -S | tee ~/firewalld_iptables_rules
で同じことをします ip6tables
:
- sudo ip6tables -S | tee ~/firewalld_ip6tables_rules
に応じて firewalld
アクティブだったゾーン、有効にされたサービス、およびから渡されたルール firewall-cmd
直接 iptables
、ダンプされたルールセットは非常に広範囲にわたる可能性があります。
The firewalld
サービスは通常の方法でファイアウォールポリシーを実装します iptables
rules.It は、を使用して管理フレームワークを構築することでこれを実現します iptables
チェーン。 表示される可能性のあるルールのほとんどは、これらの管理チェーンを作成し、これらの構造に出入りするトラフィックの流れを指示するために使用されます。
最終的に自分のファイアウォールルールに移行する iptables
サービスは、次のような管理フレームワークを再作成する必要はありません。 firewalld
依存している。 このため、最終的に実装するルールセットははるかに単純になる可能性があります。 可能な限り多くの生データをそのまま保持するために、ここではセット全体を保存しています。
次のように入力して、再作成する必要のあるポリシーを理解するための、より重要な行のいくつかを確認できます。
- grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules
これは主に、最終決定につながるルールを表示します。 ユーザーが作成したチェーンにのみジャンプするルールは表示されません。
Iptablesサービスをダウンロードしてインストールする
サーバーの移行を開始するには、ダウンロードしてインストールする必要があります iptables-service
CentOSリポジトリからのパッケージ。
次のように入力して、サービスファイルをダウンロードしてインストールします。
- sudo yum install iptables-services
これにより、ダウンロードしてインストールされます systemd
管理に使用されるスクリプト iptables
サービス。 また、いくつかのデフォルトを書き込みます iptables
と ip6tables
構成ファイルを /etc/sysconfig
ディレクトリ。
Iptablesファイアウォールルールを作成する
次に、あなたはあなたの iptables
を変更することによるファイアウォールルール /etc/sysconfig/iptables
と /etc/sysconfig/ip6tables
ファイル。 これらのファイルには、起動時に読み取られて適用されるルールが含まれています。 iptables
サービス。
ファイアウォールルールをどのように構築するかは、 system-config-firewall
プロセスがインストールされ、これらのファイルを管理するために使用されています。 の上部を確認してください /etc/sysconfig/iptables
ファイルを使用して、手動編集を推奨していないかどうかを確認します。
- 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
ルールを追加する権限:
- sudo nano /etc/sysconfig/iptables
- sudo nano /etc/sysconfig/ip6tables
ルールを作成したら、次のコマンドを使用してIPv4およびIPv6ルールをテストできます。
- sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
- 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の場合は、次のように入力します。
- sudo system-config-firewall-tui
グラフィカルUIがインストールされている場合は、次のように入力して起動できます。
- sudo system-config-firewall
について学ぶのに助けが必要な場合 iptables
ルールと構文については、主にUbuntuシステムを対象としている場合でも、次のガイドが役立つ場合があります。
- Ubuntu14.04でIptablesを使用してファイアウォールを設定する方法
- Iptables Essentials:一般的なファイアウォールルールとコマンド
- Ubuntu14.04でIptablesを使用して基本的なファイアウォールテンプレートを実装する方法
FirewallDサービスを停止し、Iptablesサービスを開始します
次に、現在を停止する必要があります firewalld
ファイアウォールを起動し、 iptables
サービス。 を使用します &&
すぐに新しいファイアウォールサービスを開始するように構築する firewalld
サービスは正常にシャットダウンします:
- sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables
あなたはそれを確認することができます firewalld
次のように入力して実行されていません:
- sudo firewall-cmd --state
また、で設定したルールが /etc/sysconfig
次のように入力すると、ディレクトリが読み込まれ、適用されます。
- sudo iptables -S
- sudo ip6tables -S
この時点で、 iptables
と ip6tables
現在のセッションでサービスがアクティブになっています。 ただし、現在、 firewalld
サービスは、サーバーの再起動時に自動的に開始されるサービスです。
問題がある場合はサーバーを再起動して古いファイアウォールに戻すことができるため、ファイアウォールポリシーをテストして、必要なレベルのアクセス権があることを確認するのに最適なタイミングです。
FirewallDサービスを無効にし、Iptablesサービスを有効にする
ポリシーが正しく適用されていることを確認するためにファイアウォールルールをテストした後、先に進んで無効にすることができます firewalld
次のように入力してサービスを提供します。
- sudo systemctl disable firewalld
これにより、起動時にサービスが自動的に開始されなくなります。 以来 firewalld
サービスを手動で開始しないでください。 iptables
サービスが実行されている場合は、サービスをマスクすることで追加の手順を実行できます。 これにより、 firewalld
サービスを手動で開始することもできません。
- sudo systemctl mask firewalld
今、あなたはあなたを有効にすることができます iptables
と ip6tables
起動時に自動的に開始するようにサービスを提供します。
- sudo systemctl enable iptables
- sudo systemctl enable ip6tables
これでファイアウォールの移行が完了します。
結論
ファイアウォールの実装は、サーバーを安全に保つための重要なステップです。 その間 firewalld
は優れたファイアウォールソリューションであり、最も使い慣れたツールを使用したり、より多様なインフラストラクチャで同じシステムを使用したりすることが最も理にかなっています。