iptables临时限制HTTP/HTTPS仅自身访问,执行指定命令是否可行?
临时限制HTTP/HTTPS仅个人IP访问的iptables方案
核心前提
你提到服务器之前没配置iptables,默认所有流量都是允许的,所以我们的操作要先加允许规则,再加拒绝规则,同时确保不中断现有连接(包括你的SSH会话)——毕竟没控制台权限,断了可就麻烦了!
正确的操作步骤
假设你的公网IP是YOUR_IP(可以通过curl ifconfig.me快速获取),按顺序执行以下命令:
先允许已建立的连接继续通行(关键!避免SSH会话中断,也不影响其他服务的现有连接)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT允许你自己的IP访问HTTP(80)和HTTPS(443)端口
sudo iptables -A INPUT -s YOUR_IP -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -s YOUR_IP -p tcp --dport 443 -j ACCEPT拒绝其他所有IP访问这两个端口
sudo iptables -A INPUT -p tcp --dport 80 -j DROP sudo iptables -A INPUT -p tcp --dport 443 -j DROP
为什么不能随便跑两条命令?
- 如果先加DROP规则再加ACCEPT:会直接把包括你自己在内的所有IP挡在80/443端口外,甚至如果没先允许ESTABLISHED连接,你的SSH会话可能会因为后续数据包被拦截而断开,那你就彻底没法远程恢复了!
- 如果没加
ESTABLISHED,RELATED规则:虽然默认iptables允许所有流量,但当你添加DROP规则后,已有的HTTP/HTTPS连接会因为后续数据包被拦截而中断,而且SSH会话也可能出现不稳定的情况。
如何快速恢复原状
测试完成后,只需清空iptables规则,就能回到服务器初始的无限制状态:
sudo iptables -F
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

