Python实现国外VPS服务器安全加固与漏洞扫描实战
网络安全形势日益复杂,国外VPS服务器作为重要的网络节点,其安全防护直接关系业务稳定。通过Python脚本实现自动化安全加固与漏洞扫描,既能降低人工操作风险,又能提升运维效率。本文结合实战经验,详细拆解具体实现方法。

环境准备:基础环境与工具链搭建
实操前需准备一台国外VPS服务器,这类服务器通常已预装Python 2或3环境。可通过终端输入"python --version"或"python3 --version"验证版本,若提示命令不存在(如Ubuntu系统),可执行"sudo apt-get install python3"完成安装。建议统一使用Python 3(支持更丰富的第三方库),安装后通过"pip3 install requests python-nmap"安装后续需要的requests(HTTP请求)和python-nmap(Nmap接口)库。
安全加固:从账户到权限的自动化管控
服务器安全加固的核心是最小化攻击面,Python脚本可精准控制账户、权限等关键要素。
1. 账户生命周期管理
系统中常存在未使用的冗余账户(如测试账户、离职员工账号),这些账户可能成为入侵突破口。通过Python调用系统命令,可快速锁定或删除非必要账户。以下脚本实现账户锁定功能:
import subprocess
def disable_unused_user(username):
"""锁定指定系统账户"""
try:
# usermod -L 命令锁定账户,禁止登录
subprocess.run(['usermod', '-L', username], check=True, capture_output=True)
print(f"成功锁定账户:{username}")
except subprocess.CalledProcessError as e:
print(f"锁定失败,错误信息:{e.stderr.decode()}")
示例:锁定测试账户testuser
disable_unused_user("testuser")
经验提示:建议每周运行此脚本,配合/etc/passwd文件遍历,自动识别90天未登录的账户进行锁定。
2. 文件权限精准控制
错误的文件权限(如敏感配置文件可读)是常见安全隐患。Python的os模块可精确设置文件/目录权限,例如将/etc/shadow(存储用户密码)权限设为仅root可读(0600):
import os
def secure_file_permission(file_path, mode=0o600):
"""设置文件安全权限"""
try:
os.chmod(file_path, mode)
current_mode = oct(os.stat(file_path).st_mode & 0o777)
print(f"文件{file_path}权限已设置为{current_mode}")
except OSError as e:
print(f"权限设置失败:{e}")
示例:加固密码文件权限
secure_file_permission("/etc/shadow")
注意事项:修改系统关键文件权限前需备份,建议通过"ls -l"命令验证修改结果。
漏洞扫描:主动发现与风险预警
仅靠加固无法完全抵御新漏洞,定期扫描是发现潜在风险的关键。Python可集成开源工具实现自动化扫描。
1. 端口开放状态监控
Nmap(网络映射器)是广泛使用的端口扫描工具,通过python-nmap库可在脚本中调用其功能。以下脚本扫描22-443端口,识别异常开放端口:
import nmap
def port_scan(target_ip):
"""扫描目标IP的指定端口范围"""
scanner = nmap.PortScanner()
# 扫描22(SSH)、80(HTTP)、443(HTTPS)等常见端口
scanner.scan(target_ip, '22-443')
for host in scanner.all_hosts():
print(f"扫描主机:{host} ({scanner[host].hostname()})")
print(f"状态:{scanner[host].state()}")
for proto in scanner[host].all_protocols():
print(f"协议:{proto}")
for port in scanner[host][proto]:
state = scanner[host][proto][port]['state']
print(f"端口 {port} 状态:{state}")
示例:扫描国外VPS的公网IP
port_scan("your_vps_public_ip")
优化建议:可将扫描结果通过邮件(smtplib库)或企业微信(API调用)推送,实现异常端口实时告警。
2. CVE漏洞信息查询
Vulners平台聚合了全球漏洞数据,通过其API可查询特定CVE(公共漏洞披露)的详细信息。以下脚本演示如何获取CVE-2023-1234的漏洞详情:
import requests
def query_vuln_info(cve_id, api_key):
"""通过Vulners API查询漏洞信息"""
url = "https://vulners.com/api/v3/search/id/"
payload = {"id": cve_id, "api_key": api_key}
try:
response = requests.post(url, json=payload)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"查询失败:{e}")
return None
示例:替换为实际API密钥和CVE编号
vuln_data = query_vuln_info("CVE-2023-1234", "your_api_key")
if vuln_data:
print(f"漏洞描述:{vuln_data['data']['documents'][0]['description']}")
注意:API密钥需存储在环境变量中(如os.getenv("VULNERS_KEY")),避免硬编码泄露。
通过Python脚本实现国外VPS的安全加固与漏洞扫描,可将重复的运维操作标准化、自动化。实际应用中建议结合定时任务(如crontab)每周执行扫描,配合CI/CD管道实现代码变更后的自动安全检测,全面提升服务器防护能力。
下一篇: 大模型赋能:美国VPS安全加固实战指南