这是我当前的 IPTables 配置。但我禁止的 IP 仍然可以 ping、ssh、web 等等。
我用来测试这些规则的 IP 是:195.154.220.14
# Generated by iptables-save v1.4.7 on Thu Feb 16 22:06:28 2017
*nat
:PREROUTING ACCEPT [1452:83067]
:POSTROUTING ACCEPT [95:6213]
:OUTPUT ACCEPT [95:6213]
COMMIT
# Completed on Thu Feb 16 22:06:28 2017
# Generated by iptables-save v1.4.7 on Thu Feb 16 22:06:28 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [591:260189]
:ICMPFLOOD - [0:0]
:SSHBRUTE - [0:0]
:f2b-BadBots - [0:0]
:f2b-SSH - [0:0]
:f2b-SSHDDOS - [0:0]
:f2b-apache-modsecurity - [0:0]
:f2b-apache-overflows - [0:0]
:f2b-dovecot - [0:0]
:f2b-dovecot-auth - [0:0]
:f2b-dovecot-pop3imap - [0:0]
:f2b-pam - [0:0]
:f2b-php-url-open - [0:0]
:f2b-sendmail-auth - [0:0]
:f2b-ssh - [0:0]
:monitorix_IN_0 - [0:0]
:monitorix_IN_1 - [0:0]
:monitorix_IN_10 - [0:0]
:monitorix_IN_11 - [0:0]
:monitorix_IN_2 - [0:0]
:monitorix_IN_3 - [0:0]
:monitorix_IN_4 - [0:0]
:monitorix_IN_5 - [0:0]
:monitorix_IN_6 - [0:0]
:monitorix_IN_7 - [0:0]
:monitorix_IN_8 - [0:0]
:monitorix_IN_9 - [0:0]
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 6667 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_11
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 587 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_10
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 993 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_9
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 465 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_8
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 143 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_7
-A INPUT -p udp -m udp --sport 1024:65535 --dport 53 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_6
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 3306 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_5
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 443 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_4
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 22 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_3
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 80 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_2
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 21 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_1
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 25 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j monitorix_IN_0
-A INPUT -p tcp -m tcp --dport 22 -j f2b-ssh
-A INPUT -p tcp -m tcp --dport 22 -j f2b-SSHDDOS
-A INPUT -p tcp -m tcp --dport 22 -j f2b-SSH
-A INPUT -j f2b-pam
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -s 195.154.220.14/32 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /scrape.php" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /rss.php?cats=" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /announce.php" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /wp-login.php" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /w00tw00t" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /?p=rss&categories" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /?p=online" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /download.php?torrent" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m string --string "torrent_pass" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -m string --string "GET /rss.php" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -m string --string "GET /announce.php" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -m string --string "GET /wp-login.php" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -m string --string "GET /w00tw00t" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -m string --string "GET /?p=rss&categories" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -m string --string "GET /?p=online" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -m string --string "GET /download.php?torrent" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -m string --string "torrent_pass" --algo kmp --to 65535 -j DROP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 465 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6660 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6661 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6663 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6664 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6665 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6666 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6667 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6668 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6669 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6697 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p tcp -m tcp --sport 6667 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_11
-A OUTPUT -p tcp -m tcp --sport 587 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_10
-A OUTPUT -p tcp -m tcp --sport 993 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_9
-A OUTPUT -p tcp -m tcp --sport 465 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_8
-A OUTPUT -p tcp -m tcp --sport 143 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_7
-A OUTPUT -p udp -m udp --sport 53 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_6
-A OUTPUT -p tcp -m tcp --sport 3306 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_5
-A OUTPUT -p tcp -m tcp --sport 443 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_4
-A OUTPUT -p tcp -m tcp --sport 22 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_3
-A OUTPUT -p tcp -m tcp --sport 80 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_2
-A OUTPUT -p tcp -m tcp --sport 21 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_1
-A OUTPUT -p tcp -m tcp --sport 25 --dport 1024:65535 -m conntrack --ctstate RELATED,ESTABLISHED -j monitorix_IN_0
-A ICMPFLOOD -m recent --set --name ICMP --rsource
-A ICMPFLOOD -m recent --update --seconds 1 --hitcount 6 --rttl --name ICMP --rsource -m limit --limit 1/sec --limit-burst 1 -j LOG --log-prefix "iptables[ICMP-flood]: "
-A ICMPFLOOD -m recent --update --seconds 1 --hitcount 6 --rttl --name ICMP --rsource -j DROP
-A ICMPFLOOD -j ACCEPT
-A SSHBRUTE -m recent --set --name SSH --rsource
-A SSHBRUTE -m recent --update --seconds 300 --hitcount 10 --name SSH --rsource -m limit --limit 1/sec --limit-burst 100 -j LOG --log-prefix "iptables[SSH-brute]: "
-A SSHBRUTE -m recent --update --seconds 300 --hitcount 10 --name SSH --rsource -j DROP
-A SSHBRUTE -j ACCEPT
-A f2b-BadBots -j RETURN
-A f2b-SSH -j RETURN
-A f2b-SSHDDOS -j RETURN
-A f2b-apache-modsecurity -j RETURN
-A f2b-apache-overflows -j RETURN
-A f2b-dovecot -j RETURN
-A f2b-dovecot-auth -j RETURN
-A f2b-dovecot-pop3imap -j RETURN
-A f2b-pam -j RETURN
-A f2b-php-url-open -j RETURN
-A f2b-sendmail-auth -j RETURN
-A f2b-sendmail-auth -j RETURN
-A f2b-ssh -s 116.31.116.23/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 116.228.236.206/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 115.76.238.24/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 111.74.239.197/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 111.69.98.237/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 111.69.98.204/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 111.69.96.50/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 111.69.96.38/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 111.69.103.109/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 111.69.102.173/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -j RETURN
COMMIT
# Completed on Thu Feb 16 22:06:28 2017
我不确定这里出了什么问题。我使用了命令
iptables -A 输入 -s 195.154.220.14 -j 删除
答案1
iptables 开关-A
将规则添加到表的末尾。在 iptables 中,第一个匹配获胜,例如
-A INPUT -p icmp -j ACCEPT
将允许 ping。如果您想阻止该 IP,则使用-I
将规则插入链的开头
iptables -I INPUT -s 195.154.220.14 -j DROP
答案2
要阻止来自服务器的 IP 地址,您需要将阻止规则添加到 iptables INPUT 链中。执行此操作所需的重要 iptables 开关是;
→ -A : 添加规则 → -s : 指定 IP 地址 → -J : 跳转到目标
您可以使用上述开关简单地阻止 IP。请参阅以下示例;
iptables -A INPUT -s 195.154.220.14 -p icmp -j DROP 这将阻止来自指定 IP 的所有 ping(包括 icmp 请求)。
您可以尝试使用以下命令来阻止所有 ICMP:
iptables -A 输入 -p icmp -j DROP
基本上,消除 IP 将会阻止所有 ping 请求。
执行以下命令来删除活动的防火墙规则:
- iptables -A 输入 -p icmp -j DROP
- 将 -A (附加)更改为 -D (删除)
- iptables -D 输入 -p icmp -j DROP