通过Python虚拟环境(venv)隔离不同项目的依赖,避免全局依赖冲突和系统污染,降低因依赖漏洞引发的安全风险。
操作步骤:
python3 -m venv myenv # 创建虚拟环境
source myenv/bin/activate # 激活虚拟环境
pip install -r requirements.txt # 在虚拟环境中安装项目依赖
作用:防止不同项目间的依赖版本冲突,减少系统级Python包的安全隐患。
SELinux(Security-Enhanced Linux)是CentOS默认的内核安全模块,可限制Python进程的权限,防止越权访问系统资源。
操作步骤:
sudo yum install selinux-policy-targeted -y
sudo systemctl enable selinux
sudo systemctl start selinux
sudo cat /var/log/audit/audit.log | grep python | audit2allow -M my_python_policy
sudo semodule -i my_python_policy.pp
作用:精细化控制Python进程对文件、网络等资源的访问,降低恶意操作的风险。
使用firewalld工具限制对Python应用端口的访问,仅开放必要的端口(如应用端口、SSH端口),阻止非法IP的连接。
操作步骤:
sudo yum install firewalld -y
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp # 开放应用端口(如8080)
sudo firewall-cmd --reload
作用:过滤非法网络流量,防止端口扫描、DDoS等网络攻击。
及时修补系统和Python包的已知漏洞,避免因未修复的漏洞被攻击。
操作步骤:
sudo yum update -y
pip install --upgrade pip # 升级pip本身
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d= -f1 | xargs -n1 pip install -U # 升级过期的包
作用:修复安全漏洞,提升系统和应用的安全性。
避免以root用户运行Python应用,创建专用用户(如pythonapp)并分配最小必要权限,降低权限滥用风险。
操作步骤:
sudo useradd -r -s /sbin/nologin pythonapp # 创建专用用户(无登录权限)
sudo chown -R pythonapp:pythonapp /path/to/app # 修改应用目录所有者
sudo -u pythonapp python app.py # 以专用用户运行应用
作用:即使应用被攻破,攻击者也无法获得root权限,限制破坏范围。
/etc/ssh/sshd_config文件,设置PermitRootLogin no。PubkeyAuthentication yes)。对用户输入的数据进行严格验证和转义,防止SQL注入、XSS(跨站脚本攻击)等常见漏洞。
操作示例:
import re
def validate_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return bool(re.match(pattern, email))
psycopg2的参数化查询):cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
eval()、exec()),防止恶意代码执行。生产环境中强制使用HTTPS协议,加密数据传输,防止中间人攻击窃取敏感信息(如用户密码、支付信息)。
操作步骤:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
location / {
proxy_pass http://localhost:8000; # 转发到Python应用
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
使用Python内置的logging模块记录应用运行日志(如请求日志、错误日志),并结合监控工具(如Prometheus、Grafana)实时跟踪应用状态,及时发现异常行为。
操作示例:
import logging
logging.basicConfig(
filename='/var/log/python_app.log',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logging.info('Application started') # 记录启动信息
作用:快速定位安全事件(如异常登录、未授权访问),便于事后追溯和响应。
定期使用pip-audit或safety工具检查依赖库的安全漏洞,移除不再维护或存在高危漏洞的库。
操作步骤:
pip install pip-audit # 安装审计工具
pip-audit # 检查依赖漏洞
作用:及时发现并修复依赖库中的安全问题,防止因第三方库漏洞引发的应用安全风险。