插件窝 干货文章 如何使用Linux服务器加强Web接口的过滤与检查?

如何使用Linux服务器加强Web接口的过滤与检查?

sudo ModSecurity 使用 nginx 601    来源:    2025-04-12

加强Linux服务器Web接口过滤与检查的解决方案

1. 网络层过滤

使用iptables/nftables

# 示例:限制单个IP的连接数
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP

# 示例:阻止特定国家IP访问
# 先安装xtables-addons
sudo iptables -A INPUT -m geoip --src-cc CN,RU -j DROP

使用Fail2Ban防止暴力破解

# 安装
sudo apt install fail2ban

# 配置Web应用防护
sudo nano /etc/fail2ban/jail.local
# 添加如下内容
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
action = iptables[name=HTTP, port=http, protocol=tcp]
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600

2. Web服务器层防护

Nginx配置示例

# 限制请求大小
client_max_body_size 10m;

# 禁用不安全的HTTP方法
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 405;
}

# 防止SQL注入/XSS攻击
location ~* "(\<|\%3C).*script.*(\>|\%3E)" {
    deny all;
}

# 速率限制
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
location /api/ {
    limit_req zone=api burst=20 nodelay;
}

Apache配置示例

# 禁用不安全的HTTP方法
<Location "/">
    <LimitExcept GET POST HEAD>
        Deny from all
    </LimitExcept>
</Location>

# 防止目录遍历
Options -Indexes

# 防止点击劫持
Header always append X-Frame-Options SAMEORIGIN

3. 应用层检查

使用ModSecurity WAF

# 安装ModSecurity
sudo apt install libapache2-mod-security2

# 使用OWASP核心规则集
sudo git clone https://github.com/coreruleset/coreruleset /etc/modsecurity/coreruleset
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

输入验证脚本示例(PHP)

function sanitize_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
    return $data;
}

// 使用过滤器验证邮箱
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    die("Invalid email format");
}

4. 日志与监控

增强日志记录

# Nginx日志格式
log_format security '$remote_addr - $remote_user [$time_local] '
                   '"$request" $status $body_bytes_sent '
                   '"$http_referer" "$http_user_agent" '
                   '$request_time $upstream_response_time '
                   'Cookie:"$http_cookie"';

access_log /var/log/nginx/security.log security;

使用Logwatch分析日志

sudo apt install logwatch
sudo nano /etc/logwatch/conf/logwatch.conf
# 配置邮件接收和详细级别

5. 定期安全扫描

使用Lynis进行系统审计

sudo apt install lynis
sudo lynis audit system

使用Nikto扫描Web漏洞

sudo apt install nikto
nikto -h yourdomain.com

6. 其他安全措施

设置HTTP安全头

add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Content-Security-Policy "default-src 'self';" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;

定期更新系统

# 设置自动安全更新
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

通过以上多层防护措施的组合,可以显著提高Web接口的安全性,有效过滤恶意请求并检查潜在的安全威胁。