web-dev-qa-db-ja.com

必要なポートを開くためのiptablesの構成方法は?

私のマシンには、同じネットワークセグメント(たとえば、WiFi)に接続されたPCからアクセスできるWebサービスがあります。マシンでIPtablesを使用して、インターネット上のホストからWebサービスにアクセスできないようにしたいと考えています。

  • IPtablesをどのルールで構成する必要がありますか?

  • 常に開いているポートを保護するにはどうすればよいですか?

3
sophist
  1. すべてを拒否するデフォルトのポリシーを設定します。 (iptables -P INPUT DENY
  2. ICMPを許可する
  3. 必要なサービスに必要な最小限のルールセットを追加します。

ローカルマシンでのみ使用されるポートがある場合は、ポートとIP範囲の組み合わせのみに許可ルールを設定します。

iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT

送信トラフィックにもルールが必要です(DNSクエリを許可する、サービスが接続に応答することを許可するなど)。関連する/確立されたルールを使用すると、これに役立ちます。他の方法でロックダウンされたファイアウォールの間でも、単純化のためにすべての送信トラフィックを許可することは一般的です。

時間がある場合は、面倒なケースではありますが、理想的なのは、SELinuxを使用して、DNSリゾルバーライブラリにDNSへのクエリのみを許可するなど、さらに制限することです。

「開いているポートの保護」とは、ソフトウェアを正しくリッスンし、ポート内のセキュリティの問題に対処することを意味します。

3
Jeff Ferland

iptablesはこれに適していますが、最初にいくつかのアプローチがあります。

  1. リスニングインターフェイス;ローカルIPでのみリッスンするようにWebサービスに指示します。通常、これらはすべてのインターフェース(0.0.0.0、または単に*)をリッスンするように設定されています。代わりに、これを192.168.0.88または同様の値に設定します。
  2. Webサービス構成; Webサービス自体に特定のソースIPのみを許可するように指示できます。これは他の方法よりも安全性がやや劣ります。接続がまだ確立されており、Webサーバーによってドロップされるためです。ただし、これは簡単で迅速な方法であり、ほとんどのシナリオで完全に問題ありません。 Apacheでは、これはAllow Fromディレクティブを使用します。他のWebデーモンには、他の構成メカニズムがあります。

最後に、iptablesを使用する場合は、次のようなルールのペアを探します。

iptables -A INPUT -p tcp --dport 80 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
1
lynks