Linux Python如何进行安全配置
小樊
43
2025-12-29 23:52:48
Linux Python 安全配置清单
一 运行环境与权限最小化
- 使用虚拟环境隔离依赖:优先使用内置的 venv,避免污染系统 Python;在虚拟环境中安装与运行依赖,便于审计与回滚。
- 创建专用低权限系统用户运行服务,避免以 root 直接执行;按需设置项目目录权限(如目录 750、文件 640),仅授予必要访问。
- 需要提升权限时遵循最小权限原则:优先通过文件权限/用户组调整解决访问受限,谨慎使用 sudo;若必须提权,仅授予最小必要能力并在完成后及时降权。
- 为可执行脚本添加 shebang(如:#!/usr/bin/env python3)并使用 chmod +x 设置可执行位,便于规范调用与权限控制。
二 系统与网络安全
- 持续更新系统与 Python 包:及时修补已知漏洞,降低被利用风险。
- 配置防火墙仅开放必要端口与服务:
- RHEL/CentOS 使用 firewalld(如:firewall-cmd --permanent --add-port=8000/tcp && firewall-cmd --reload)。
- Ubuntu/Debian 使用 ufw(如:ufw allow 80,443/tcp && ufw enable)。
- 生产 Web 服务启用 HTTPS/TLS:通过 Nginx/Apache 终止 TLS,证书可用 Let’s Encrypt certbot 自动签发与续期。
- 加固 SSH 访问:禁用 root 登录、使用密钥认证、限制可登录用户与来源网段。
- 部署入侵防护:如 fail2ban 自动封禁暴力破解来源,降低爆破风险。
三 代码与依赖安全
- 严格输入验证与输出编码:校验数据类型、长度与格式,避免 SQL 注入、XSS 等常见漏洞。
- 禁止使用危险函数:如 eval()/exec() 处理不受信输入;数据库访问使用参数化查询/ORM。
- 安全存储密码与密钥:使用强哈希(如 bcrypt/scrypt),敏感信息放入 环境变量 或受控配置,禁止硬编码。
- 依赖与代码漏洞扫描:定期审计第三方库;可使用 bandit 对 Python 代码进行安全扫描。
- 发布侧加固(可选):使用 PyArmor 做脚本加密/混淆,或用 Cython 编译为二进制以增大逆向难度(注意这并非绝对防护)。
四 进程隔离与强制访问控制
- 启用 SELinux(RHEL/CentOS 常见):为 Python 进程设置最小权限的域类型,必要时基于 audit2allow 生成自定义策略模块并加载,降低被攻破后的横向影响。
- 使用 AppArmor(Debian/Ubuntu 常见):为 /usr/bin/python3 或具体应用生成并加载配置文件,限制对文件、目录与能力的访问。
- 原则:优先采用系统级 MAC(SELinux/AppArmor)与最小权限运行,辅以网络与文件权限控制,形成纵深防御。
五 日志审计与运行监控
- 启用详细日志并集中采集:记录访问、错误、权限异常与关键业务事件;定期审计日志以发现异常模式。
- 配置审计守护进程与关键系统活动监控:对特权操作、登录与策略变更进行告警与追踪。
- 建立备份与恢复策略:定期备份代码、配置与数据,并进行恢复演练,确保可用性。