iptables を通じて特定のポートを許可する

iptables を通じて特定のポートを許可する

私は iptables の初心者です。iptables をリセットするスクリプト (reset.sh) と、入力出力チェーンのようなチェーンを作成する別のスクリプト (ip-chains.sh) を作成しました。同じスクリプト (ip-chains.sh) の下部に、FTP に使用している着信および発信ポート 2121 を許可するテスト用のルールを作成しました。

問題は、リセット スクリプトを実行すると FTP サーバーにアクセスできるが、ip-chains.sh スクリプトを実行するとアクセスできないことです。同じスクリプト ファイルにポート 2121 のトラフィックを許可するルールがあるため、混乱しています。

私は eth1 を使用して FTP サーバー 192.168.1.0 に接続し、eth2 を使用してクライアント マシンに接続しています。ip-chains.sh スクリプトは次のとおりです。

    #!/bin/bash

#Flush tables and set policies to drop

iptables -F

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#Create Logging Chain for accepted packets on INPUT CHAIN

iptables -N accept-input

#Rules for  accept-input chain

iptables -A accept-input -j LOG --log-prefix "INPUT-ACCEPTED "
iptables -A accept-input -j ACCEPT

#Create Logging Chain for dropped packets on INPUT CHAIN

iptables -N drop-input

#Rules for  drop-input chain

iptables -A drop-input -j LOG --log-prefix "INPUT-DROPPED "
iptables -A drop-input -j DROP

#Create Logging Chain for accepted packets on OUTPUT CHAIN

iptables -N accept-output

#Rules for  accept-output chain

iptables -A accept-output -j LOG --log-prefix "OUTPUT-ACCEPTED "
iptables -A accept-output -j ACCEPT

#Create Logging Chain for dropped packets on OUTPUT CHAIN

iptables -N drop-output

#Rules for  drop-output chain

iptables -A drop-output -j LOG --log-prefix "OUTPUT-DROPPED "
iptables -A drop-output -j ACCEPT


#Allow port 2121

iptables -A INPUT -i eth1 -p tcp -s 0/0 --dport 2121 -m state --state NEW,ESTABLISHED,RELATED -j accept-input
iptables -A OUTPUT -o eth1 -p tcp -d 0/0 --sport 2121 -m state --state ESTABLISHED,RELATED -j accept-input

iptables -A INPUT -i eth2 -p tcp -s 0/0 --dport 2121 -m state --state NEW,ESTABLISHED,RELATED -j accept-input
iptables -A OUTPUT -o eth2 -p tcp -d 0/0 --sport 2121 -m state --state ESTABLISHED,RELATED -j accept-input

#Log all DROPPED traffic

iptables -A INPUT -j drop-input
iptables -A OUTPUT -j drop-output

iptables -L -n

答え1

注意してください。ルールをフラッシュすると、iptables -Fすべてのルールがフラッシュされますが、ポリシーはフラッシュされませんpolicy DROP。そのため、ポリシーがあると、システムから簡単にロックアウトされる可能性があります。

通常、チェーンの最後のルールとしてpolicy ACCEPT設定する方が安全です。または、リモートで作業しているときに、ファイアウォールに 5 分または 10 分ごとにジョブを設定すると、どのような場合でもシステムに確実にアクセスできます。DROPcronpolicy ACCEPTiptables -F

スクリプトには と があり、からiptables -p FORWARD DROPへのルールもその逆もありません。問題を解決するには、フォワード チェーンにいくつかのルールを設定または追加する必要があります。例:eth1eth2iptables -p FORWARD ACCEPT

iptables -A FORWARD -p tcp -i eth1 -o eth2 -s 2121 -d 2121 -j ACCEPT;
iptables -A FORWARD -p tcp -i eth2 -o eth1 -s 2121 -d 2121 -j ACCEPT;

答え2

-v を使用してパケットが到着した場所を確認します...

iptables --list -n -v

関連情報