有人在他们的 Linux、Apache2、MySQL、PHP 网站遭遇钓鱼攻击后联系我。我登录了他们的服务器,添加了防火墙,删除了所有网络钓鱼文件,然后在
file_uploads = Off
文件中设置了 /etc/php/8.1/apache2/php.ini
。
该网站有很多页面可以让您上传文件。有没有办法让来自一两个特定 IP 地址的用户仍然使用这些页面上传内容?我读到在最新版本的 PHP 中无法使用
if(<valid ip address>) ini_set('file_uploads', 'On');
。我还有其他方法可以考虑吗?
背景
据我所知,他们的网站受到攻击的原因是他们有很多允许您上传附件的 HTML 表单。根本没有表单验证或内容清理。这解释了为什么我在服务器上看到像
danger.zip
和 unzip.php
这样的文件,其中 danger.zip
包含一堆病毒和网络钓鱼材料,而 unzip.php
是执行操作 unzip(danger.zip);
的网页。
注意,现在当人们想要更新网站内容时我们的流程是这样的:
ufw
防火墙完全阻止所有访问该网站接受内容的人的IP地址的流量ufw
防火墙,让公众再次看到该网站。如果你知道的话,我会使用
.htaccess
或 Apache 的主配置文件来限制对基于 IP 地址的上传页面的访问
<Files "upload.php">
Order Deny,Allow
Deny from all
Allow from 123.456.789.000
Allow from 987.654.321.000
</Files>
此外,您还可以更新您的
header.php
或任何上传文件以检查 IP 是否允许。
$allowed_ips = ['123.456.789.000', '987.654.321.000'];
if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) {
die("You are not allowed to upload files.");
}