插件窝 干货文章 Linux服务器安全:提高Web接口保护性的先进技术。

Linux服务器安全:提高Web接口保护性的先进技术。

sudo ModSecurity 示例 Nginx 804    来源:    2025-04-12

Linux服务器安全:提高Web接口保护性的先进技术

1. 强化认证机制

多因素认证(MFA)

  • 实施TOTP(基于时间的一次性密码)或FIDO2标准
  • 推荐工具:Google Authenticator, Duo Security, Authy
  • 配置示例(SSH): bash sudo apt install libpam-google-authenticator # 编辑/etc/pam.d/sshd添加: auth required pam_google_authenticator.so

证书基础认证

  • 为API接口部署客户端TLS证书
  • 使用OpenSSL生成证书: bash openssl req -newkey rsa:2048 -nodes -keyout client.key -x509 -days 365 -out client.crt

2. Web应用防火墙(WAF)配置

ModSecurity + OWASP核心规则集

sudo apt install libapache2-mod-security2
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.tar.gz
tar -xzvf v3.3.4.tar.gz
sudo mv coreruleset-3.3.4 /etc/modsecurity/crs

Nginx WAF配置示例

location / {
    ModSecurityEnabled on;
    ModSecurityConfig modsecurity.conf;
    proxy_pass http://backend;
}

3. API安全增强技术

速率限制

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
    proxy_pass http://api_backend;
}

JWT安全实践

  • 使用强算法(如ES256/ES512)
  • 设置短期有效期(15-30分钟)
  • 强制HTTPS传输

4. 高级网络防护

端口敲门技术

# 安装knockd
sudo apt install knockd

# 示例配置(/etc/knockd.conf)
[options]
    UseSyslog

[openSSH]
    sequence    = 7000,8000,9000
    seq_timeout = 5
    command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags    = syn

[closeSSH]
    sequence    = 9000,8000,7000
    seq_timeout = 5
    command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags    = syn

动态防火墙规则

# 使用fail2ban动态封锁恶意IP
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# 自定义过滤器示例
[nginx-badbots]
enabled  = true
port     = http,https
filter   = nginx-badbots
logpath  = /var/log/nginx/access.log
maxretry = 2

5. 运行时保护

eBPF实现实时监控

# 安装bpftrace
sudo apt install bpftrace

# 监控可疑文件访问
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_openat /comm == "nginx"/ { printf("%s %s\n", comm, str(args->filename)); }'

SELinux策略强化

# 检查当前状态
sestatus

# 为Web服务创建自定义策略
sudo audit2allow -a -M nginx_custom
sudo semodule -i nginx_custom.pp

6. 日志与监控

集中式日志分析

# 使用rsyslog转发日志
sudo apt install rsyslog
echo "*.* @logserver.example.com:514" | sudo tee -a /etc/rsyslog.conf
sudo systemctl restart rsyslog

异常检测规则示例(Suricata)

alert http any any -> any any (msg:"Possible SQLi Attack"; flow:to_server; content:"select"; nocase; content:"from"; nocase; distance:0; pcre:"/(\%27)|(\')|(\-\-)|(\%23)|(#)/i"; sid:1000001; rev:1;)

7. 容器化环境安全

PodSecurityPolicy示例(Kubernetes)

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restricted
spec:
  privileged: false
  allowPrivilegeEscalation: false
  requiredDropCapabilities:
    - ALL
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  hostNetwork: false
  hostIPC: false
  hostPID: false
  runAsUser:
    rule: 'MustRunAsNonRoot'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535

8. 自动化安全扫描

使用vuls进行漏洞扫描

docker pull vuls/vuls
docker run --rm -it \
    -v $HOME/.ssh:/root/.ssh:ro \
    -v $PWD:/vuls \
    -v /etc/localtime:/etc/localtime:ro \
    vuls/vuls scan \
    -ssh-user=username \
    -host=192.168.0.1 \
    -port=22 \
    -scan-results-dir=/vuls/results

通过实施这些先进技术,您可以显著提高Linux服务器上Web接口的安全性,构建深度防御体系,有效抵御各类网络威胁。