插件窝 干货文章 Linux服务器防护指南:确保Web接口安全。

Linux服务器防护指南:确保Web接口安全。

sudo 安全 配置 ModSecurity 977    来源:    2025-04-11

Linux服务器防护指南:确保Web接口安全

1. 基础系统加固

1.1 系统更新与补丁管理

  • 定期执行 yum updateapt-get upgrade 保持系统最新
  • 启用自动安全更新:sudo apt-get install unattended-upgrades (Debian/Ubuntu)
  • 配置关键服务如SSH、Web服务器仅接收安全更新

1.2 最小化安装原则

  • 移除不必要的软件包:sudo apt-get autoremove
  • 禁用不需要的服务:systemctl disable [service-name]
  • 使用netstat -tulnp检查开放端口,关闭非必要端口

2. Web服务器安全配置

2.1 Apache安全配置

# 在httpd.conf或apache2.conf中添加:
ServerTokens Prod
ServerSignature Off
TraceEnable Off
FileETag None
Header always append X-Frame-Options SAMEORIGIN
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff

2.2 Nginx安全配置

# 在nginx.conf中添加:
server_tokens off;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Content-Security-Policy "default-src 'self'";

2.3 PHP安全配置 (php.ini)

expose_php = Off
display_errors = Off
log_errors = On
allow_url_fopen = Off
allow_url_include = Off
session.cookie_httponly = 1
session.cookie_secure = 1

3. 防火墙与网络防护

3.1 UFW防火墙配置

sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP
sudo ufw allow 443/tcp   # HTTPS

3.2 Fail2Ban安装配置

sudo apt-get install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑/etc/fail2ban/jail.local配置适当的封禁规则和期限

4. Web应用防护

4.1 ModSecurity安装 (Apache)

sudo apt-get install libapache2-mod-security2
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

启用OWASP核心规则集(CRS):

sudo git clone https://github.com/coreruleset/coreruleset /etc/modsecurity/crs
sudo cp /etc/modsecurity/crs/crs-setup.conf.example /etc/modsecurity/crs/crs-setup.conf

4.2 定期安全扫描

  • 使用Nikto进行漏洞扫描:nikto -h yourdomain.com
  • 使用OpenVAS或Nessus进行深度扫描
  • 使用Lynis进行系统审计:lynis audit system

5. 认证与访问控制

5.1 SSH安全加固

sudo nano /etc/ssh/sshd_config

修改以下参数:

Port 2222                    # 更改默认端口
PermitRootLogin no           # 禁止root登录
PasswordAuthentication no    # 仅允许密钥认证
MaxAuthTries 3               # 最大尝试次数

5.2 Web接口认证

  • 为管理接口添加HTTP基本认证:
sudo htpasswd -c /etc/apache2/.htpasswd adminuser
  • 或使用OAuth/OpenID Connect进行认证

6. 日志与监控

6.1 集中日志管理

  • 配置rsyslog发送日志到中央服务器
  • 或使用ELK Stack(Elasticsearch, Logstash, Kibana)

6.2 实时监控工具

  • 安装配置OSSEC HIDS:sudo apt-get install ossec-hids
  • 使用Prometheus + Grafana监控系统指标
  • 配置Web应用防火墙(WAF)告警

7. 备份与灾难恢复

7.1 自动化备份策略

# 使用cron定时备份
0 3 * * * /usr/bin/rsync -avz /var/www/ /backup/web-$(date +\%Y\%m\%d)
0 4 * * * /usr/bin/mysqldump -u root -p[password] --all-databases > /backup/db-$(date +\%Y\%m\%d).sql

7.2 备份验证

  • 定期测试备份恢复流程
  • 使用校验和验证备份完整性:sha256sum backup-file.tar.gz

8. 定期安全评估

  • 每季度执行渗透测试
  • 每年进行第三方安全审计
  • 持续监控CVE数据库获取相关漏洞信息

通过实施这些措施,您可以显著提高Linux服务器上Web接口的安全性。请记住,安全是一个持续的过程,需要定期审查和更新防护措施。