利用RASP对金戈企业网站举行安全防护
基于RASP技能的OpenRASP
早在2014年,Gartner公司提出了RASP(Runtime Application Self-Protection,应用运行时自我掩护)的理念,并将其列为应⽤安全范畴的“关键趋势”。
百度的OpenRASP将RASP技能举行了开源实现,OpenRASP 扬弃了传统WAF依靠http哀求特性检测攻击的模式,直接注入到被掩护应用的服务中提供函数级别的实时防护,可以在不更新计谋以及不升级被掩护应用代码的情况下检测/防护未知弊端。OpenRASP直接将其掩护引擎集成到应用步调服务器中。它可以监控 各种变乱,包罗数据库查询、文件利用和网络哀求等。
与 WAF等边界控制办理方案差别,当攻击发生时,WAF将恶意哀求与其署名匹配并克制它。OpenRASP采取差别的方法,通过Hook(挂钩)敏感函数,查抄/克制通报给它们的输入。这意味着OpenRASP比WAF工作在更底层,无论是什么样的哀求,终极都要通报给动态步调语言的函数行止理,OpenRASP通过挂钩敏感函数,监测恶意举动。
如今,OpenRASP仅支持Java和PHP两种开发语言。可以在Linux利用体系中的PHP5.35.6,7.07.3,RHELL/CentOS 6 以及更高版本情况中安装。OpenRASP具体先容文档请参阅:
https://rasp.baidu.com/download/OpenRASP Internals.pdf
OpenRASP的主动化安装
- 注:此处过程示例金戈网站使用的PHP版本为5.5.38。
复制代码 起首,下载OpenRASP,官方地点:https://packages.baidu.com/app/OpenRASP/release/,下载前须要查抄PHP的Thread Safety选项。我们之前实行情况的PHP版本都是nts版本,即非Thread Safety版本。但照旧通过phpinfo确认一下Thread Safety选项的值,假如是disabled,就下载nts版本rasp-php-linux.tar.bz2。此次实行选用的是1.36版本。- ts(Thread-Safety)即线程安全,多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其它线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染,php以ISAPI方式加载的时候选择这个版本。
复制代码- nts(None-Thread Safe)即非线程安全,就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的是脏数据,php以fast-cgi方式运行的时候选择这个版本,具有更好的性能。
复制代码 别的,安装OpenRASP须要以下PHP扩展:pdo、pcre、json,请通过phpinfo查察是否安装了这三个扩展。
下载OpenRASP的安装文件rasp-php-linux.tar.bz2,再上传输到Linux上,也可以在Linux上利用wget直接下载。
tar.bz2格式的压缩包须要利用下令:tar -jxvf rasp-php-linux.tar.bz2来解压。
假如提示以上内容,bzip2:cannot exec,则是没有安装bzip2扩展,利用下令:yum -y install bzip2安装bzip2后再实行下令:tar -jxvf rasp-php-linux.tar.bz2即可正常解压。进入解压后的文件夹之后的内容应该如下图所示:
实行以下下令,开始主动化安装。- php install.php -d /opt/rasp
复制代码 此中,-d /opt/rasp是指定安装目次,用于存储检测插件、报警日记等等,可根据现实情况调解。在某些情况下,php cli和php-fpm利用的ini差别,主动安装步调大概会失败。
如遇以下情况,则需利用下令setenforce 0临时关闭Selinux,然后重新实行安装下令。
待重新实行下令后,正常返回应该是以下的情况:
末了一点告诉我们安装完成,没有错误,请重启PHP服务。
安装完成之后,默认的是观察模式,发现非法哀求只会写入日记文件,不拦截。因此须要手动开启拦截功能。编辑official.js文件,将 all_log 的值从true改为 false,打开拦截模式。- vi /opt/rasp/plugins/official.js
复制代码 编辑完成后,生存文件并重启服务。
在web根目次创建一个phpinfo.php文件,其内容为:- [/code]在欣赏器中访问此网页,搜索OpenRASP,假如查询到OpenRASP表明已经安装乐成。
- [align=center][img]https://img2024.cnblogs.com/blog/1885411/202605/1885411-20260504144304190-1880116368.png[/img][/align][size=5]验证OpenRASP的防护结果[/size]
- 在测试OpenRASP之前,我们对金戈网站举行SQL注入,是可以正常获取想要的内容的:
- http://192.168.142.146/new.php?id=0 union select 1,2,3,4,root_name,root_pass from root
- 安装完OpenRASP后,再次利用以上SQL注入语句举行结果测试,结果如下图所示。
- [align=center][img]https://img2024.cnblogs.com/blog/1885411/202605/1885411-20260504144304470-1448984335.png[/img][/align]OpenRASP检测到了恶意举动,将网页重定向到了这个页面,并提示“您的哀求包罗恶意举动,已被服务器拒绝”。
- OpenRASP的主动化卸载方法如下:
- 进入 rasp 安装包解压目次,比方rasp-php-2021-02-07,并实行如下下令
- [code]php uninstall.php -d <openrasp安装目录>
复制代码 然后重新启动web服务。完成卸载。之后通过phpinfo的输出确认openrasp已经卸载乐成。
由于接下来,我们要举行OpenRASP手动安装的实行,因此须要卸载。大概也可以利用假造机快照技能规复到没有安装OpenRASP之前的状态。
手动安装OpenRASP
- 注:此处过程示例金戈网站使用的PHP版本为5.3.29。
复制代码 手动安装前,须要找到当前php的扩展安装目次和php设置文件的目次。
在欣赏器中访问phpinfo.php文件打开这个页面,利用搜索功能,快捷键Ctrl+F搜索关键词:extension_dir,定位到PHP扩展安装目次,从下图中可以看到,我的PHP扩展安装目次是:
/usr/local/phpstudy/soft/php/php-5.3.29/lib/php/extensions/no-debug-non-zts-20090626
然后须要找到php.ini设置文件的路径,通过搜索关键词:Loaded Configuration File,即可定位到php设置文件目次,从下图中可以看到,我的PHP设置文件目次是:/usr/local/phpstudy/soft/php/php-5.3.29/etc/php.ini
确定好这两个目次后,开始安装OpenRASP。将已经下载好OpenRASP压缩包上传到Linux,并解压并进入其目次,找到与PHP对应版本的OpenRASP.so文件。
选择与当前情况PHP版本符合合的openrasp.so地点目次并进入,然后利用以下下令,将openrasp.so文件复制到php的扩展目次内:- cp openrasp.so /usr/local/phpstudy/soft/php/php-5.3.29/lib/php/extensions/no-debug-non-zts-20090626/openrasp.so
复制代码 通过ls下令查察PHP拓展目次,确认openrasp.so复制完成。
还须要给openrasp.so文件755权限:- chmod 755 /usr/local/phpstudy/soft/php/php-5.3.29/lib/php/extensions/no-debug-non-zts-20090626/openrasp.so
复制代码 然后,须要创建OpenRASP的安装目次,我们这里照旧利用官方默认目次:/opt/rasp,这个目次将会用于存储检测插件、报警日记、插件日记等内容,须要手动创建,并包管 PHP 历程可以写入:- [root@localhost ~]# mkdir -p /opt/rasp
复制代码- [root@localhost ~]# chmod 777 -R /opt/rasp
复制代码 末了,修改 php.ini设置文件,添加如下内容:- vi /usr/local/phpstudy/soft/php/php-5.3.29/etc/php.ini
复制代码- openrasp.root_dir=/opt/rasp
复制代码 生存退出后,我们还须要安装检测插件,进入下载并解压后的OpenRASP目次,直接将plugins目次移动到/opt/rasp目次下:- mv plugins/ /opt/rasp/plugins
复制代码 同样地,还须要编辑official.js文件,并将将“all_log: true,”更改为“all_log: false,”,由于默认发现非法哀求只会写入日记文件,打开这个功能就是为了拦截非法哀求。- vi /opt/rasp/plugins/official.js
复制代码 然后重启PHP服务,并利用欣赏器打开phpinfo页面,利用搜索功能搜索关键词:openrasp,即可查询到openrasp已启用。之后再次利用SQL注入语句,测试拦截功能是否收效。
总结
我们只利用了少量的测试方法,开端展示了WAF和OpenRASP的防护结果。有爱好的读者可以利用一些网站弊端综合扫描工具,如Acunetix WVS、AppScan、Netsparker、OWASP ZAP、OpenVAS等,对网站举行综合扫描,全面测试WAF和OpenRASP的防护结果。
免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金. |