Iptables:特定のポートで1つのIPのみを許可する方法は?


回答:


48

1つのライナー:

iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 777 -j DROP  # if it's not 1.2.3.4, drop it

よりエレガントなソリューション:

iptables -N xxx # create a new chain
iptables -A xxx --src 1.2.3.4 -j ACCEPT  # allow 1.2.3.4
iptables -A xxx --src 1.2.3.5 -j ACCEPT  # allow 1.2.3.5
iptables -A xxx --src 1.2.3.6 -j ACCEPT  # allow 1.2.3.6
iptables -A xxx -j DROP  # drop everyone else
iptables -I INPUT -m tcp -p tcp --dport 777 -j xxx  # use chain xxx for packets coming to TCP port 777

これも出力に追加する必要があるかどうか知っていますか?
Anonymous12345

@Camran:もっと具体的にする必要があります。この特定のケースでは、置き換えた場合、サーバー自体の一部のアドレスを使用して送信される(ルーティング/転送されない)パケットをブロックINPUTOUTPUTます。特定のインターフェイスにバインドするプログラムをブロックする場合を除き、これは理にかなっているとは思いません。
クリスチャン・シウピトゥ

1
次のようなチェーンでソースを指定することもできることを忘れないでください--src 1.2.3.4/30
。– deed02392

後で新しい許可IPをチェーンに追加するにはどうすればよいですか?最初にDROPを削除してから、新しいユーザーを入力してDROPを再度挿入する必要がありますか、それともより良い解決策がありますか?
-maddo7

2
@マティアス:iptables -I xxx --src 7.8.9.10 -j ACCEPT
クリスチャン・シウピトゥ

0

これは私のCentOSシステムの1つの例です(アドレスは難読化されています):

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 1.2.3.4 -d 5.6.7.8 --dport 22 -j ACCEPT

CentOSでは、この構成を永続的にする場所はどこですか?(ubuntuでは、/ etc / network / if
up.d / anyfileを

CentOSでは次のとおりservice iptables saveです。
マーティンツァイトラー

0

ショアウォールを使用してIPテーブルを構成します。1つのホストからポート123に受け入れるようなルールを使用します。

ACCEPT net:192.0.2.1 $ FW tcp 1234

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.