os:CentOS 7
Nginx:1.6.2
httpd:apache 2.4.6
cms:Drupal 7
在我的服务器遭到入侵后,我从服务器中删除了所有内容,重新安装了操作系统和软件,并从备份恢复了数据
现在,我以最大的安全风格配置所有服务.
在详细研究访问日志之后 – 我决定拒绝任何对PHP文件的请求,除了index.PHP之外,它位于站点文档根目录中以提高安全性.
azenv2.PHP
az.PHP
和
/*/wp-login.PHP
/administrator/index.PHP
/MyAdmin/index.PHP
第一类 – 后门(其中一个入侵了我的网站,有人从我的服务器发送了大量垃圾邮件).
第二 – 有人想找到流行的cms和实用程序,并尝试登录@密码,如admin @ 123456
>即使有人上传PHP-shell,也无法使用它.
>所有这些请求都是’不好’的小修道院 – 并且通过Nginx拒绝它们将保护drupal(httpd PHP MysqL)工作和消耗能力.
我对一个虚拟主机的当前配置:
server {
listen Nginx_access.log main;
}
}
Nginx.conf – 安装后未更改.
UPDATE
最后我为deny创建了这个配置:
location ~ \.PHP${
access_log /path/to/log/Nginx_deny.log name_log;
deny all;
}
这个配置代理:
location =/index.PHP {
proxy_pass http://127.0.0.1:PHP {
proxy_pass http://127.0.0.1:
1).因此,有关攻击尝试的完整信息将收集在日志中.
2).服务器不会为错误的请求做额外的工作.
3). Drupal cron可以工作.
最佳答案
您可以通过多种方式实现这一目标.
与您在配置文件中的内容完全直接集成,您可能希望简单地包含以下部分;
location ~ \.PHP${
try_files index.PHP @error;
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
...
}
location @error {
[config of however you want to handle errors]
}
在允许其访问/执行之前,将检查所请求文件的存在.
除此之外,我个人建议使用fail2ban,如果配置正确,将为您提供更全面的安全性;您可以将其配置为实时监控访问日志,并通过自动创建新的iptables规则来禁止IP访问您的服务器,并指定禁止时间.
就个人而言,我的服务器配置为根据this article使用带有Nginx的fail2ban(或者至少基于此 – 您可以根据需要更改它).