Linux
iptables:針對特定埠阻止除我自己以外的所有國家
我想阻止除 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