yum update
或 apt-get upgrade
/etc/ssh/sshd_config
中 PermitRootLogin no
bash
# 示例:仅允许80,443和SSH端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -j DROP
nginx
server_tokens off;
nginx
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
nginx
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'";
nginx
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...';
ssl_prefer_server_ciphers on;
nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
参数化查询:防止SQL注入
// 错误示例
$query = "SELECT * FROM users WHERE id = " . $_GET['id'];
// 正确示例(使用PDO)
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute(['id' => $_GET['id']]);
# 限制每个IP每秒10个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location /api/ {
limit_req zone=one burst=20;
}
}
通过实施这些最佳实践,您可以显著提高Linux服务器上Web接口的安全性,降低被攻击的风险。安全是一个持续的过程,需要定期审查和更新安全措施以应对新的威胁。