透過 iptables 允許特定端口

透過 iptables 允許特定端口

我是 iptables 新手。我創建了一個重置 (reset.sh) iptables 的腳本,其他腳本 (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作業;這樣您在任何情況下都可以存取您的系統。policy ACCEPTiptables -F

在您的腳本中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

相關內容