Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写

Centos7下基于LAMP部署modsecurity并编写简单sql注入环境
防火墙rules的验证和编写
时间:2019-12-02
目录:
一、 部署LAMP
二、 Modsecurity部署
三、 Mysql-php学习及Sql注入环境搭建与验证
四、 Rules学习以及编写验证
五、 总结
六、 尚未解决的问题
七、 参考文献

一、 LAMP部署:

  1. 由于一些版本问题,卸载之前的mysql,httpd,php。
rpm -qa | grep httpd
rpm -qa | grep mysql
rpm -qa | grep php

找到的东西 yum remove 掉

find / -name mysql
find / -name php
find / -name httpd

找的的东西 rm -rf 掉

rpm -qa | grep mysql
  1. CentOS 7.0 默认使用的是firewall作为防火墙,修改为iptables防火墙
systemctl stop firewalld.service

systemctl disable firewalld.service

yum install iptables-services

vim /etc/sysconfig/iptables

增加下面两行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
systemctl restart iptables.service

systemctl enable iptables.service

关闭SELINUX

vi /etc/selinux/config

编辑 config 文件内容

#SELINUX=enforcing
#SELINUXTYPE=targeted
SELINUX=disabled

使配置立即生效

setenforce 0
  1. 下面就是常规的安装,启动,开机启动等,部分记录。
    安装MySQL
  2. 运行以下命令更新YUM源。
    rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
  3. 运行以下命令安装MySQL。
yum -y install mysql-community-server
  1. 运行以下命令查看MySQL版本号。
mysql -V

返回结果如下所示,表示MySQL安装成功。

mysql  Ver 14.14 Distrib 5.7.28, for Linux (x86_64) using  EditLine wrapper

安装PHP

  1. 更新YUM源。
    i. 运行以下命令添加IUS源。
    ii. #运行命令前,请将<版本号>替换为当前可用的版本号。
yum install -y http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-<版本号>.ius.centos7.noarch.rpm

本教程使用的ius-release版本为1.0-15,因此命令为:
yum install -y http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-15.ius.centos7.noarch.rpm
查找可用版本号的方法如下:
a. 访问ius community网站。
b. 在搜索框中输入ius-release。
c. 选择带有centos7的版本。红框中的内容即为可用的版本号,如下图所示。
在这里插入图片描述
iii. 运行以下命令添加Webtatic源。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
2. 运行以下命令安装PHP。

yum -y install php70w-devel php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64  php70w-pdo.x86_64   php70w-mysqlnd  php70w-fpm php70w-opcache php70w-pecl-redis php70w-pecl-mongo
  1. 运行以下命令查看PHP版本。
php -v

返回结果如下所示,表示安装成功。

PHP 7.0.33 (cli) (built: Dec  6 2018 22:30:44) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.33, Copyright (c) 1999-2017, by Zend Technologies   

配置MySQL

  1. 运行以下命令启动MySQL服务。
systemctl start mysqld
  1. 运行以下命令设置MySQL服务开机自启动。
systemctl enable mysqld
  1. 运行以下命令查看/var/log/mysqld.log文件,获取并记录root用户的初始密码。
grep 'temporary password' /var/log/mysqld.log

返回结果如下:

2016-12-13T14:57:47.535748Z 1 [Note] A temporary password is generated for root@localhost: 

说明 下一步重置root用户密码时,会使用该初始密码。
4. 运行以下命令配置MySQL的安全性。

mysql_secure_installation

安全性的配置包含以下五个方面:
i. 重置root账号密码。
ii. Enter password for user root: #输入上一步获取的root用户初始密码
iii. The ‘validate_password’ plugin is installed on the server.
iv. The subsequent steps will run with the existing configuration of the plugin.
v. Using existing password for root.
vi. Estimated strength of the password: 100
vii. Change the password for root ? (Press y|Y for Yes, any other key for No) : Y #是否更改root用户密码,输入Y
viii. New password: #输入新密码,长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号可以是()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/
ix. Re-enter new password: #再次输入新密码
x. Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
4. 配置环境

  1. Apache配置
    编辑 httpd.conf 文件内容
