以下是提升Web接口安全性的Linux服务器设置第二部分,涵盖关键配置和高级防护措施:
防火墙精细化规则
# 仅允许必要端口(示例:HTTPS/SSH)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -j DROP # 默认拒绝其他流量
# 持久化规则(Ubuntu/Debian)
sudo apt install iptables-persistent
sudo netfilter-persistent save
# CentOS/RHEL
sudo service iptables save
启用Fail2Ban防暴力破解
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑 /etc/fail2ban/jail.local
:
[sshd]
enabled = true
maxretry = 3
bantime = 1h
[nginx-http-auth] # 保护Web登录接口
enabled = true
Nginx/Apache TLS强化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
HTTP头部安全
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'";
API接口防护
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20;
}
内核参数调优
# 阻止SYN洪水攻击
echo "net.ipv4.tcp_syncookies = 1" | sudo tee -a /etc/sysctl.conf
# 禁用ICMP重定向
echo "net.ipv4.conf.all.accept_redirects = 0" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
文件系统保护
# 关键目录设为不可修改(示例:/etc)
sudo chattr +i /etc/passwd /etc/shadow
sudo chmod 700 /etc/ssl/private # 证书私钥目录
审计日志配置
sudo apt install auditd
sudo auditctl -w /var/www/html -p wa -k web_content
sudo auditctl -w /etc/nginx/ -p wa -k nginx_config
Web应用防火墙(ModSecurity)
sudo apt install libapache2-mod-security2 # Apache
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
启用OWASP核心规则集:
git clone https://github.com/coreruleset/coreruleset /etc/modsecurity/crs/
定期漏洞扫描
# 使用OpenVAS或Nessus进行自动化扫描
sudo apt install nikto
nikto -h https://your-api-domain.com
入侵检测工具(AIDE)
sudo apt install aide
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 定期检查:sudo aide --check
日志集中化管理
# 使用rsyslog转发日志到安全服务器
echo "*.* @logserver.example.com:514" | sudo tee -a /etc/rsyslog.conf
sudo systemctl restart rsyslog
项目 | 检测命令 | 预期结果 |
---|---|---|
开放端口 | ss -tulnp |
仅显示业务必要端口 |
SSH加密算法 | nmap --script ssh2-enum-algos target |
无弱算法(如ssh-dss) |
TLS协议支持 | openssl s_client -connect localhost:443 -tls1_2 |
成功握手 |
后续建议:
1. 每月执行unattended-upgrades
自动安全更新
2. 使用Ansible/Terraform固化安全配置
3. 对敏感接口实施双向TLS认证(mTLS)
通过以上措施可显著提升Web接口的防护等级,建议结合第一部分的基础配置共同实施。