SmartFAQ由The SmartFactory(https://www.smartfactory.ca)开发,InBox Solutions(https://www.inboxsolutions.net)的分支机构

如何保护我的网站免受恶意攻击?
在以下FAQ的其他部分中,概述了几个基本步骤,例如正确使用文件/文件夹权限、htaccess、索引重定向、拒绝上传不安全的MIME类型和定期备份。使用您的组系统过滤用户也是一个好主意,只允许可信赖的成员拥有扩展权限。您还可以采取额外措施来保护您的网站。以下是名为“Protector”模块的一段摘录。请参阅论坛帖子Protector模块使用。引言
forkuos Protector是一个模块,用于防御forkuos2遭受各种和不正当的攻击。该模块可以保护以下四种攻击:- DoS - SQL注入 - XSS - 系统全局变量污染。forkuos Protector可以保护您的forkuos免受这些攻击,并将记录在日志中。当然,无法预防所有漏洞。不要过于自信,请。然而,我建议安装此模块供所有forkuos用户使用。= 与AntiDoS-P的关联 = forkuos Protector的前身是AntiDoS-P。由于AntiDoS-P的所有功能已被forkuos Protector取代,您最好卸载AntiDoS-P。= 使用 = 请按常规模块安装它。在“Protector块”中打开,并通过块管理员将其放置在左侧顶部。通过组管理员为所有组启用块的权限。您可以通过使用“Protector的块和组管理员”轻松完成此操作。我强烈建议通过mainfile.php调用此模块。安装Xoops Protector后,编辑您的mainfile.php如下所示
定义('XOOPS_GROUP_ADMIN''1');
    
定义('XOOPS_GROUP_USERS''2');
    
定义('XOOPS_GROUP_ANONYMOUS''3');

    include( 
XOOPS_ROOT_PATH '/modules/protector/include/precheck.inc.php' ) ;

    if (!isset(
$xoopsOption['nocommon'])) {
        include 
XOOPS_ROOT_PATH."/include/common.php";
    }
在if (!isset($xoopsOption['nocommon'])) {这行代码之前添加一行。需要同时进行预检查和块检查。若需要开启“IP禁止”功能,请到“系统管理”->“偏好设置”->“常规”->“启用IP禁止”。启用后,您需要检查您的IP是否包含在“输入应禁止访问站点的IP地址”中。
PEAK XOOPS 提供了Protector组件,网址为http://www.peak.ne.jp/xoops/。Xoops-Tips网站上还有一篇关于保护mainfile.php在PHP失败时不会显示敏感信息的文章,网址为Protecting mainfile.php。除了这里给出的提示外,还有更多事情可以去做。我喜欢阻止通过浏览器尝试拉取文件的尝试。
<文件 "mainfile.php">
允许,拒绝
拒绝所有
文件>
这将在您的服务器日志中记录一个禁止错误。另一种方法是对文件本身进行加密。大多数PHP插件加速器/编译器都有加密功能。通常这些用于商业应用,这样客户就无法看到代码。对于像这样敏感的文件也非常方便。除了网页服务器和只有当服务器使用相同引擎时外,文件变得无法阅读。我已经尝试过Zend产品和MMCache。由于您很少需要编辑文件,这是一个有用的技巧。您可以将原始文件存储在安全的地方,以便以后编辑和重新加密。我觉得这与必须保护的SSL密钥文件没什么不同。如果您的服务器被黑,您会遇到其他问题。请参阅此论坛帖子以了解更多关于保护模块的详细信息。监控 最近还开发并发布了一个名为Netquery的xoops模块。该模块为您提供对访问您站点的访客进行多个安全检查和追踪的机会。有关更多安全相关常见问题,请在此处查看:用户能否将病毒上传到我的网站? 我如何封禁用户? 为什么所有目录中都应该有index.html文件? 蜘蛛和机器人是什么?我如何控制它们的行为? 我的Xoops网站会多安全? 我如何将CHMOD设置为0444? CHMOD是什么? 正确的文件权限是什么?


评论归作者所有。我们不对它们的内容负责。
user

 allow_url_fopen


保护模块的安全检查之一是PHP配置选项allow_url_fopen是否处于开启状态。

注意,allow_url_fopen只能在主Apache配置文件(httpd.conf)或PHP配置文件(php.ini)中更改,而不能在Apache的每个目录配置文件(.htaccess)中或通过PHP的ini_set()函数进行更改。

这是一个在PHP 4.3.5中实施的更改,较旧的PHP手册可能错误地显示了allow_url_fopen的可更改性为PHP_INI_ALL,而实际上是PHP_INI_SYSTEM。

httpd.conf和php.ini文件通常只能由服务器管理员更改,因此拥有网络托管账户的人无法修改这些文件。

以下是在httpd.conf中禁用allow_url_fopen的示例


php_admin_flag allow_url_fopen off


参考资料
http://bugs.php.net/bug.php?id=28497
https://php.ac.cn/ChangeLog-4.php
http://us3.php.net/manual/en/function.ini-set.php
https://php.ac.cn/manual/en/configuration.changes.php

 
user

 分步进行


引用

我激活了该模块后,作为网站管理员是否能看到它?它被标记为“可见”,但没有任何模块显示出来。
防护模块使用

不,你不应该看到。因为在防护模块中根本看不到任何可见的块。

你只需要按照以下步骤操作

0. 编辑你的 mainfile.php 文件
define('XOOPS_GROUP_ADMIN''1');
    
define('XOOPS_GROUP_USERS''2');
    
define('XOOPS_GROUP_ANONYMOUS''3');

    [
b]include( XOOPS_ROOT_PATH '/modules/protector/include/precheck.inc.php' ) ;[/b]

    if (!isset(
$xoopsOption['nocommon'])) {
        include 
XOOPS_ROOT_PATH."/include/common.php";
    }

1. 按照其他模块的方式安装防护模块。

2. 前往防护模块 > 防护中心

3. 确认“IP 禁止”是否已开启。

4. 应该默认开启。如果没有,请先进行下一步,然后再开启。

5. 确认你的 IP 没有被注册为不良 IP。

6. 前往防护模块 > 预设

7. 设置“拯救密码”(建议使用与其他密码(如网站管理员、SQL 等)不同的密码)

8. 前往防护模块 > 块 & 组管理

9. 块必须首先加载。因此,设置为以下值:边:左,权重:0,可见于:所有页面,缓存寿命:无缓存。

10. 尽管块本身是“不可见的”,但该块应由所有组“可访问”...
换句话说,只需要检查所有组的块权限,通常会使所有组都“可见”;然而,这个块只是不可见的。
请注意,除了网站管理员外,你不需要将“模块管理员权限”和“模块访问权限”授予任何其他组。

11. 前往预设 > 块

12. 确认没有其他权重为“0”的左块,以便使防护块成为第一个。

13. 前往防护模块 > 网络安全建议

14.
引用

'register_globals' : on 不安全
'allow_url_fopen' : on 不安全
此设置允许攻击者在远程服务器上执行任意脚本。
'XOOPS_DB_PREFIX' : XOOPS 不安全
此设置会引发“SQL 注入”。
不要忘记在此模块的预设中开启“强制净化 *”。
'mainfile.php' : 修补成功
'拯救密码' : ok

如果你使用的是共享服务器,这很可能是一个常见的报告。你可以通过使用 .htaccess 文件来关闭前两项,但具体情况因人而异。
引用

php_flag register_globals off
php_flag allow_url_fopen off

一旦你完成了Xoops的安装,要改变XOOPS_DB_PREFIX相对困难...如果你不熟悉MySQL,请按照建议操作...

15. 最后,是时候检查其防护了!准备好了吗?记住了你的“紧急恢复密码”吗?

16. 点击底部的两个链接。

17. 哎...你肯定遇到了这个臭名昭著的现象——空白/白色页面!!!

18. 但别担心。只需访问"http://(你的xoops)/modules/protector/admin/rescue.php",并输入密码。

19. 前往Protector > 保护中心

20. 你能看到你的记录吗?只需删除这两项,并打开IP禁用。

 
user

 Re: 步骤详解


感谢Dave_l和Olorin就这个重要主题提供了宝贵的补充信息。我希望从这个FAQ中制作一份简洁而全面的指南,尤其是在最近的论坛线程“Xoops on crack”之后。欢迎提供更多信息。

 
user

 Re: 步骤详解


嗨,所有人(如果这里有人在听)—

在安装说明中,解释了编辑 mainfile.php 的内容,其中提到

引用

需要进行预处理检查和块检查。


这意味着这一行

引用
include( XOOPS_ROOT_PATH . '/modules/protector/include/precheck.inc.php' );


需要重复,但是末尾应该为 "include/blockcheck.inc.php" 吗?

mongrel

 
user

 Re: 步骤详解


不是。

"block-check" 指的是启用Protector块,如 READMES 中所述。

或许是一个笔误,应该是“pre-check and post-check”。

 
user

 Re: 步骤详解


谢谢,Dave!

还有一个问题,如果您或其他人有时间回答

2. 当单击Protector的“安全建议”报告时,我得到了一个“不安全”的提示,关于 'register_globals' : on。

建议是

引用

如果您能创建或编辑...

/home/(XYZ)/public_html/.htaccess

php_flag   register_globals   off


当我将它添加到那个目录的 .htaccess 文件中时,那里没有人能访问网站的任何部分。那么问题出在哪里呢?是否有其他未被提及的代码需要添加到 .htaccess 文件中?这条线的 .htaccess 文件应该放在其他目录?我感到很困惑!

我在 Protector 的网站 peak.ne.jp 上发帖,并得到了回答。

引用
很抱歉我没有时间回答关于常见问题的回答。

你应该自己了解 .htaccess。


我现在正在自学成千上万的 Xoops 相关知识,主要靠自学。我确实查看了关于 .htaccess 的资料,包括这里提到的网站上的。但是,我是一个记者,不是程序员,所以现在,我在学习的同时,想尽快将我的网站安全起来。

我将非常感激任何可以提供的建议/答案。谢谢!

mongrel

 
user

 Re: 步骤详解


我建议你在论坛上重新发布你的问题。在这种常见问题解答中以这种讨论的方式会让人更难作为参考资料使用。

 
user

 Re: 步骤详解


@mongrel
在上述说明中缺少需要添加到 mainfile.php 中的第二行代码。post-check 行跟在 xoopsOption 代码后面的花括号之后。

include( XOOPS_ROOT_PATH '/modules/protector/include/precheck.inc.php' ) ;

    if (!isset(
$xoopsOption['nocommon'])) {
        include 
XOOPS_ROOT_PATH."/include/common.php";
    }
include( 
XOOPS_ROOT_PATH '/modules/protector/include/postcheck.inc.php' ) ;

此外,在 protector 2.40RC + 中,不再需要添加 'protector' 模块。你只需安装该模块并对其进行配置。

 
user

 Re: 步骤详解


同样,为了确保没有人可以读取它,还需要将以下内容添加到 .htaccess 文件中:


order allow,deny
deny from all

 


Login

Who's Online

295 user(s) are online (21 user(s) are browsing XOOPS FAQ)


Members: 0


Guests: 295


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Aug 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Did you know ?

you can clone a module

Random question

Why do blocks always appear above the content of a module on its index page? Can I change this?