vi /etc/httpd/conf/httpd.conf

//添加ServerSignature On (在错误页中显示Apache的版本)
ServerSignature On
//允许服务器执行CGI及SSI,禁止列出目录
Options Indexes FollowSymLinks #修改为:Options Includes ExecCGI FollowSymLinks
//允许.htaccess
AllowOverride None #修改为:AllowOverride All
//设置不在浏览器上显示树状目录结构
#Options Indexes FollowSymLinks #修改为 Options FollowSymLinks
//设置默认首页文件,增加index.php
DirectoryIndex index.html#修改为:DirectoryIndex index.html index.htm index.php
//添加MaxKeepAliveRequests 500 (增加同时连接数)
MaxKeepAliveRequests 500
删除默认测试页

rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html
  1. php配置
    编辑 php.ini 文件内容
vi /etc/php.ini
//设置时区,把前面的分号去掉
date.timezone = PRC
//禁止显示php版本的信息
expose_php = Off
//支持php短标签
short_open_tag = ON
重启apache
systemctl restart httpd.service

测试服务

cd /var/www/html
vi index.php

输入下面内容


phpinfo();
?>
  1. 报错记录
    操作完成之后发现访问不了默认网页index.html,解决:
    运行下面一条命令即可把tcp的80端口设置成允许任何IP都可以访问:
iptables -I INPUT -p TCP --dport 80 -j ACCEPT
 service iptables save
  1. 完成
    Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第1张图片
    二、 下面部署modsecurity
    因为搜索谷歌中英文完全没有关于apache和modecurity3.X的信息,所以选择安装最新的2.X:2.9.3。关于nginx部署3.0的记录查看另一篇文档。
  1. yum直接安装
yum install mod_security -y
  1. mod_security.conf是其设置文件,查看一下;
find / | grep mod_security.conf
/etc/httpd/conf.d/mod_security.conf

vim /etc/httpd/conf.d/mod_security.conf

看到
Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第2张图片

Ps:
SecRuleEngine On
(拦截)
SecRuleEngine DetectionOnly
(仅记录)

规则引擎开启,查requestbody均开启;
也看到了它包含的rules路径;
只是查看这些路径下,并没有什么文件;
3) 下载并配置OWASP(开放Web应用程序安全性项目)核心规则集。

cd /etc/httpd
git clone https://github.com/SpiderLabs/owasp-modsecurity- crs.git
mv owasp-modsecurity-crs modsecurity-crs
cd modsecurity-crs
cp crs-setup.conf.example modsecurity_crs_10_config.conf

编辑httpd配置文件http.conf,并添加:

