# 示例:限制单个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
# 安装
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
# 限制请求大小
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;
}
# 禁用不安全的HTTP方法
<Location "/">
<LimitExcept GET POST HEAD>
Deny from all
</LimitExcept>
</Location>
# 防止目录遍历
Options -Indexes
# 防止点击劫持
Header always append X-Frame-Options SAMEORIGIN
# 安装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
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");
}
# 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;
sudo apt install logwatch
sudo nano /etc/logwatch/conf/logwatch.conf
# 配置邮件接收和详细级别
sudo apt install lynis
sudo lynis audit system
sudo apt install nikto
nikto -h yourdomain.com
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接口的安全性,有效过滤恶意请求并检查潜在的安全威胁。