Dan*_*Dan 4 security configuration logging php-fpm apache-2.4
我似乎在我的 /var/log/apache2/error.log 和 /var/log/apache2/access.log 中的相应记录中得到这些行
/var/log/apache2/error.log
[Fri Sep 20 02:28:36.654357 2019] [proxy_fcgi:error] [pid 28619:tid 140003157985024] [client 49.233.5.191:37604] AH01071: Got error 'Primary script unknown\n'
[Fri Sep 20 02:28:38.136282 2019] [proxy_fcgi:error] [pid 28618:tid 140003082450688] [client 49.233.5.191:43806] AH01071: Got error 'Primary script unknown\n'
Run Code Online (Sandbox Code Playgroud)
/var/log/apache2/access.log
49.233.5.191 - - [20/Sep/2019:02:28:36 +0000] "GET /TP/html/public/index.php HTTP/1.1" 404 392 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0;en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6)"
49.233.5.191 - - [20/Sep/2019:02:28:36 +0000] "GET /elrekt.php HTTP/1.1" 404 433 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0;en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6)"
Run Code Online (Sandbox Code Playgroud)
这些文件显然不存在,所以这看起来像是从 ip 位置和行为进行的机器人扫描。但是,当我请求另一个不存在的文件时。我在 /var/log/apache2/error.log 文件中没有收到 'Got error 'Primary script unknown\n' 错误
php-fpm 配置
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
# Enable http authorization headers
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.ph(ar|p|tml)$">
SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
</FilesMatch>
<FilesMatch ".+\.phps$">
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(ar|p|ps|tml)$">
Require all denied
</FilesMatch>
</IfModule>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这是我可以做的事情吗,可能会更改配置?
我知道我可以使用 iptables 来阻止 ip,如果可能的话,我更感兴趣的是通过一些配置更改来摆脱日志条目。
小智 6
…
最后,我检查了两个服务:
php-fpm7.3 -t
apachectl configtest
Run Code Online (Sandbox Code Playgroud)
由于一切看起来都很好,我重新启动了它们:
systemctl restart php7.3-fpm
systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
就那么简单。
虽然我猜重启也会解决这个问题AH01071。
在我最近的 ubuntu 22.04 + apache 2.4 (ubuntu repo)(以 FPM/FastCGI 运行 php) + php-fpm 8.1 (ubuntu repo) 的默认/标准设置中,加载不存在的 php 文件在访问日志中有 404 和“[Mon 8 月 14 日 19:41:02.162415 2022] [proxy_fcgi:error] [pid 578412:tid 140622065954369] [client 172.18.26.14:32120] AH01071:错误日志中出现错误“主脚本未知”。
浏览器显示“未找到文件”。http 404,不是标准的 apache 错误。
google了一下,应该是php解释器处理了一个不存在的php文件引起的。
解决方案:仅将存在的php文件传递给php解释器(添加If检查)。
# /etc/apache2/conf-available/php8.1-fpm.conf
<FilesMatch ".+\.ph(ar|p|tml)$">
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</If>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20255 次 |
| 最近记录: |