巧用Python设置国外VPS防火墙:iptables与ufw规则配置
文章分类:售后支持 /
创建时间:2026-01-03
对于使用国外VPS搭建网站或部署应用的用户来说,防火墙是网络安全的第一道防线。就像给远程服务器装上智能门禁系统,既能放行合法请求,又能拦截恶意攻击。常见的Linux防火墙工具有底层的iptables和简化版的ufw,如何通过Python脚本自动化配置这些工具?本文手把手教你。
了解iptables和ufw的核心差异
iptables是Linux内核netfilter框架的用户空间工具(内核级防火墙),通过规则链管理网络数据包,适合需要精细控制的场景,比如限制特定IP段访问、设置流量转发规则等。而ufw(Uncomplicated Firewall)是Ubuntu等系统默认的防火墙前端工具,通过简化的命令语法封装iptables操作,更适合新手快速配置基础规则,例如开放Web端口或限制SSH登录。简单来说,iptables像专业级相机,支持手动调节所有参数;ufw则像傻瓜相机,一键完成常用设置。
Python操作iptables:精准控制网络流量
要通过Python调用iptables,可使用subprocess模块执行系统命令。需注意iptables规则的顺序——-A参数是追加到规则链末尾,若已有拒绝所有的规则(比如INPUT链的最后一条是DROP),新规则可能不会生效。此时应使用-I参数插入到指定位置(如-I INPUT 1)。
以下是管理SSH访问的优化脚本示例:
import subprocess
# 优先允许当前管理IP的SSH访问(避免锁死自己)
manage_ip = "你的当前公网IP(可通过curl ifconfig.me获取)"
subprocess.run(f"iptables -I INPUT 1 -p tcp -s {manage_ip} --dport 22 -j ACCEPT", shell=True)
# 拒绝其他IP的SSH访问(插入到第二条规则)
subprocess.run("iptables -I INPUT 2 -p tcp --dport 22 -j DROP", shell=True)
执行前建议先打印当前规则(iptables -L -n -v),确认插入位置是否正确。
Python操作ufw:快速配置基础规则
ufw的优势在于命令简洁,适合快速搭建基础防护。建议在启用前设置默认策略:拒绝所有入站连接,只放行必要端口。以下是开放Web服务的完整脚本:
import subprocess
# 设置默认策略:拒绝入站,允许出站
subprocess.run("ufw default deny incoming", shell=True)
subprocess.run("ufw default allow outgoing", shell=True)
# 启用ufw(--force跳过确认提示)
subprocess.run("ufw --force enable", shell=True)
# 开放HTTP/HTTPS端口
subprocess.run("ufw allow 80/tcp", shell=True)
subprocess.run("ufw allow 443/tcp", shell=True)
# 可选:开放SSH(仅允许管理IP)
# manage_ip = "你的公网IP"
# subprocess.run(f"ufw allow from {manage_ip} to any port 22", shell=True)
执行后可通过ufw status查看规则生效情况。
配置时的3个关键注意点
1. 避免自我锁定:修改SSH规则前,务必先允许当前登录IP的访问。可通过who am i命令查看当前连接的IP,或使用curl ifconfig.me获取公网IP。
2. 持久化规则:iptables规则默认仅存活到重启前,Debian/Ubuntu系统可通过iptables-save > /etc/iptables/rules.v4保存,CentOS可使用service iptables save。ufw规则会自动保存到/etc/ufw目录,无需额外操作。
3. 测试验证:配置后建议用另一台设备测试访问是否正常,例如用手机热点连接测试Web服务是否可访问,或用其他电脑SSH登录验证。
通过Python脚本自动化配置国外VPS的防火墙,既能提高效率,又能减少手动操作失误。无论是需要精细控制的技术玩家,还是追求简便的新手,都能找到适合自己的配置方案。现在就根据实际需求,为你的国外VPS定制专属的网络防护体系吧!
工信部备案:粤ICP备18132883号-2