OpenResty
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。然后通过他来搭建WAF防火墙系统。官网地址下载地址 https://openresty.org/cn/download.html
安装OpenResty
1)安装对应好软件1
yum install -y readline-devel pcre-devel openssl-devel git wget vim openssl-devel gcc curl
2)下载OpenResty1
wget https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz --no-check-certificate
3)解压编译安装1
2
3
4
5tar -zxvf ngx_openresty-1.9.3.2.tar.gz
cd ngx_openresty-1.9.3.2
./configure --prefix=/usr/local/openresty --with-luajit --with-http_stub_status_module --with-pcre --with-pcre-jit
gmake
gmake install
WAF的列表
支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。
支持URL白名单,将不需要过滤的URL进行定义。
支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
支持CC攻击防护,单个URL指定时间的访问次数,超过设定值,直接返回403。
支持Cookie过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
支持URL过滤,匹配自定义规则中的条目,如果用户请求的URL包含这些,返回403。
支持URL参数过滤,原理同上。
支持日志记录,将所有拒绝的操作,记录到日志中去。
日志记录为JSON格式,便于日志分析,例如使用ELKStack进行攻击日志收集、存储、搜索和展示。
配置waf规则
1)下载waf1
git clone https://github.com/unixhot/waf.git
2)拷贝配置文件1
cp -a ./waf/waf /usr/local/openresty/nginx/conf/
3)配置规则1
vim /usr/local/openresty/nginx/conf/nginx.conf
把下面代码拷贝到http中1
2
3
4lua_shared_dict limit 50m;
lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua";
access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua";
修改WAF的信息 具体参数配置参考 https://github.com/loveshell/ngx_lua_waf1
vim /usr/local/openresty/nginx/conf/waf/config.lua
OpenRASP
OpenRASP 是一个百度安全旗下的免费开源安全项目,全称应该是:Opensource Runtime Application Self-Protection 开源实时程序自保护系统。
更想详细了解OpenRASP:https://www.freebuf.com/articles/web/164413.html
但是目前,OpenRASP 支持 Java 和 PHP 两种开发语言,那也希望以后能支持各种类型。
软件兼容性 https://rasp.baidu.com/doc/install/compat.html
下载漏洞环境
1)安装jdk和关闭防火墙
1 | yum install epel-release -y |
2)安装tomcat1
2
3
4
5
6
7
8
9
10
11
12wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
tar zxvf apache-tomcat-8.5.34.tar.gz
mv apache-tomcat-8.5.34 /usr/local/tomcat
find / -name "java" ##找到/jre/bin/java的安装路径
vim /usr/local/tomcat/bin/catalina.sh
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
JRE_HOME=$JAVA_HOME/jre
3)手动插件tomcat启动配置文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15vim /usr/lib/systemd/system/tomcat8.service
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=oneshot
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
4)开机启动tomcat1
2systemctl enable tomcat8
systemctl start tomcat8.service
5)配置tomcat参数来正确访问war包页面1
vim /usr/local/tomcat/conf/tomcat-users.xml
最后添加上1
2
3
4
5<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="123ccc" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
1 | vim /usr/local/tomcat/webapps/manager/META-INF/context.xml |
把默认的<Valve className 修改为下面参数1
2<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
重启服务1
systemctl restart tomcat8
6)下载漏洞平台
https://github.com/baidu-security/openrasp-testcases/releases
下载vulns.war部署到tomcat上
点击vulns就能访问测试的漏洞平台页面
安装单机版openrasp
1)下载并解压openrasp的压缩包
下载地址 https://github.com/baidu/openrasp/releases/
1 | wget https://github.com/baidu/openrasp/releases/download/v1.0/rasp-java.tar.gz |
2)java方式安装压缩包1
2
3java -jar RaspInstall.jar -install /usr/local/tomcat/
systemctl restart tomcat8
3)手动安装压缩包 出现10004错误代码时1
2
3
4
5
6
7
8cp -rf rasp /usr/share/tomcat/
OpenRASP 需要在 rasp 目录下释放一些动态链接库,所以还需要修改 rasp 目录的权限,e.g
chmod 777 -R rasp
对于使用 yum 安装的 tomcat,
你需要创建 /etc/tomcat/conf.d/rasp.conf,并写入以下内容
JAVA_OPTS="-javaagent:${CATALINA_HOME}/rasp/rasp.jar ${JAVA_OPTS}"
JAVA_OPTS="-Dlog4j.rasp.configuration=file://${CATALINA_HOME}/rasp/conf/rasp-log4j.xml ${JAVA_OPTS}"
openrasp后台管理
1)安装Mongodb1
2
3
4
5
6
7
8
9
10
11
12vim /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
yum install -y mongodb-org
systemctl start mongod
2)安装Elasticsearch
去官网下载最新的版本 https://www.elastic.co/downloads/elasticsearch 或者把最新的下载地址用wget命令下载rpm包或者tar.gz包1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz
创建普通用户使用1
2
3useradd Elasticsearch
mv elasticsearch-7.1.0 /usr/local/elasticsearch
chown -R Elasticsearch /usr/local/elasticsearch
进行配置1
2
3
4
5
6vim /usr/local/elasticsearch/config/elasticsearch.yml
network.host: 127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts
discovery.zen.minimum_master_nodes
使用rpm包安装1
2
3
4
5
6
7vim /etc/elasticsearch/elasticsearch.yml
network.host: 127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["host1"]
systemctl start elasticsearch
如果启动会出现jdk错误问题。1
sysctl -w vm.max_map_count=262144
或者永久性修改1
/etc/sysctl.conf
1 | vim /usr/java/elasticsearch/config/jvm.options |
将-Xmx2g改成-Xmx256m
,也就是heap size [268435456] /1024/1024的值
如果:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]这个错误(切换到root操作)1
/etc/security/limits.conf seven hard nofile 65536
修改后重新登录seven用户,使用如下命令查看是否修改成功1
ulimit -Hn
启动:1
/usr/local/elasticsearch/bin/elasticsearch -d
安装后台系统
去https://github.com/baidu/openrasp/releases 下载rasp-cloud.tar.gz
1
2
3
4
5
6
7wget https://github.com/baidu/openrasp/releases/download/v1.0/rasp-cloud.tar.gz
tar zxvf rasp-cloud.tar.gz
vim /usr/local/src/rasp-cloud-2019-04-17/conf/app.conf
PanelServerURL = http://192.168.80.101:8086
AgentServerURL = http://192.168.80.101:8086
修改es和mongodb 默认是127.0.0.1就可以不修改,并启动服务1
/usr/local/src/rasp-cloud-2019-04-17/rasp-cloud -d
http://ip:8086
访问管理后台。其中,后台用户名固定为 openrasp
,初始密码为 admin@123
添加客户端
1)下载 Java Agent 安装包1
2
3curl https://packages.baidu.com/app/openrasp/release/1.0/rasp-java.tar.gz -o rasp-java.tar.gz
tar -xvf rasp-java.tar.gz
cd rasp-2019-04-24
2) 执行 RaspInstall 进行安装1
java -jar RaspInstall.jar -install /usr/local/tomcat -appid db8076ce5095ee15b84741ea808dada22ed4a03e -appsecret Tt2gBKm8QsKBwqpu5v9PQV3lo64vEMhkzpKbjVIQZsS -backendurl http://192.168.80.101:8086/
3)重启 Tomcat/JBoss/SpringBoot 应用服器1
systemctl restart tomcat8
点击主机管理就可以看见本机的信息,可以点击查看攻击事件来获得攻击信息