/etc/sysconfig/iptables: ポート 80 と 22 を除くすべてのポートをブロックする方法は?

/etc/sysconfig/iptables: ポート 80 と 22 を除くすべてのポートをブロックする方法は?

私の新しいCentos 6.5クラウドサーバーはこれに付属しています

/etc/sysconfig/iptables

内部には以下があります。

# Generated by iptables-save v1.4.7 on Mon Jun 16 20:04:05 2014
*filter
:INPUT ACCEPT [8:607]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:1089]
COMMIT
# Completed on Mon Jun 16 20:04:05 2014

しかし、iptablesを停止したり起動したりしても、他のポートはまだ開いているようです。私はwebminのようなものをインストールし、ポート10000でうまく動作するので、これを知っています。

また、httpd.confにポートを追加しました。

 listen 81

ポート81の仮想ホスト。

iptablesが起動しても停止しても機能します。

これは、上記のiptablesファイルを変更する必要があることを意味します。

ポート80と22を除くすべてのポートを無効にしたい

ここで直接テストし、追加のポートを追加できます。

答え1

ルールを作成する前に、クライアントIPにそのサーバーへのフルアクセス権を付与することをお勧めします。すべてのルールが完璧であることを確認したら、ルールを削除できます。

iptables -A INPUT -s YOUR-CLIENT-IP -j ACCEPT

YOUR-CLIENT-IPは、接続するサーバーのIPに置き換える必要があります。

これでルールの作成を開始できます。したがって、まずSSHとHTTPを許可します。

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

最後に、他のすべてのパケットをブロックできます。

iptables -A INPUT -j REJECT

その後、他のIPからSSHとHTTPにアクセスして、すべてが正常に機能していることを確認し、すべてが正常な場合はリストの最初のルールを削除できます。

iptables -D INPUT 1

短い答え

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT

より良い答え

指摘したとおり小さな湾注釈のより良いアプローチは、最後のルールを次のように変更することです。

iptables -I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -P INPUT REJECT

関連情報