
私は最初にiptablesを使います。 iptablesをリセットするスクリプト(reset.sh)と、入力および出力チェーンなどのチェーンを生成するその他のスクリプト(ip-chains.sh)を作成しました。下部の同じscipr(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
設定する方が安全です。DROP
または、リモートで作業するときにファイアウォールがcron
5〜10分ごとに操作を実行するように設定されているため、何かがあってもシステムにアクセスできます。policy ACCEPT
iptables -F
スクリプトにはtoまたはその逆のルールはiptables -p FORWARD DROP
ありません。問題を解決するには、順方向チェーンにいくつかのルールを設定または追加する必要があります。たとえば、次のようになります。eth1
eth2
iptables -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