Python自动化国外VPS安全配置:防火墙与SSH加固脚本
文章分类:技术文档 /
创建时间:2025-06-30
管理国外VPS时,安全性是绕不开的核心问题。手动配置防火墙规则、加固SSH不仅费时费力,还容易因操作疏漏留下安全隐患。这时候用Python写个自动化脚本,就能轻松解决这些痛点。接下来就带大家一步步实现。
关键概念:防火墙与SSH的安全角色
防火墙是国外VPS的"网络门卫",通过预设规则决定哪些流量能进出系统;SSH则像远程登录的"数字钥匙",加固SSH相当于给钥匙加多重保险,防止被非法复制或盗用。理解两者的核心作用,是编写自动化脚本的基础。
前置准备:安装Python库
要实现远程操作国外VPS,需要用到`paramiko`(Python的SSH客户端库)。打开终端输入命令安装:
pip install paramiko
安装完成后,就可以通过Python脚本建立SSH连接,远程执行系统命令了。
实战一:自动化生成防火墙规则
以常用的`iptables`防火墙为例,我们编写脚本实现"允许特定IP访问指定端口,其余流量拒绝"的策略。以下是优化后的脚本:
import paramiko
# 配置国外VPS连接信息(按需替换)
vps_info = {
"ip": "your_vps_ip",
"username": "your_username",
"password": "your_password"
}
# 初始化SSH连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加主机密钥
ssh.connect(
hostname=vps_info["ip"],
port=22,
username=vps_info["username"],
password=vps_info["password"]
)
# 定义安全策略参数(示例:允许192.168.1.100访问80端口)
allowed_ip = "192.168.1.100"
target_port = "80"
# 生成并执行iptables规则
firewall_commands = [
f"iptables -A INPUT -s {allowed_ip} -p tcp --dport {target_port} -j ACCEPT", # 允许指定IP访问指定端口
"iptables -A INPUT -j DROP" # 拒绝其他所有输入流量
]
for cmd in firewall_commands:
stdin, stdout, stderr = ssh.exec_command(cmd)
output = stdout.read().decode().strip()
error = stderr.read().decode().strip()
if error:
print(f"警告:执行命令 [{cmd}] 时出错 - {error}")
else:
print(f"成功执行:{cmd},输出:{output if output else '无返回信息'}")
ssh.close() # 关闭连接
注意事项:执行前建议先用`iptables-save > iptables.backup`备份当前规则,避免配置错误导致断网。若需恢复,使用`iptables-restore < iptables.backup`即可。
实战二:自动化加固SSH连接
SSH默认配置存在安全隐患(如允许root直接登录、密码认证),通过脚本修改配置文件能快速提升安全性。以下是优化后的SSH加固脚本:
import paramiko
# 复用前面的VPS连接信息
vps_info = {
"ip": "your_vps_ip",
"username": "your_username",
"password": "your_password"
}
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(
hostname=vps_info["ip"],
port=22,
username=vps_info["username"],
password=vps_info["password"]
)
# 定义SSH加固命令(禁用root登录、密码认证,重启服务)
ssh_secure_commands = [
# 禁用root直接登录(将#PermitRootLogin yes改为PermitRootLogin no)
'sed -i "s/#PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config',
# 禁用密码认证(将PasswordAuthentication yes改为no)
'sed -i "s/PasswordAuthentication yes/PasswordAuthentication no/" /etc/ssh/sshd_config',
# 重启SSH服务使配置生效
'systemctl restart sshd'
]
for cmd in ssh_secure_commands:
stdin, stdout, stderr = ssh.exec_command(cmd)
output = stdout.read().decode().strip()
error = stderr.read().decode().strip()
if error:
print(f"警告:执行命令 [{cmd}] 时出错 - {error}")
else:
print(f"成功执行:{cmd},输出:{output if output else '无返回信息'}")
ssh.close()
小提醒:修改前建议先通过密钥登录测试,避免禁用密码认证后无法连接。若使用云厂商提供的国外VPS,可在控制台提前上传公钥,确保加固后仍能正常登录。
通过这两个Python脚本,国外VPS的安全配置从"手动操作+易出错"变为"自动化执行+可复用"。无论是管理单台还是多台VPS,都能显著提升效率,让安全策略落地更可靠。