我的 vps 上有这个 iptables 配置,用于运行 Wordpress。我想要做的是阻止除端口 80 上的 http、端口 443 上的 https 和端口 22 上的 ssh 之外的所有传入请求。
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 f2b-sshd tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain f2b-sshd (1 references)
num target prot opt source destination
1 REJECT all -- [retracted_ip] anywhere reject-with icmp-port-unreachable
2 REJECT all -- [retracted].com anywhere reject-with icmp-port-unreachable
3 RETURN all -- anywhere anywhere
我在网上找到了一些命令,但我不确定它们是否会与 fail2ban 冲突。
答案1
一般来说:
iptables -L -v -n --line-numbers
防火墙规则按照其设置和出现的顺序进行处理(在、iptables -L -v -n -t nat --line-numbers
和 /或类似命令的输出中iptables-save
)。
在错误的链和/或错误的顺序中创建新规则将导致不良后果、破坏功能、破坏安全性和/或锁定有效流量。
请注意,运行低级iptables
命令来管理防火墙可能并不总是最好的解决方案。据我所知,在 Ubuntu 中使用 UFW 工具是首选,并且可以与 fail2ban 协同可靠地工作。
Fail2ban 创建一个或多个自定义链(处理阻止特定行为不当的 IP 地址的大部分繁重工作),如链f2b-sshd
。通常,您让 fail2ban 管理这些链中的条目。
此外,fail2ban 还会为其在链中创建的自定义链创建规则INPUT
。通常,这些规则必须来自首先在 INPUT
链,在您创建任何其他规则之前。
在您当前的防火墙配置中,当您使用 iptables 和交换机-A
将新规则附加到 INPUT 链时,一切都应该正常工作。
运行以下命令将附加常用规则以创建允许 ssh、http 和 https 并阻止所有其他传入流量的防火墙。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
答案2
首先让我们备份:)
sudo iptables-save > ./mybackup
如果您失去连接并需要 KVM,您可以轻松回到备份的开始
sudo iptables-restore < ./mybackup
然后你就可以开始添加规则
sudo iptables -A INPUT -d YOURIPPUBLIC -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -d YOURIPPUBLIC -j DROP
如果您想要为实例以外的 IP 设置防火墙,请按上述操作,YOURIPPUBLIC:33.33.33.33 或使用网络掩码 33.33.33.33/32
相关,已建立 - 如果在连接之前已建立,则跳过所有防火墙的下一个规则,若要建立连接,请遵循下一个规则:)
如果你想要整个网络
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -j DROP
您可以保存以供稍后编辑:
iptables-save > /.mynew.iptables.list.txt