作为IT工程师,我可以为您提供多种方法来加强Linux服务器上Web接口的访问控制。以下是全面的解决方案:
# 允许特定IP访问HTTP/HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -j DROP
# 对于nftables
sudo nft add rule ip filter INPUT tcp dport 80 ip saddr 192.168.1.100 counter accept
sudo nft add rule ip filter INPUT tcp dport 443 ip saddr 192.168.1.100 counter accept
sudo nft add rule ip filter INPUT tcp dport 80 counter drop
sudo nft add rule ip filter INPUT tcp dport 443 counter drop
location /api {
# IP白名单
allow 192.168.1.100;
allow 10.0.0.0/24;
deny all;
# 基本认证
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
# 限制HTTP方法
limit_except GET POST {
deny all;
}
}
<Location "/api">
# IP限制
Require ip 192.168.1.100 10.0.0.0/24
# 基本认证
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
# 方法限制
<LimitExcept GET POST>
Deny from all
</LimitExcept>
</Location>
# 安装ModSecurity
sudo apt install libapache2-mod-security2 # Debian/Ubuntu
sudo yum install mod_security # RHEL/CentOS
# 配置规则
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo nano /etc/modsecurity/modsecurity.conf
设置SecRuleEngine On
并添加OWASP核心规则集
# 使用Google Authenticator
sudo apt install libpam-google-authenticator
google-authenticator
# 修改PAM配置
sudo nano /etc/pam.d/sshd
# 添加 auth required pam_google_authenticator.so
server {
listen 443 ssl;
ssl_client_certificate /etc/nginx/client_certs/ca.crt;
ssl_verify_client on;
location /api {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
}
}
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
location /api {
limit_req zone=api burst=20 nodelay;
}
<Location "/api">
# 每秒10个请求,突发20个
SetEnvIf Request_URI "^/api" API_CALL
<IfModule mod_ratelimit.c>
<IfDefine API_CALL>
Ratelimit 200 10
</IfDefine>
</IfModule>
</Location>
# 增强日志记录
sudo nano /etc/rsyslog.conf
# 添加
:msg, contains, "API" /var/log/api_access.log
# 使用Fail2Ban防止暴力破解
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# 添加针对Web API的自定义规则
实施这些措施时,建议先在测试环境验证,然后逐步在生产环境部署,并持续监控日志以确保安全策略的有效性。