全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 5392|回复: 37

[疑问] 你的VPS有没有漏洞?网站有没有漏洞?被攻击了该怎么办?

  [复制链接]
发表于 2019-12-4 08:21:34 | 显示全部楼层 |阅读模式
本帖最后由 ggp 于 2019-12-5 09:38 编辑

最近论坛关于漏洞的谈论渐渐多了起来,同时也搞得mjj们人心惶惶的,大部分站长对这方面的知识还是欠缺的。我避开了黑五的热度时间点,用loc小号写篇科普文吧,文章后面是关于如何防御的

有一点大家要认识清楚,不存在没漏洞的系统,漏洞就在那,黑客只是发现了他而已。就跟万有引力一样,不能说牛顿没发现就不存在万有引力。软件升级带来了修补旧漏洞的利好消息,同时也带来了新的未知漏洞的风险

备注:你可以尝试用thinkphp漏洞、nginx漏洞、php漏洞、redis漏洞、whmcs漏洞、discuz漏洞等等为关键词进行搜索,漏洞有几个生命周期:潜伏期、发现期、利用期、公开期、修复期、die。有些组织手握很多未公开的漏洞信息,没公开罢了

若是开源软件,会存在找漏洞和修漏洞的人之间的博弈过程(N对N)。但若是闭源软件,则是找漏洞的人和官方开发人员之间的博弈过程(N对1),官方发现漏洞会比较晚。闭源软件漏洞的生命周期会长于开源软件,所以我更倾向于使用还在维护中的开源软件


一:介绍
攻击和防御的界限很模糊,攻击端必须知道防御端是什么样才能攻其不备,防御端必须知道攻击端有什么武器才能构建防御,而这两者要了解的技术是一样的。就跟刀具一样,在不同人的手里有不一样的属性。但现实是,绝大部分程序员对于这方面的知识储备远远低于专业攻防人员,所以你就懂了

漏洞的发生无非就是用户端传来的数据检查不严格,权限检查不严格,导致错误执行了黑客有意构造的非法代码

我们暂且不提系统级别或者软件级别漏洞,即使有也只能等官方发现并修复。对于未知的网站源码级别的漏洞,我们站长能做的只能在防火墙、权限配置方面做文章,下面教大家简单设置:


二:防火墙配置

防火墙可以对网站传输的非法数据进行识别,可以抵御常见的SQL注入、一句话木马、上传漏洞、cookies漏洞等等。目前开源界使用的是ngx_lua_waf开源防火墙模块,如果机器不是宝塔安装,你可以自行百度搜索安装这个模块。

在宝塔面板5.9及以前的系列版本中,在nginx设置中是可以打开这个防火墙模块的,直接打开即可。但在6.0及以后的版本中,宝塔官方隐藏了这个可视化选项,但是仍然可以打开它。如果你有条件安装宝塔收费版防火墙,当然更好了

1、启用宝塔6.0系列以后隐藏的waf
进入宝塔面板,软件管理,nginx设置,配置修改,http段中,删掉include luawaf.conf;前面的#号,保存一下。重启nginx,即可使用waf了

2、查看和设置waf过滤规则。
进入面板,文件,根目录/www/server/nginx/waf中的三个文件。config.lua是waf的配置文件,将里面的off全部改成on,最后重启nginx即可

测试一条非法数据拦截,打开网址:http://网站网址/?id=../etc/passwd,页面会弹出拦截提示,代表已开启成功

如果有误杀情况,你可以在后台拦截记录里面找到这条记录中的拦截记录,在waf配置文件中删除这条拦截规则即可(拦截记录保存在/www/wwwlogs/waf文件夹下,waf配置文件在/www/server/panel/vhost/wafconf文件夹下)


三、权限配置

上面的配置已经可以抵御九成半的漏洞攻击,包括几乎所有的脚本批量普通漏洞扫描。因为这个防御的只是规则性漏洞,对于变种或伪装性极强的无法防御

也就是说仍然会有半成的漏洞攻击被放进来了,这时候就需要进行权限配置了,原理就是,即使黑客通过网站漏洞上传了木马,若是没有关键执行权限,仍然什么也干不了

备注:很多人为图方便将网站所有目录设置成777,即所有用户有全部权限,这是非常危险的。还好宝塔已经将网站目录所属人设置为www用户,权限为755,但这仍然不够

