[网站攻防] 教你如何使用堡塔插件来防御网站被入侵和溯源攻击
作者:CC下载站 日期:2020-08-10 15:42:07 浏览:1238 分类:站长帮
前言
在当前互联网极速发展的时代,网络攻击手段也在极速的发展中,由于种种问题导致服务器被黑客渗透,下面就来介绍一下如何使用宝塔的插件,让黑客寸步难行
安全插件联动
一、Nginx防火墙插件和企业级防篡改插件联动
用过企业级防篡改的人都知道,企业级防篡改有些目录是不进行监控的,相当于白名单的意思,这就给了黑客一个突破的点,如果他们可以把php文件写入到那些不监控的目录,那么就成功突破了企业级防篡改插件,不过我们可以利用Nginx防火墙来进行补掉这个点
例如有如下代码
他把文件写入到了config目录下的a.php中,然后在企业级防篡改中默认是不监控config目录的,所以写入的时候会写入成功
写入php内容
可以看到是没有报错,那代表是写入成功的意思。访问config/a.php
不过我们可以在Nginx防火墙中,把那些企业级防篡改排除的目录加入到Nginx防火墙的URL黑名单中,这样别人就不可以访问到这个php文件了(这里比较粗暴了。建议加入在禁止执行PHP的URL)
设置完成后访问刚刚写入的a.php
除了防火墙还可以使用堡塔php安全防护进行拦截
还是刚刚的案例。这里使用的不允许config 访问
再次访问config/a.php
也是达到了一样的效果
思路总结:
利用黑白名单的思路。来结合两个防护插件的不足之处相互补充的地方。这样可以更好的守护网站的安全。
二、Nginx防火墙插件和PHP安全防护的联动
Nginx防火墙可以防御一些基本且常见的漏洞,但是某些低版本是存在绕过的问题(建议升级到最新版版)。所以这个时候使用堡塔的PHP安全防护就是特别有必要的地方了。
例如典型的thinkphp的代码执行漏洞,使用如下payload
?s=index/think\app/invokefunction&function=array_map&vars[]=assert&vars[][]=phpinfo();
防火墙拦截了。
使用如下payload
?s=index/think\app/invokefunction&function=array_map&vars[]=assert&vars[][]='phpinfo'();
假设绕过了Nginx防火墙
配合上我们的堡塔php安全防护,并且制定tp5.0规则
再次使用刚刚的Payload,成功拦截掉了
不过这里会暴露我们网站的绝对路径,按照下面配置屏蔽错误信息
保存然后重启php服务,配置就生效了,再次访问
思路总结:
利用多层次的防御手段会有更多方面的一个安全效果
三、全家桶
下面先用一个有漏洞的网站进行测试
假设下面是黑客攻击的目标
假设黑客通过fuzz手段成功找到了一个任意文件读取漏洞
通过读取配置成功获取到一个外部链接的mysql账号密码
发现进去mysql不可以执行命令,黑客想起网站的界面是一个典型的tp的网站,直接使用payload测试了一下
发现有这个漏洞,就直接上传大马来执行命令,假设站点没有禁用system函数
这样黑客就已经成功获取到了www用户的权限,最后黑客就会通过一些漏洞进行提权操作,这里就不演示了
防御方案
Nginx防火墙+PHP安全防护+企业级防篡改+OpenRasp+防提权
为什么要用这么多插件才可以抵御大部分的攻击呢?
这些插件都是根据黑客攻击流程进行定制的,黑客一般攻击流程:
寻找网站程序漏洞->查找该cms或框架是否有漏洞->上传木马->执行命令->提权
首先按照前面的Nginx防火墙加上企业级防篡改联动进行配置,把排除的目录放到Nginx的URI黑名单中
然后就是根据我们使用的框架或者cms,配置属于他的规则
开启OpenRasp
最后就是开启防提权了
刚刚的文件包含漏洞,拦截
tp5的rce,拦截
假设黑客都成功绕过了上面的拦截,接下来就是利用WebShell执行命令了,直接被OpenRasp拦截
假设绕过了OpenRasp,黑客肯定要尝试进行系统命令执行,被宝塔防提权拦截,如果设置了提醒还会发邮件提醒,让你第一时间收到网站被黑的消息
总结:
通过各个方面去剖析黑客的一个攻击流量。然后达到一个各个方向的一个防御。和通过这种案例来结合实际的用法。能更好的达到一个防御的效果
三、溯源小技巧
Nginx 记录POST记录并设置日志只允许追加
之前想融入到默认配置中。但是还是有一些会出现疑问。只能以文章的形式来配置
之前想过异步的存储日志的方式。尝试udp 的方式也是挺消耗性能。未找到一种合理的解决方案。
一、Nginx 的默认日志文件如下:
#设定日志格式,main是默认的格式log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
二、Nginx的内置函数
$args #请求中的参数值$query_string #同 $args$arg_NAME #GET请求中NAME的值$is_args #如果请求中有参数,值为"?",否则为空字符串$uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如"/foo/bar.html"。$document_uri #同 $uri$document_root #当前请求的文档根目录或别名$host #优先级:HTTP请求行的主机名>"HOST"请求头字段>符合请求的服务器名.请求中的主机头字段,如果请求中的主机头不可用,则为服务器处理请求的服务器名称$hostname #主机名$https #如果开启了SSL安全模式,值为"on",否则为空字符串。$binary_remote_addr #客户端地址的二进制形式,固定长度为4个字节$body_bytes_sent #传输给客户端的字节数,响应头不计算在内;这个变量和Apache的mod_log_config模块中的"%B"参数保持兼容$bytes_sent #传输给客户端的字节数$connection #TCP连接的序列号$connection_requests #TCP连接当前的请求数量$content_length #"Content-Length" 请求头字段$content_type #"Content-Type" 请求头字段$cookie_name #cookie名称$limit_rate #用于设置响应的速度限制$msec #当前的Unix时间戳$nginx_version #nginx版本$pid #工作进程的PID$pipe #如果请求来自管道通信,值为"p",否则为"."$proxy_protocol_addr #获取代理访问服务器的客户端地址,如果是直接访问,该值为空字符串$realpath_root #当前请求的文档根目录或别名的真实路径,会将所有符号连接转换为真实路径$remote_addr #客户端地址$remote_port #客户端端口$remote_user #用于HTTP基础认证服务的用户名$request #代表客户端的请求地址$request_body #客户端的请求主体:此变量可在location中使用,将请求主体通过proxy_pass,fastcgi_pass,uwsgi_pass和scgi_pass传递给下一级的代理服务器$request_body_file #将客户端请求主体保存在临时文件中。文件处理结束后,此文件需删除。如果需要之一开启此功能,需要设置client_body_in_file_only。如果将次文件传 递给后端的代理服务器,需要禁用request body,即设置proxy_pass_request_body off,fastcgi_pass_request_body off,uwsgi_pass_request_body off,or scgi_pass_request_body off$request_completion #如果请求成功,值为"OK",如果请求未完成或者请求不是一个范围请求的最后一部分,则为空$request_filename #当前连接请求的文件路径,由root或alias指令与URI请求生成$request_length #请求的长度 (包括请求的地址,http请求头和请求主体)$request_method #HTTP请求方法,通常为"GET"或"POST"$request_time #处理客户端请求使用的时间,单位为秒,精度毫秒;从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。$request_uri #这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI,不包含主机名,例如:"/cnphp/test.php?arg=freemouse"$scheme #请求使用的Web协议,"http" 或 "https"$server_addr #服务器端地址,需要注意的是:为了避免访问linux系统内核,应将ip地址提前设置在配置文件中$server_name #服务器名$server_port #服务器端口$server_protocol #服务器的HTTP版本,通常为 "HTTP/1.0" 或 "HTTP/1.1"$status #HTTP响应代码$time_iso8601 #服务器时间的ISO 8610格式$time_local #服务器时间(LOG Format 格式)$cookie_NAME #客户端请求Header头中的cookie变量,前缀"$cookie_"加上cookie名称的变量,该变量的值即为cookie名称的值$http_NAME #匹配任意请求头字段;变量名中的后半部分NAME可以替换成任意请求头字段,如在配置文件中需要获取http请求头:"Accept-Language",使用$http_accept_language即可$http_cookie$http_host #请求地址,即浏览器中你输入的地址(IP或域名)$http_referer #url跳转来源,用来记录从那个页面链接访问过来的$http_user_agent #用户终端浏览器等信息$http_x_forwarded_for$sent_http_NAME #可以设置任意http响应头字段;变量名中的后半部分NAME可以替换成任意响应头字段,如需要设置响应头Content-length,$sent_http_content_length即可$sent_http_cache_control$sent_http_connection$sent_http_content_type$sent_http_keep_alive$sent_http_last_modified$sent_http_location$sent_http_transfer_encoding
如果只是记录POST的话。只需要加一个参数$request_body
如下:
log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" "$request_body"';
然后找到网站的配置文件
点击保存即可。访问之后呢,返回的日志格式为
192.168.10.1 - - [06/Aug/2020:15:55:41 +0800] "GET / HTTP/2.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36" "-" "-"192.168.10.1 - - [06/Aug/2020:16:01:56 +0800] "POST / HTTP/2.0" 405 552 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36" "-" "id=1"
POST 的日志的记录会在最后面。这样不影响大多数数据分析工具。
三、设置日志只允许追加
有时候大多数情况下,黑客都会及时的清理日志。这个时候需要配置一些让人恶心的动作了
chattr +a /www/wwwlogs/*.log
当对方尝试清空日志的时候
会被直接拒绝清空日志。
有时候会碰到日志切割的问题。只需要在日志切割的地方取消a 然后切割完之后加上去即可
取消a 的方法
chattr-a/www/wwwlogs/*.log
总结:
如上的方式是为了能让所有的访问日志不留余力的在你面前展示。可以通过这些攻击日志来确认你的漏洞点的位置,能达到一个及时响应的一个效果。(PS:这个需要自己一个个做设置,网站多的话可能会自闭)
END
猜你还喜欢
- 06-04 [站长技术] 如何开启WordPress Multisite多站点网络
- 03-29 [环境测试] Hexo部署GitHub Pages
- 03-22 [源码设置] 如何设置Xiuno BBS URL-Rewrite(伪静态设定)
- 03-06 [建站交流] PicGo + smms 构建图床
- 11-18 [emlog技巧] Emlog非插件显示评论者IP属地
- 11-09 [网站维护] WordPress 后台速度慢?加快仪表板速度的 15 种方法
- 11-09 [WordPress插件] 10 个最好用的 WordPress 聊天机器人插件(免费和付费)
- 11-09 [WordPress开发] 探索 WordPress 6.3 中的增强样板(Patterns)
- 11-09 [网站维护] 无需插件即可优化 WordPress 速度的 12 种策略
- 11-09 [网站安全] WordPress 安全统计:WordPress 到底有多安全?
- 09-20 [jsp技术] JSP ssm 特殊人群防走失系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
- 09-15 [Lightsail容器] AWS Lightsail VPS:一种在云中运行容器的简单方法
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[电影] 《环太平洋两部合集》 4K REMUX原盘 [杜比视界] 国英双语音轨 [内封特效字幕] [133.8G]
[电影] 异人之下 The Traveller 2024✨【影版】【4K正式版/HQ超高码/DDP5.1】✚【1080高码】无水印/无压缩
[动漫] 头文字D 动漫 (1998) S01-S06季 1080P 国粤日音轨 续作 剧场版 电影
[小说] 知轩藏书全站7667册txt小说合集精心校对版
[杂志] 电脑爱好者杂志14年 超全 [PDF]
[电影] 西游记全部版本-4K高清修复-总计384G-1986+1996+1998+2002+2010浙版+西游记后传
[纪录片] 【国家地理百年纪念典藏】超经典100集全 MP4格式 (绝佳学习资料)27GB
[纪录片] B站食贫道收费纪录片 *迷失东京* [1080P] 揭露日本大家感兴趣却不为人知的秘密
[网络线报] 城通网盘福利线报解析器 - 获取直连下载地址
[福利线报] 一个「脚本」搞定六大网盘(百度/阿里/天翼/迅雷/夸克/移动)
[游戏] 《黑神话悟空》免安装学习版【全dlc整合完整版】+Steam游戏解锁+游戏修改工具!
[动画] 《名侦探柯南》名侦探柯南百万美元的五菱星 [TC] [MP4]
[电视剧集] [BT下载][黑暗城市- 清扫魔 Dark City: The Cleaner 第一季][全06集][英语无字][MKV][720P/1080P][WEB-RAW]
[涨点姿势] 男性性技宝典:14招实战驭女术——爱抚、按摩、催情、姿势、高潮全攻略
[动画] 2002《火影忍者》720集全【4K典藏版】+11部剧场版+OVA+漫画 内嵌简日字幕
[剧集] 《斯巴达克斯》1-4季合集 无删减版 1080P 内嵌简英特效字幕
[CG剧情] 《黑神话:悟空》158分钟CG完整剧情合集 4K120帧最高画质
[短剧] 被下架·禁播的羞羞短剧·午夜短剧合集
[游戏] 黑神话悟空离线完整版+修改器
[图像处理] 光影魔术手v4.6.0.578绿色版
[影视] 美国内战 4K蓝光原盘下载+高清MKV版/内战/帝国浩劫:美国内战(台)/美帝崩裂(港) 2024 Civil War 63.86G
[影视] 一命 3D 蓝光高清MKV版/切腹 / 切腹:武士之死 / Hara-Kiri: Death of a Samurai / Ichimei 2011 一命 13.6G
[影视] 爱情我你他 蓝光原盘下载+高清MKV版/你、我、他她他 2005 Me and You and Everyone We Know 23.2G
[影视] 穿越美国 蓝光原盘下载+高清MKV版/窈窕老爸 / 寻找他妈…的故事 2005 Transamerica 20.8G
[电影] 《黄飞鸿》全系列合集
[Android] 开罗游戏 ▎像素风格的模拟经营的游戏厂商安卓游戏大合集
[游戏合集] 要战便战 v0.9.107 免安装绿色中文版
[资源] 精整2023年知识星球付费文合集136篇【PDF格式】
[系统]【黑果小兵】macOS Big Sur 11.0.1 20B50 正式版 with Clover 5126 黑苹果系统镜像下载
[美图] 【经典收藏美图集合】1500多张韩国美女高清图片让你的收藏夹更加丰富多彩
- 最新评论
-
有靳东!嘻嘻奥古斯都.凯撒 评论于:10-28 流星花园是F4处女作也是4人集体搭配的唯一一部!奥古斯都.凯撒 评论于:10-28 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢AAAAA 评论于:10-26 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢password63 评论于:10-26 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢WillKwok 评论于:10-09 感谢分享1234123 评论于:10-07 太好了终于找到了谢谢Tom 评论于:10-07 谢谢分享loonghd 评论于:09-30
- 热门tag