本文目录导读:

为PHP项目设置防火墙规则,通常包括服务器级别的网络防火墙(如iptables、ufw、云服务商的安全组)和应用层防护(如PHP配置、WAF),以下是分步指南:
确定项目暴露的端口和服务
- Web服务:通常为 80(HTTP)、443(HTTPS)。
- 数据库:MySQL(3306)、PostgreSQL(5432),仅允许本地或内网访问。
- 其他服务:Redis(6379)、Memcached(11211),同样应限制来源。
- 管理接口:如phpMyAdmin、后台路径,建议绑定到特定IP或VPN。
服务器级别防火墙(以Linux为例)
方案A:使用iptables(通用)
# 默认拒绝所有入站流量 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环 iptables -A INPUT -i lo -j ACCEPT # 允许已建立的连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 开放Web端口(仅对外) iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许特定IP管理SSH iptables -A INPUT -p tcp --dport 22 -s 你的管理IP -j ACCEPT # 限制数据库仅本地 iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -j ACCEPT # 保存规则(不同发行版命令不同) iptables-save > /etc/iptables/rules.v4
方案B:使用ufw(Ubuntu/Debian)
ufw default deny incoming ufw default allow outgoing ufw allow 80/tcp ufw allow 443/tcp ufw allow from 你的IP to any port 22 # 数据库仅本地 ufw deny 3306 # 或限制特定内网 ufw allow from 192.168.1.0/24 to any port 3306 ufw enable
方案C:云服务商安全组(如阿里云、AWS)
- 在控制台创建安全组规则,与上述逻辑一致。
- Web端口对
0.0.0/0开放;数据库/管理端口仅对内网IP段或跳板机IP开放。
应用层防护(PHP及Web服务器)
限制PHP执行权限
- 禁用危险函数:在
php.ini中禁用exec、system、shell_exec、proc_open等。 - 禁用文件操作函数:
file_put_contents、unlink(仅在你真正需要时放开)。 - 开放基目录:
open_basedir = /var/www/html:/tmp限制PHP只能访问指定目录。 - 禁用错误输出:
display_errors = Off,error_reporting = E_ALL & ~E_NOTICE。
限制上传路径
- 上传目录 禁止执行PHP:在Nginx/Apache中配置权限。
- Nginx:
location /uploads { location ~ \.php$ { deny all; } } - Apache:
<Directory "/var/www/html/uploads"> <FilesMatch "\.php$"> Deny from all </FilesMatch> </Directory>
- Nginx:
配置WAF(Web应用防火墙)
- ModSecurity:开源WAF,可检测SQL注入、XSS等。
- Cloudflare:CDN + WAF,可拦截恶意请求。
- Laravel/ThinkPHP的中间件:对输入参数进行过滤。
数据库层防火墙
- 绑定地址:修改MySQL配置
bind-address = 127.0.0.1禁止远程连接。 - 创建专用用户:
CREATE USER 'app'@'localhost' IDENTIFIED BY '密码';仅允许本地连接。 - 限制权限:
GRANT SELECT, INSERT, UPDATE, DELETE ON 你的库.* TO 'app'@'localhost';
定期审查与监控
- 日志监控:
tail -f /var/log/nginx/access.log查看异常请求。 - 入侵检测:
fail2ban自动封禁暴力破解IP(如SSH、WordPress登录)。 - 定期扫描:使用
nmap扫描暴露端口,确认无多余服务。
生产环境示例(完整配置)
# 开放端口 80/tcp (HTTP) 443/tcp (HTTPS) 22/tcp (SSH,限制特定IP) # 禁止外网访问 3306/tcp (MySQL) 6379/tcp (Redis) 8080/tcp (如phpMyAdmin) # 应用层 - 上传目录禁止PHP执行 - 禁用危险PHP函数 - 开启URL白名单(如仅index.php允许访问)
- 优先级:先做网络防火墙(限制端口),再做应用层(限制PHP行为)。
- 最小权限原则:只开放必要端口,数据库/管理端口绝不暴露公网。
- 定期更新:PHP版本、Web服务器、防火墙规则随业务变化而调整。
如果你使用云服务器,安全组规则通常是最高效的方案;如果是自建服务器,ufw 或 iptables 足够,对于高安全性要求,可额外部署WAF或企业级防火墙。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播