web-dev-qa-db-ja.com

iptablesは、IPアドレスからの場合を除き、ポート8000​​へのアクセスをブロックします

私はiptablesを使用したことがなく、オンラインのドキュメントは少し不透明に見えます。

特定のIPアドレスからの要求を除く、サーバー上のポート8000​​へのすべての要求をブロックしたいと思います。 iptablesを使用してこれを行うにはどうすればよいですか?

72
will

この質問は Server Fault にあるはずです。それにもかかわらず、TCPについて話していて、許可したいIPが1.2.3.4であると仮定すると、以下がトリックを行うはずです。

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j DROP
130
Jon Bright

別の選択肢は次のとおりです。

Sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP

3つのブリッジされた仮想マシンが異なる組み合わせで相互にアクセスする必要があるという同様の問題があったため、このコマンドをテストしましたが、うまく機能します。

編集**

フェルナンドのコメントとこれによると、 link 感嘆符(!)は-sパラメーターよりも前に配置されます。

Sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP
17
HRgiger

いつでもiptablesを使用してルールを削除できます。多数のルールがある場合は、次のコマンドを使用してルールを出力するだけです。

iptables-save > myfile

viは、コマンドラインから編集します。 「dd」を使用して、不要になった行を削除します。

iptables-restore < myfile and you're good to go.  

OSを設定してルールをファイルに保存しない場合、ルールが失われるブート中にファイルをロードすることを忘れないでください。

4
RecentCoin