web-dev-qa-db-ja.com

(/ etc / sysconfig / iptables)「このファイルを手動でカスタマイズすることはお勧めしません。」どうして?

このファイルを直接編集する

/etc/sysconfig/iptables 

頭痛の種を減らすことができます。

それでも、ファイルの一番上にあります。

Manual customization of this file is not recommended.

これが、新しいcentos 6.4クラウドサーバーに付属する「/ etc/sysconfig/iptables」です。

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-Host-prohibited
-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
COMMIT

ポート80を開くには、ラインを複製するだけです。

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

次に「22」を「80」に変更し、このファイルを保存してシステム全体を再起動します。

これにより、ポート80が開かれます。

これはかなり簡単な操作です。それでもファイルには、手動編集は推奨されていません。

なぜ私はアドバイスに従うべきですか?

20
user74548

system-config-firewallというツール(またはncursesベースの兄弟system-config-firewall-tui)がこのファイルを管理しているためです。このツールを使用して新しいiptablesルールを作成するたびに、/etc/sysconfig/iptablesが上書きされます。

関連マンページ: 28.1.16。/ etc/sysconfig/iptables-config

これが推奨されない理由ですが、禁止されています。 CentOSまたはその他のELバージョン6を使用してルールを保存する最良の方法は、メモリにいくつかのルールを追加した後にiptablesサービスを使用することです。

# service iptables save

関連質問: なぜiptablesがcentOの/ etc/sysconfig/iptablesから情報を取得しないのですか?

このファイル(/etc/sysconfig/iptables)を直接編集しない理由:

  • それは自動生成されたファイルだからです。その内容は、スクリプト/デーモン/etc/init.d/iptablesから取得されます。
  • Iptablesデーモンのリセットや停止などの一部のアクションは、ファイルを上書きするため、データが失われる可能性があります。この主題に関する興味深い変数:IPTABLES_SAVE_ON_STOP=""ファイル内のIPTABLES_SAVE_ON_RESTART=""および/etc/sysconfig/iptables-config。おそらく、それらを調整すると、/etc/init.d/iptables内の変更が永続的になります。
  • ドキュメント そう言った 。Red Hatは、これがファイアウォールインフラストラクチャを使用する最良の方法であることを助言しているためです。

この「ファイアウォールルールを上書きする」mindf ***の代替ソリューションは、これらのスクリプトを完全に無効にし、ファイアウォールを管理するカスタマイズされた方法( goldilocks によって公開されるものなど)に依存することです。

18
user34720

それでも、ファイルの一番上にあります。

うーん、それは奇妙です。私の一番上でそれは言う:

# Manual customization of this file is strongly encouraged.

誰かがそれを変更したに違いありません;)そして、実際に/etc/sysconfigからそれを移動したので、パッケージマネージャーやその他によって「自動カスタマイズ解除」されません;);)

このような構成ファイルに関する一般的なポイントは、自分が何をしているのかわからない場合はやらないことだと思います。時々、ファイルがシステムによって時々上書きされるという警告もあります。 PMは、ファイルが手動で変更されて上書きされていない、またはコピーを保存していないなどと記録する場合がありますが、パッケージマネージャーのアップグレード時に発生する可能性があります。特にこの構成を担当する他のツール( nwildnerの回答 を参照)。

「あなたが何をしているかを知る」の一部は、このような角度を認識することです。また、iptablesのinitサービスをカスタマイズして、構成ファイルに別の場所を使用しました。最も重要なのは、私がこのコンピューターを使用している唯一のユーザーです

Rootアクセス権を持つ他の人がいると仮定すると、「私がこの方法を好む」よりも適切な理由がない限り、私が担当するサーバーでこれを実行しません。混乱を招き、誰かに頭痛を与える可能性があるためです。ある時点で。しかし、あなたが唯一のユーザーであり、他の誰もがシステムに依存していない場合は、自由にやりたいことができます。ファイアウォールを構成するための「推奨される方法」は次のようになります。

#!/bin/bash

if [[ ! -n "$IPTSET_FILE" ]]; then
        IPTSET_FILE=/etc/iptables.current
fi

if [[ ! -e $IPTSET_FILE ]]; then
        echo "$IPTSET_FILE does not exist!"
        exit 1
fi

vim $IPTSET_FILE
iptables-restore < $IPTSET_FILE

/etc/iptables.currentは、ブート時に/etc/iptables(iptablesサービスが最初にロードするように構成されている)をコピーして作成されます。このようにして、システムが開始する基準点を維持しながら、その場で物事を変更できます。

これが重要なポイントになります。この種の警告を含む構成をいじくり回したい場合:常に最初に元のバックアップコピーを作成してください。

8
goldilocks