Linux

iptables:針對特定埠阻止除我自己以外的所有國家

  • June 8, 2012

我想阻止除 SSH、FTP 和 SMTP 埠的德國 IP 之外的所有 IP(CIDR 0.0.0.0/0)。因此,這些埠的預設策略應該是“DROP”。我有一份所有德國 IP CIDR-Ranges 的列表,它們將在“接受”列表中。

我不明白 iptables 究竟是如何工作的,需要一些語法幫助。當特定主機有 2 條互斥規則 ACCEPT 和 DROP 時,我也沒有找到如何配置行為。我在 VM 上安裝了 Debian Linux,但我無法測試它,因為我的網路中只有一台電腦,所以我無法測試 IP 範圍是否被拒絕。

另外,是否可以告訴 iptables 接受動態主機名,例如 DynDns 主機名,其中後面的 IP 地址總是更改?

我的想法是(未經測試):

iptables -I INPUT -s 0.0.0.0/0 --dport 21 -j DROP
iptables -I INPUT -s 1.2.3.4 --dport 21 -j ACCEPT

其中 1.2.3.4 是允許的範例 IP。

丹尼爾,

您可能會想要類似的東西。這只是直接從我在 Red Hat 上的 /etc/sysconfig/iptables 文件中截取的。

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.1.1.0/24 -p tcp -m multiport --dports 22,80,443,5666 -j ACCEPT
-A INPUT -s 10.2.2.2 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
COMMIT

如您所見,輸入的預設策略是 drop。因此,您不必執行任何特定的丟棄規則。您只需要說出您想要允許的內容。在我的範例中,我展示了您可以為 1 條規則執行多個協議或僅為 1 條規則執行單個協議的位置。

編輯:下面是一個範例腳本,您可以使用它來創建您的 iptable 規則。

#!/bin/bash
# Iptables configuration script

# Flush all current rules from iptables
/sbin/iptables -F

# Loopback address
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Allowed any established connections
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow FTP and SSH from specific IPs
/sbin/iptables -A INPUT -s 10.0.2.0/24 -p tcp -m state --state NEW -m multiport --dports 21,22 -j ACCEPT

# Allow pings from monitoring server
/sbin/iptables -A INPUT -s 1.1.1.1 -p icmp -m icmp --icmp-type any -j ACCEPT

# Allow web server access from anywhere
/sbin/iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# Drop rules to prevent them from entering the logs
/sbin/iptables -A INPUT -p tcp -m multiport --dports 135,137,138 -j DROP
/sbin/iptables -A INPUT -p udp -m multiport --dports 135,137,138 -j DROP
/sbin/iptables -A INPUT -p all -d 255.255.255.255 -j DROP

# Log dropped traffic
/sbin/iptables -A INPUT -j LOG -m limit --limit 10/m --log-level 4 --log-prefix "Dropped Traffic: "

# Set default policies for INPUT, FORWARD and OUTPUT chains
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

# Save settings
/sbin/service iptables save

# List rules
/sbin/iptables -L -v

引用自:https://serverfault.com/questions/397013