1. 更新系统与基础软件包
保持Debian系统和Python相关软件包为最新版本,及时修补已知安全漏洞。执行以下命令更新系统及软件包:
sudo apt update && sudo apt upgrade -y
安装Python基础组件(如未预装):
sudo apt install python3 python3-pip -y
若需要特定版本的Python(如3.12),可通过源码编译安装(参考后续“安装特定版本Python”步骤)。
2. 使用虚拟环境隔离项目依赖
虚拟环境可避免不同项目的依赖冲突,防止系统级Python环境被污染。创建并激活虚拟环境的命令如下:
python3 -m venv myenv # 创建名为myenv的虚拟环境
source myenv/bin/activate # 激活虚拟环境(激活后命令行前会显示“(myenv)”)
在虚拟环境中安装Python包时,优先使用--require-hashes选项验证包完整性(需配合requirements.txt中的哈希值使用)。
3. 配置系统级安全防护
安装安全工具:部署Fail2Ban监控日志并自动封禁恶意IP(如SSH暴力破解),使用rkhunter检查系统是否存在rootkit等恶意程序:
sudo apt install fail2ban rkhunter -y
配置Fail2Ban(针对SSH):编辑/etc/fail2ban/jail.local,添加以下内容:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3 # 允许的最大失败次数
bantime = 600 # 封禁时间(秒)
启动Fail2Ban并设置开机自启:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
配置rkhunter:编辑/etc/rkhunter.conf,确保以下选项启用(防止隐藏文件/设备检查被绕过):
ALLOWDEVFILE=/dev/null
ALLOWHIDDENFILE=/dev/null
CHECKDEVFILE=/dev/null
CHECKHIDDENFILE=/dev/null
运行扫描并更新数据库:
sudo rkhunter --update
sudo rkhunter --check
强化SSH访问:禁用root远程登录、使用SSH密钥认证,限制登录IP(可选)。编辑/etc/ssh/sshd_config:
PermitRootLogin no # 禁止root登录
PasswordAuthentication no # 禁用密码登录(需提前配置SSH密钥)
AllowUsers your_username # 仅允许指定用户登录(可选)
重启SSH服务使配置生效:
sudo systemctl restart sshd
4. 管理Python依赖安全
pip定期更新所有包,获取安全补丁:pip install --upgrade pip # 升级pip本身
pip list --outdated # 查看过时包
pip install --upgrade <package_name> # 更新指定包
pip-audit或safety工具扫描依赖中的已知漏洞:pip install pip-audit
pip-audit # 扫描并显示漏洞信息
或使用safety:pip install safety
safety check # 检查依赖中的安全问题
5. 配置Python代码安全
PyArmor加密Python脚本,防止代码泄露。安装并加密脚本:pip install pyarmor
pyarmor gen hello.py # 加密单个脚本
pyarmor gen -e 30 hello.py # 设置脚本过期时间(30天)
pyarmor gen -b "00:16:3e:35:19:3d" hello.py # 绑定到特定MAC地址
|e过滤器),避免直接渲染未处理的HTML。bcrypt或argon2等算法哈希存储密码。6. 可选:配置SELinux增强隔离
若系统支持SELinux,可启用并配置为Enforcing模式,限制Python进程的权限。安装SELinux工具:
sudo apt install selinux-basics selinux-policy-default -y
编辑/etc/selinux/config,设置:
SELINUX=enforcing
重启系统使配置生效:
sudo reboot
7. 定期监控与维护
top、htop或Nagios等工具监控系统CPU、内存使用情况,及时发现异常进程。/var/log/auth.log(SSH登录日志)、/var/log/syslog(系统日志),识别可疑活动(如多次登录失败)。