PHP类的网站在NGINX服务器上运行小心被攻击

直接说结论吧。

PHP-FPM漏洞CVE-2 01 9 -1 1 04 3 ,高风险。
在NGINX+PHP-FPM环境下,配置错误会导致死机。
PHP7 +版本,特别是没有补丁的7 .2 /7 .3 ,必须获胜。

正则表达式 fastcgi_split_path_info 的编写方式很愚蠢,将会被利用。

攻击者创建 URL、填充换行符、内存溢出和代码转义。

您可以编辑php.ini文件,清除禁用的功能,系统即可正常工作。

能够编写WebShell并直接上传文件。

可能导致 DoS,导致 PHP-FPM 进程崩溃和服务挂起。

防御:升级到PHP7 .3 .1 1 +或7 .2 .2 4 +,需要升级。

更改NGINX配置,禁用或修改fastcgi_split_path_info。

添加try_files以验证文件是否确实存在。
如果不存在,则会给出 4 04
在 php.ini 中,填充了 Disable_functions,并删除了系统和可执行文件。

仔细监视日志并查找包含换行符的 URL 请求。

WAF使用ModSecurity,规则得到强化。

定期进行渗透测试并测试自己。

说实话:如果你不升级或打补丁,那就等着被黑吧。

Nginx 用 $request_uri、$host、$http_user_agent 做轻量安全防护 —— 拦截扫描与常见简单漏洞

上周一位客户问我如何更安全地设置 Nginx。
我向他详细解释了这一点。
首先,Nginx 实际上可以通过一些变量构建基本的保护。
正如你所说,使用 $request_uri、$host 和 $http_user_agent 等变量可以捕获许多低级攻击和扫描行为。

例如,要阻止目录浏览和敏感文件,可以将 $request_uri 与正则表达式匹配,防止试图通过特殊编码访问系统敏感文件的攻击。
例如,您可以禁用对 Git/SVN 环境文件和除 .wellknown 之外的隐藏文件的访问。

再比如:如果发现一些常见的扫描路径如phpmyadmin、wp-admin等,可以通过location语句匹配这些路径,然后返回4 4 4 状态码,直接关闭连接。

限制文件类型也很重要,例如: .git、.svn、.bak 等文件。
这些文件可能包含敏感信息并返回状态代码 4 03 以拒绝访问。

对于请求方法,可以通过if语句检查$request_method。
仅允许使用 GET、POST 和 HEAD 等安全方法。
其他方法返回 4 05 状态代码。

对于用户代理,您可以通过 if 命令检查 $http_user_agent 并阻止常见的扫描程序和工具,如 acunetix、sqlmap、nikto 等。

对于 SQL 注入、XSS 攻击或命令执行,您可以使用 if 语句检查请求内容,匹配相应的特征,然后返回 4 03 状态代码。

限速和防爆也至关重要。
您可以使用 limit_req_zone 命令定义一个限速区域来限制每个 IP 的请求速率,例如B.登录界面的请求率,防止暴力破解。

此外,HostHeader校验和和黑洞服务器是防止扫描和检测的好方法。

在安全加强方面,关闭版本号泄露、添加安全响应头、TLS加强和最小权限原则是必须的。

最后,日志记录和监控也很重要。
启用访问日志和错误日志,并将其与fail2 ban或SIEM系统结合起来,自动阻止恶意IP。

无论如何,这取决于你。
这些配置都是基于Nginx的基础防护。
对于更复杂的攻击,我们建议与专业的WAF(例如ModSecurity+OWASPCRS)合作进行防护。