Python脚本实现VPS服务器防火墙批量管理
管理VPS服务器时,防火墙规则的维护是关键环节。手动处理大量规则不仅耗时长,还容易因输入错误影响系统安全。借助Python脚本实现批量管理,能显著提升操作效率,降低人为失误风险。
核心实现逻辑

整个流程围绕"规则文件-脚本解析-命令生成-执行配置"展开。首先将需要配置的防火墙规则(如允许/拒绝的IP段、端口等)按格式写入文本文件,Python脚本读取文件内容后,自动生成对应的防火墙配置命令(如iptables命令),最终在VPS服务器上批量执行这些命令完成配置。
前置准备工作
需确保VPS服务器满足两个基础条件:一是已安装防火墙软件(常见如iptables或firewalld);二是已部署Python运行环境,且执行脚本的用户具备修改防火墙规则的权限(通常需要root权限)。
Python脚本开发
以下是一个针对iptables的批量配置脚本示例,包含规则读取、命令生成和执行三个核心功能:
import subprocess
def load_rules(file_path):
"""从文件加载防火墙规则"""
rule_list = []
with open(file_path, 'r') as f:
for line in f:
cleaned_line = line.strip()
if cleaned_line: # 跳过空行
rule_list.append(cleaned_line)
return rule_list
def build_iptables_commands(rules):
"""生成iptables执行命令"""
commands = []
for rule in rules:
# 拼接完整的iptables命令
full_cmd = f"iptables {rule}"
commands.append(full_cmd)
return commands
def run_commands(cmd_list):
"""执行生成的命令"""
for cmd in cmd_list:
try:
# 使用check=True捕获执行异常
subprocess.run(cmd, shell=True, check=True)
print(f"命令执行成功:{cmd}")
except subprocess.CalledProcessError as e:
print(f"命令执行失败:{cmd}(错误码:{e.returncode})")
if __name__ == "__main__":
# 规则文件路径(与脚本同目录)
RULE_FILE = "firewall_rules.txt"
# 加载并执行规则
rules = load_rules(RULE_FILE)
iptables_cmds = build_iptables_commands(rules)
run_commands(iptables_cmds)
规则文件设计
脚本默认读取同目录下的"firewall_rules.txt"文件,每行填写一条iptables规则(无需包含iptables命令前缀)。例如:
-A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT # 允许192.168.1.0/24网段访问80端口
-A INPUT -s 10.0.0.0/8 -p tcp --dport 443 -j DROP # 拒绝10.0.0.0/8网段访问443端口
脚本执行步骤
1. 将脚本保存为"firewall_manager.py",规则文件保存为"firewall_rules.txt",两者放在同一目录;
2. 登录VPS服务器,使用root权限执行脚本:`python firewall_manager.py`;
3. 观察输出日志,确认命令执行结果(成功/失败信息会实时显示)。
关键注意事项
正式执行前建议先备份当前防火墙规则,可通过`iptables-save > backup_rules.txt`命令导出。规则文件需严格遵循iptables语法,错误的规则可能导致防火墙配置异常。对于生产环境,建议先在测试环境验证脚本和规则的正确性,再应用到正式VPS服务器。
通过Python脚本实现VPS服务器防火墙规则的批量管理,不仅能解放重复劳动,还能通过脚本扩展实现规则校验、执行日志记录等高级功能,为服务器安全运维提供更灵活的技术手段。