Include modsecurity-crs/modsecurity_crs_10_config.conf
Include modsecurity-crs/rules/*.conf

Note:这些规则也可以添加到上面的/etc/httpd/conf.d/mod_security.conf
格式如下:

IncludeOptional modsecurity-crs/modsecurity_crs_10_config.conf
IncludeOptional modsecurity-crs/rules/*.conf

但注意不能两个都添加,否则启动apache时候报错:
Modsecurity:Find the same id of ……in 上面路径之一。

 重启Apache:
systemctl restart httpd

三、 Mysql-php学习及Sql注入环境搭建与验证
资料来源菜鸟教程。
WHERE 子句用于提取满足指定标准的的记录。
SELECT column_name(s)
FROM table_name
WHERE column_name operator value
实例
下面的实例将从 “Persons” 表中选取所有 FirstName=‘Peter’ 的行:


$con=mysqli_connect("localhost","username","password","database");
// 检测连接
if (mysqli_connect_errno())
{
    echo "连接失败: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM Persons
WHERE FirstName='Peter'");

while($row = mysqli_fetch_array($result))
{
    echo $row['FirstName'] . " " . $row['LastName'];
    echo "
"
; } ?>

Note:php语句从“”结束;
定义变量前面使用“$”;
mysqli_connect() 函数打开一个到 MySQL 服务器的新的连接。mysqli_connect(host,username,password,dbname,port,socket);
我们使用前四个即可
参数 描述
host 可选。规定主机名或 IP 地址。
username 可选。规定 MySQL 用户名。
password 可选。规定 MySQL 密码。
dbname 可选。规定默认使用的数据库。
port 可选。规定尝试连接到 MySQL 服务器的端口号。
socket 可选。规定 socket 或要使用的已命名 pipe。

mysqli_connect_errno() 函数返回上一次连接错误的错误代码;
PHP echo 和 print 语句
echo 和 print 区别:
• echo - 可以输出一个或多个字符串
• print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

运算符之一“.”
a . b 并置 连接两个字符串 “Hi” . “Ha” HiHa

mysqli_query() 函数执行某个针对数据库的查询。
mysqli_query(connection,query,resultmode);
我们使用前两个即可
参数 描述
connection 必需。规定要使用的 MySQL 连接。
query 必需,规定查询字符串。
resultmode 可选。一个常量。可以是下列值中的任意一个:
• MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
• MYSQLI_STORE_RESULT(默认)

mysqli_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有。
注释:该函数返回的字段名是区分大小写的。
mysqli_fetch_array(result,resulttype);

参数 描述
result 必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。
resulttype 可选。规定应该产生哪种类型的数组。可以是以下值中的一个:
• MYSQLI_ASSOC
• MYSQLI_NUM
• MYSQLI_BOTH

PHP 表单处理
有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。
实例
下面的实例包含了一个 HTML 表单,带有两个输入框和一个提交按钮。
form.html 文件代码:

<html> 
<head>
 <meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)
</title> 
</head> 
<body> 
<form action="welcome.php" method="post"> 
名字: <input type="text" name="fname"> 
年龄: <input type="text" name="age"> 
<input type="submit" value="提交"> 
</form> 
</body>
 </html>

当用户填写完上面的表单并点击提交按钮时,表单的数据会被送往名为 “welcome.php” 的 PHP 文件:
welcome.php 文件代码:
欢迎!
你的年龄是 岁。

我们综合以上两个实例和相关函数及注释实现
input.php:

<html>
</head>
<body>

<form action="find.php" method="post">
firstname: <input type="text" name="fname">
<input type="submit" value="提交">
</form>

</body>
</html>

find.php:


$servername = "localhost";
$username = "root";
$password = "";
$dbname = "";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}

$target=$_POST["fname"];


$result = mysqli_query($conn,"SELECT * FROM MyGuests WHERE firstname='$target'");

while($row = mysqli_fetch_array($result))
{
    echo $row['firstname'] . " " . $row['lastname'] . " " . $row['email'];
    echo "
"
; } mysqli_close($conn); ?>

,最后实现sql注入环境:
在这里插入图片描述
附上数据库内容:
Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第3张图片
输入:Mary:
在这里插入图片描述
输出:
在这里插入图片描述

输入:1 ‘ or 1 = 1 #
在这里插入图片描述
输出:
Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第4张图片
查看防火墙日志:
Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第5张图片
发现对应时间,我的软件及系统,和敏感字:1’or 1 = 1#
下面修改防火墙配置
SecRuleEngine DetectionOnly
仅记录不阻止。
注入成功
在这里插入图片描述
有记录。
Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第6张图片
验证成功

四、 Rules学习以及编写验证
学习记录:
本文旨在显示ModSecurity如何保护Apache Web Server上运行的Web应用程序。下图说明了在标准的Apache Web服务器请求周期内实现的Modsecurity的5个处理阶段。
Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第7张图片
在这5个阶段中,ModSecurity查看HTTP(S)数据并进行分析。这五个阶段旨在提供全面的安全防护。
ModSecurity分为五个阶段
• 请求标头(REQUEST_HEADERS)
• 请求正文(REQUEST_BODY)
• 响应标头(RESPONSE_HEADERS)
• 响应正文(RESPONSE_BODY)
• 记录(LOGGING)
让我们详细了解这些阶段。
phrase1:请求标头
这是Apache开始处理用户请求之前的初始阶段。此阶段中的规则读取并分析HTTP请求标头。此阶段规则的主要重点是在Apache开始处理请求参数之前,在请求标头中查看恶意模式。
此阶段中的规则有助于确定诸如是否缓冲请求正文或如何处理请求正文(例如,将其解析为XML)之类的事情。
Phrase2:请求正文
处理请求标头后,下一行是请求正文。在这一阶段,Apache已收到完整的请求。此阶段中的规则主要与应用程序相关。
ModSecurity在此阶段支持以下三种编码技术,这些天几乎在每台Web服务器中都使用。
• application / x-www-form-urlencoded –用于传输表格数据
• 多部分/表单数据–用于文件传输
• text / xml –用于XML数据
phrase 3:响应标题
此阶段已处理请求,服务器开始发送回请求的数据。就像请求标头规则一样,此阶段规则在将响应正文发送回用户之前,先查看响应标头中要返回的内容。此处的规则有助于做出决策,例如是否缓冲响应正文。
phrase 4:响应主体
一旦响应请求发出绿色信号以缓冲响应正文,就可以部署规则来分析针对每个请求的内容类型。在这里,您可以分析诸如身份验证失败或错误消息之类的响应。
phrase 5:记录
这是ModSecurity用来保护Apache的五个阶段周期的最后一个。此阶段中的规则仅在实际日志记录发生之前放置。在此阶段中,将分析由apache Web服务器生成的日志消息。关于此阶段的一件重要事情是,您不能在此处阻止任何连接,因为它是请求/响应之后的阶段。在这里,您还可以检查在第3阶段和第4阶段不可用的标题。

进行解读:
一、变量variable
绿色:请求变量 蓝色:server变量 紫色:响应变量 红色:请求体解析变量 青色:时间变量 橙色:实体变量
ModSecurity
Request variables 请求变量
请求变量是从当前事务的请求部分提取的
检查。描述请求行的变量(请求方法、URI和协议)
信息)和请求头信息最早在阶段1和完成时就可用
第2阶段将提供资料。
REQUEST_COOKIES cookie参数
REQUEST_COOKIES_NAMES cookie参数的名字,类型read-only collection
REQUEST_HEADERS 请求头,类型read-only collection
ARGS_NAMES 请求参数的名字, 类型read-only collection
ARGS 请求参数,类型read-only collection
XML xml dom相关的,类型read-only collection

四、动作action
绿色:disruptive action (每个rule只能有1个disruptive action,如果有多个disruptive action,那么只有最后一个有效,在rule chain中,disruptive action只能出现在第一个rule中)
蓝色:flow action
紫色:metadata action
红色 :variable action
黄色:logging action
灰色:special action
黑色:其他
block 相当于占位符,会被上下文的SecDefaultAction 指令中的动作取代
capture 将捕获结果存入TX变量,可以存储10个变量,tx变量集合的下标为0-9
setvar 设置变量
logdata 日志提供的数据作为错误消息的一部分

六、常用操作符
t 事务函数调用 e.g. t:lowercase

语法:SecRule VARIABLES OPERATOR [TRANSFORMATION_FUNCTIONS, ACTIONS]
Variables 以下几种:
Regular variables
Contain only one piece of information, or one string. For example, REMOTE_ADDR, always
contains the IP address of the client.
Collections
Groups of regular variables. Some collections (e.g., ARGS) allow enumeration, making
it possible to use its every member in a rule. Some other collections (e.g., ENV)
are not as flexible, but there is always going to be some way to extract individual regular
variables out of them.
Read-only collections
Many of the collections point to some data that cannot be modified, in which case
the collection itself will be available only for reading.
Read/write collections
When a collection is not based on immutable data ModSecurity will allow you to
modify it. A good example of a read/write collection is TX, which a collection that
starts empty and exists only as long as the currently processed transaction exists.
Special collections
Sometimes a collection is just a handy mechanism to retrieve information from
something that is not organised as a collection but it can seem that way. This is the
case with the XML collection, which takes an XPath expression as a (mandatory) parameter
and allows you to extract values out of an XML file.
Persistent collections
Some collections can be stored and retrieved later. This feature allows you to adopt a
wider view of your systems, for example tracking access per IP address or per session,
or per user account.

正则变量
只包含一条信息或一个字符串。例如,REMOTE_ADDR,总是
包含客户端的IP地址。
集合
常规变量组。有些集合(例如ARGS)允许枚举、生成
可以在一个规则中使用它的每个成员。其他一些集合(例如ENV)

是不是都没有那么灵活,但总会有办法提取出个别的规律呢
变量。
只读集合
在这种情况下,许多集合指向一些无法修改的数据
合集本身仅供阅读。
读/写集合
当一个集合不是基于不可变的数据时,ModSecurity将允许你这样做
修改它。读/写集合的一个好例子是TX,它是一个
开始时为空,并且仅在当前处理的事务存在时才存在。
特殊的集合
有时,集合只是一种方便的检索信息的机制
一些没有被组织成一个集合的东西,但是看起来是这样的。这是
以XML集合为例,它接受XPath表达式作为(强制的)参数
并允许您从XML文件中提取值。
持续的集合
有些集合可以稍后存储和检索。该特性允许您采用a
更广泛的系统视图,例如跟踪访问每个IP地址或每个会话,
或每个用户帐户。

一、ModSecurity的规则
基本格式
SecRule VARIABLES OPERATOR ACTIONS
1
SecRule:ModSecurity主要的指令,用于创建安全规则。

VARIABLES :代表HTTP包中的标识项,规定了安全规则针对的对象。常见的变量包括:ARGS(所有请求参数)、FILES(所有文件名称)等。

OPERATOR:代表操作符,一般用来定义安全规则的匹配条件。常见的操作符包括:@rx(正则表达式)、@streq(字符串相同)、@ipmatch(IP相同)等。

ACTIONS:代表响应动作,一般用来定义数据包被规则命中后的响应动作。常见的动作包括:deny(数据包被拒绝)、pass(允许数据包通过)、id(定义规则的编号)、severity(定义事件严重程度)等。

二、ModeSecurity规则例解
规则1:防XSS攻击
SecRule ARGS|REQUEST_HEADERS "@rx

REQUEST_HEADERS:请求数据头部。

OPERATOR @rx

ACTIONS id:001规定该条规则编号为001;

msg: 'XSS Attack’代表记录信息为:XSS Attack;

severity:ERROR表示严重程度为ERROR;

deny表示拒绝所有请求包;

status:404表示服务器响应状态编号为404。

说明:严重程度分为8级: EMERGENCY (0)、ALERT (1)、CRITICAL (2)、ERROR (3)、WARNING (4)、
NOTICE (5)、INFO (6) 、DEBUG (7)
1
2
规则2:设置白名单
SecRule REMOTE_ADDR “@ipmatch 192.168.1.9” “id:002,phase:1,t:none,
nolog,pass,ctl:ruleEngine=off”
1
2
VARIABLES REMOTE_ADDR:远程主机IP

OPERATOR @ipmatch 192.168.1.9:如果请求主机IP地址为192.168.1.9,则规则执行。

ACTIONS id:002规定该条规则编号为002;

phase:1表示规则执行的范围为请求头部;

t:none表示VARIABLES的值不需要转换(t代表transform);

nolog代表不记录日志;pass代表继续下一条规则;

ctl:ruleEngine=off代表关闭拦截模式,所有规则失效。

说明:phase编号规定如下(就是那个phase):Request Headers (1), Request Body (2), Response Headers (3),
Response Body (4) and Logging (5).
1
2
规则3:
SecRule ARGS:username “@streq admin” chain,deny,id:003
SecRule REMOTE_ADDR “!streq 192.168.1.9”
1
2
VARIABLES ARGS:username所有表示请求参数中的用户名信息。

OPERATOR @streq admin表示用户名等于字符串"admin",则执行ACTIONS。

ACTIONS id:003规定该条规则编号为003;

chain表示用户名等于admin的情况下,必须完成第二行规则的匹配(远程主机IP不是192.168.1.9),才能执行下一个动作;

deny表示所有请求包被拒绝。

自定义规则
SecRule FILES “!\.(?i:jpe?g|gif|png|bmp)$” "deny,tag:‘WEB_ATTACK/FILEUPLOAD’,msg:‘upload
no-picture file’,id:0000001,phase:2“
1
2
SecRule FILES “@contains %00” “deny,tag:‘WEB_ATTACK/FILEUPLOAD’,msg:‘filename
has null character’,id:0000002,phase:2”
1
2

下面编写我自己的rules,使用路径:IncludeOptional modsecurity.d/activated_rules/*.conf

IP是我当前的公网IP,通过之前的日志获取,通过“@ipmatch”和“allow”实现我自己当前IP的白名单:仅记录不阻拦则再次输入注入语句:
在这里插入图片描述
在这里插入图片描述
确实不拦截
Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第8张图片
发现一个小瑕疵:
在modsecurity_nginx3.X下改规则的log包括了关键字“1 ‘ or 1=1#”
但是本环境——modsecurity_apache2.9.3的log不包括这些,原因目前没有探索,,太菜了。
五、 总结
1.Yum是个好东西。
2.对httpd的配置文件,文件夹,大致有认识,比较模糊,
3.比nginx_modecurity部署要简单一些
六、 尚未解决的问题
对比手动下载编译modsecurity有以下问题:

1.owasp-modsecurity-crs规则配置文件:crs-setup.conf和 modsecurity的主配置文件:moesecurity.conf
的关系:
2.这个操作没什么用是不是问题一有什么关系。
Centos7下基于LAMP部署modsecurity并编写简单sql注入环境 防火墙rules的验证和编写_第9张图片
3.在手动下载编译时教程中都有类似操作:
在这里插入图片描述
Yum直接安装没有,并且http.conf中一直都没有,ps:这个文件在/usr/lib64/httpd/modules/mod_security2.so

解决方法:有时间再次尝试手动下载编译安装modsecurity,问题可能会得到解决。

七、 参考文献

  1. LAMP部署
    https://www.jianshu.com/p/55ec44a8adbc
    https://www.cnblogs.com/han-1034683568/p/8854613.html
    https://blog.csdn.net/hjf161105/article/details/78850658
    https://blog.csdn.net/yuanmo122/article/details/78832208
    https://help.aliyun.com/document_detail/97251.html
    https://blog.csdn.net/Darthis/article/details/80614232
    https://blog.csdn.net/hi_1234567/article/details/9176715
    https://blog.csdn.net/forLightWay/article/details/73971462

  2. Modsecurity部署:
    https://klionsec.github.io/2017/07/31/waf-for-modsecurity/
    https://www.server-world.info/en/note?os=CentOS_7&p=httpd2&f=8
    https://linuxadmin.io/mod_security-installation-apache-centos/
    https://wpcademy.com/how-to-install-mod-security-apache-on-centos-7/
    https://klionsec.github.io/2017/07/31/waf-for-modsecurity/

  3. Mysql-php学习
    菜鸟教程

  4. Rules学习
    https://www.cnblogs.com/wuweidong/p/8559177.html
    https://malware.expert/modsecurity/processing-phases-modsecurity/
    https://blog.csdn.net/qq_36374896/article/details/83316537
    附OWASP规则详解:
    http://f2ex.cn/modsecurity-crs-3-list/

你可能感兴趣的:(SOC)