sudo apt update && sudo apt upgrade
(Debian/Ubuntu) 或 sudo yum update
(RHEL/CentOS)sudo apt install --no-install-recommends package-name
bash
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw deny 22/tcp # 如果不需要SSH
/etc/ssh/sshd_config
中 PermitRootLogin no
bash
ssh-keygen -t ed25519
ssh-copy-id user@server
server {
# 禁用不必要的HTTP方法
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
# 安全头部
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'";
add_header Referrer-Policy "no-referrer-when-downgrade";
# 禁用服务器信息泄露
server_tokens off;
# 限制上传大小
client_max_body_size 10M;
}
# 禁用服务器签名
ServerSignature Off
ServerTokens Prod
# 安全头部
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Content-Security-Policy "default-src 'self'"
# 限制HTTP方法
<LimitExcept GET POST HEAD>
Deny from all
</LimitExcept>
php
$input = filter_input(INPUT_GET, 'param', FILTER_SANITIZE_STRING);
if (!preg_match('/^[a-zA-Z0-9]+$/', $input)) {
die("Invalid input");
}
php
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
bash
# 使用fail2ban限制API请求频率
sudo apt install fail2ban
-- 创建专用用户并限制权限
CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE ON database.* TO 'webuser'@'localhost';
FLUSH PRIVILEGES;
php
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $email]);
# 配置日志轮转
sudo nano /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/sbin/nginx -s reload
endscript
}
# 安装和配置AIDE (高级入侵检测环境)
sudo apt install aide
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 使用Lynis进行安全审计
sudo apt install lynis
sudo lynis audit system
# 使用testssl.sh检查SSL配置
wget https://testssl.sh/testssl.sh
chmod +x testssl.sh
./testssl.sh yourdomain.com
通过以上措施,您可以显著提高Linux服务器上Web接口的安全性。请记住,安全是一个持续的过程,需要定期审查和更新安全措施。