下面的操作步骤顺序之间有依赖性,必须严格按照下面的顺序进行(以下全部使用宝塔页面操作。若使用chmod命令行操作,必须加-R参数):
1、对于网站公开目录使用555权限,例如public目录。这个操作也会同时应用到所有子目录和子文件
2、对于网站上传目录使用755权限,例如upload文件夹
3、对于网站上传目录中的所有文件使用644权限,例如通过网站上传的图片。因为图片随时都会上传,所以要时时进行设置,需要用到宝塔的计划任务,设置以每分钟运行的任务chmod 644 /www/wwwroot/xxx.com/public/upload/*/*。把xxx.com换成你的网站目录,这里的*代表所有文件,因为有的网站程序上传图片时并不是上传到单独一个文件夹,而是以每月命名的文件夹,所以倒数第二个*代表upload里所有的文件夹
4、还需要使用Nginx、Apache禁止上传目录的php执行权限,可以参考这篇文章,不再重复写内容:https://blog.csdn.net/yuhui2f/article/details/17074627

权限操作说明:
555:所有用户都没有写入权限
755:只有文件所属用户有写入权限
644:所有用户都没有执行权限

四:总结
1、以上方法只能防御网站源码漏洞,如果被系统漏洞或者软件级别漏洞攻击,你不是孤单的一个人,这将是全球性的灾难漏洞,耐心等待官方发布补丁包下载安装即可
2、这里有个简单判断网站是否被上传木马的方法:你可以在宝塔文件管理界面观察文件夹的修改时间,一般我们上传完网站源码后不会再修改网站内容,如果发现某个文件夹修改时间和同目录文件夹明显不一样(缓存目录除外),就要小心了
3、所有网站使用同一个密码,并且几年都不换,这个会导致公开的社工库中已有你的账户和密码
4、机器使用默认的ssh的22端口,同时账号为root,并且密码为常用密码或弱密码,会导致你的机器被用来挖矿或用作肉鸡
5、使用默认网站后台登录目录,并且密码为常用密码或弱密码,后台会被人爆破密码。验证码只能防人,不能防机器
6、做站使用windows系统,由于没有linux天生完善的文件权限控制机制,被攻击成功概率远远高于linux系统
发表于 2019-12-4 17:47:57 | 显示全部楼层
我从买来就一直关机,没有人能够攻击我的vps!!!
发表于 2019-12-4 08:37:01 | 显示全部楼层
还能这样水贴?
发表于 2019-12-7 16:22:55 | 显示全部楼层
谢谢分享,一字不漏的看完了
 楼主| 发表于 2019-12-5 16:18:39 | 显示全部楼层
我認為改掉默認端口還不夠,尤其是ssh。
雖然改端口對於阻擋大範圍的ip暴力破解有效,但是對於針對性的攻擊就毫無作用了,因為掃描端口是很簡單的事。
對於ssh我認為起碼要關閉遠端root登入以及關閉密碼登入,一律用ssh key。

用ssh key也是可以的,但是对于小白来说门槛过高,使用随机密码也是可以的
发表于 2019-12-5 09:51:41 | 显示全部楼层
感谢大佬科普,必须收藏!
发表于 2019-12-4 09:19:11 | 显示全部楼层
可以哦,喜欢科普贴
发表于 2019-12-4 09:12:30 | 显示全部楼层
好贴,顶一下
发表于 2019-12-4 08:29:12 | 显示全部楼层
大佬这科普帖子好,收藏先。
发表于 2019-12-4 08:37:16 来自手机 | 显示全部楼层
不对外开放任何端口最安全,端口全部白名单,程序尽量以最小权限运行,代码尽量使用长期有人维护的开源程序
发表于 2019-12-4 09:10:06 来自手机 | 显示全部楼层
没知识背景的小白看了也不会操作 操作了也不知道为啥操作 只是获得了一种错误的安全感 真是想做个小博客的都去买虚拟主机了 一瓶子不满半瓶子晃荡瞎折腾的也不在乎什么安全 出了问题重装拉倒
发表于 2019-12-4 09:10:48 | 显示全部楼层
谢谢大佬科普,请问我能转走吗
发表于 2019-12-4 09:13:04 | 显示全部楼层
全站555+读写分离我不信有人能挂马
发表于 2019-12-4 09:21:51 | 显示全部楼层
系统防火墙不要随便关闭!我发现很多软件安装教程第一步就是关防火墙,这是很危险的
软件装不上不要直接 chmod 777,这也是危险操作
ssh 用非 root 和 ssh key 登录,不要直接用 root 和密码
装软件全部用容器化,即使应用有漏洞被攻破,你的系统还是安全的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-25 18:44 , Processed in 0.065938 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表