最近在工作上遇到一点问题,问了大佬、百度,都没有很好地解决;经过大量搜索查阅以及试验,终于将问题解决。于是写下这篇文章以提醒自己,也可供读者参考。

环境:CentOS-7-x86_64-LiveGNOME

-2003.iso+Xshell

版本:nginx/1.16.1 + modsecurity

一、安装相关依赖工具

yum install -y git wget epel-releaseyum install -y gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel lmdb-devel libxml2-devel ssdeep-devel lua-devel libtool autoconf automake

注:如果不成功,可能是yum仓库没装好,此处可自行百度

二、安装Modsecurity

cd /usr/localgit clone https://github.com/SpiderLabs/ModSecurity//执行上面的步骤会生成Modsecurity目录

注:用时较长,大约40分钟,可能会有网速慢或者下载失败的现象,重复尝试几遍就好了

cd ModSecuritygit checkout -b v3/master origin/v3/master

git submodule init

git submodule update

注:用时几分钟。这一步我做了两次,可能是因为网络阻塞。如果不成功,多尝试几次。

sh build.sh

先看看/usr/local下新生成有几个目录:

只有Modsecurity

进入到/usr/local/Modsecurity

//还是在/usr/local/Modsecurity目录下操作./configure make   //需要的时间稍微久一点,10分钟左右      //编译make install                                //安装//上述安装三部曲会在上一级目录/usr/local下 生成modsecurity目录

./configure图示

第一次 make图示(出错) --------  没有出错可略过

根据提示去到/usr/local/include,把对应的文件删了(正常情况下/usr/local存放的是下载的包,不会有诸如bin、include、lib之类的解压目录,所以放心删,一定是之前安装过什么才会存在这些目录),然后回去/usr/local/Modsecurity执行make clean命令

解决方法:

rm /usr/local/include * -rfcd /usr/local/Modsecuritymake cleanmake

由于本人是第二次装nginx+modsecurity,所以才会出现这样的问题

第二次 make图示(成功)

第一次make install图示 ----- 和上面是同样问题 上述问题解决后,该问题也迎刃而解

第二次make install

编译安装三部曲以后,在/usr/local下生成modsecurity目录

三、安装nginx与ModSecurity-nginx

cd /usr/localgit clone https://github.com/SpiderLabs/ModSecurity-nginx//上述步骤会在/usr/local下生成Modsecurity-nginx的目录

wget http://nginx.org/download/nginx-1.16.1.tar.gz//上述步骤会在/usr/local下出现nginx-1.16.1.tar.gz文件

tar -xvzf nginx-1.16.1.tar.gzcd /usr/local/nginx-1.16.1./configure --add-module=/usr/local/ModSecurity-nginx//如果出错,也可以直接./configuremakemake install//做完上述这些步骤 当前目录(/usr/local)就会生成一个nginx的目

./configure --add-module=/usr/local/ModSecurity-nginx 图示

make图示

make install图示

在/usr/local下生成nginx目录

四、测试效果

输入ifconfig查看ip

我的ip:192.168.200.132

启动nginx

/usr/local/nginx/sbin/nginx

尝试启动 发现有问题

使用以下命令解决:

sudo fuser -k 80/tcp

已经没问题了

1、未开启nginx的状态下,用浏览器访问虚拟机配的ip

效果:

2、开启nginx服务后,用浏览器访问虚拟机配的ip:

/usr/local/nginx/sbin/nginx或cd /usr/local/nginx/sbin./nginx

效果:

模拟攻击,测试未启动ModSecurity时的访问效果访问URL为:http://服务器IP/?param=%22%3E%3Cscript%3Ealert(1);%3C/script%3E

结论:配置了nginx服务的虚拟机,只有开启了nginx服务,才能访问其IP

一些网站攻击:譬如SQL注入、XSS攻击,也不会被拦截。

ModSecurity作为一款入侵侦测与防护引擎,它主要是用于Web应用程序,所以也被称为Web应用程序防火墙(WAF)。它可以作为Web服务器的模块或是单独的应用程序来运作。ModSecurity的功能是增强Web Application 的安全性和保护Web application以避免遭受来自已知与未知的攻击。

所以我们需要在linux以及nginx下配置modsecurity

五、最后配置

创建用于存在配置文件的文件夹

mkdir /usr/local/nginx/conf/modsecurity

1、将/usr/local/Modsecurity/modsecurity.conf-recommended

复制到/usr/local/nginx/conf/modsecurity,并重命名为modsecurity.conf;

2、将/usr/local/Modsecurity/unicode.mapping

复制到/usr/local/nginx/conf/modsecurity;

下载规则文件压缩包

owasp-modsecurity-crs-3.3-dev.zip

移动到/usr/local下

解压

unzip owasp-modsecurity-crs-3.3-dev.zip

1、解压后复制crs-setup.conf.example

到/usr/local/nginx/conf/modsecurity/下并重命名为crs-setup.conf;

2、复制rules文件夹

到/usr/local/nginx/conf/modsecurity/下,

同时修改REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example与RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example两个文件的文件名,将".example"删除,可将自己写的规则放置于此两个文件中;

编辑nginx.conf

(/usr/local/nginx/conf/nginx.conf)

在http或server节点中添加以下内容(在http节点添加表示全局配置,在server节点添加表示为指定网站配置):

vim /usr/local/nginx/conf/nginx.conf//在下面添加如下内容,下图所示modsecurity on;modsecurity_rules_file /usr/local/nginx/conf/modsecurity/modsecurity.conf;

编辑modsecurity.conf

(/usr/local/nginx/conf/modsecurity/modsecurity.conf)

SecRuleEngine DetectionOnly改为SecRuleEngine On

同时添加以下内容:

Include /usr/local/nginx/conf/modsecurity/crs-setup.confInclude /usr/local/nginx/conf/modsecurity/rules/*.conf

六、重新加载Nginx测试效果

配完以后重新启动nginx

命令行输入:

/usr/local/nginx/sbin/nginx -s reload //nginx已启动的情况或/usr/local/nginx/sbin/nginx  //nginx未启动的情况

浏览器访问:

http://192.168.200.132/?param="><script>alert(1);script>

拦截成功!!

此外也可以对网页进行一些简单的攻击用来测试modsecurity是否成功拦截攻击

简单SQL注入:https://192.168.200.132/?id=1 AND 1=1简单xss攻击:https://192.168.200.132/?search=alert('xss');相应的,也是显示上述网页展现的  403Forbidden

七、查看nginx与modsecurity的版本信息

nginx:

[root@CetnOS-GUI /usr/local/nginx/sbin]# ./nginx -Vnginx version: nginx/1.16.1built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)configure arguments: --add-module=/usr/local/ModSecurity-nginx

我这里的版本是nginx/1.16.1

第一次安装遇到的问题:启动nginx时出现错误

/usr/local/nginx/sbin/nginx -s reload

解决办法:原因是安装的时候某一步骤出了错,需要重新来一遍,将modsecurity、Modsecurity、Modsecurity-nginx、nginx删掉即可,若对自己某一步骤有信心,可以不删除相应目录,参考上述文章执行命令产生的目录所对应的具体步骤。

至此,Linux+nginx下安装、测试modsecurity结束,谢谢观看!

nginx 没有sbin目录_CentOS7下Nginx+ModSecurity配置、安装、测试教程相关推荐

  1. linux下安装nginx tar包,Linux环境下Nginx的安装

    一.首先去官网下载Nginx的tar包 Nginx官方网站地址:http://nginx.org/en/download.html ps:下载速度感人 Nginx下载地址 下载完成之后,把它上传到服务 ...

  2. windows怎么下载安装python-windows下numpy下载与安装图文教程

    Numpy介绍 NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构 ...

  3. linux上mysql卸数_Linux下MySQL卸载和安装图文教程

    Linux下MySQL卸载和安装图文教程 发布时间:2020-09-02 08:43:17 来源:脚本之家 阅读:59 作者:伊宇紫 第一次写博客,做了两年的开发,工作之余给自己找点有意义的事做,分享 ...

  4. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  5. linux nginx编译详解,Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备 1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码 代码如下:# ...

  6. Linux配置nginx打开报404,Linux下Nginx配置404页面的方法

    Linux下Nginx配置404页面很多设置后返回状态码是200,而不是404状态码,所以那样的404页面设置是不正确的,今天分享下Linux下Nginx配置404页面设置方法. 1.创建自己的404 ...

  7. centos6.3 nginx php,CentOS 6.3下nginx、php-fpm、drupal快速部署

    一切本着从简原则来做,能yum/rpm的,坚决不手工编译 :) 本次部署环境基于CentOS 6.3 x86_64系统. 0. 准备工作#更新yum[root@imysql ~]# yum -y up ...

  8. centos mysql安装包_Centos7下安装包方式安装MySQL

    安装包下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar 第一步:在 /h ...

  9. linux添加ip白名单_centOS7 下利用iptables配置IP地址白名单的方法

    编辑iptables配置文件,将文件内容更改为如下,则具备了ip地址白名单功能 #vim /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FO ...

最新文章

  1. Matlab姿态表示
  2. SQL Server 2008行数据和页数据压缩解密
  3. 《RESTful Web Services》第一章 使用统一接口
  4. ue4 设置intellisence_UE4.22编辑器界面操控设置(4)
  5. 创物联网融资额记录的G7,拿到3.2亿美元后要做什么?
  6. Problem D. Country Meow 2018ICPC南京
  7. PHP基础学习课程强烈推荐
  8. php 课程节次周次提取,用PHP写一个最简单的解释器Part5(计算器最后一节,下节开始如何写个脚本语言)...
  9. 贝叶斯公式理解与应用
  10. QTableView自定义拖拽行
  11. javascript学习心得
  12. iphone和iPad开发的区别
  13. 马化腾绝地逢生:山重水复疑无路,柳暗花明又一村
  14. 书评|《小岛经济学》
  15. 【STM32 Net MF开发板学习-11】步进电机控制(非PWM模式)
  16. 传智播客 HTTP协议详解
  17. matlab打开dat形式文件_matlab 读取dat文件
  18. zooomcharts的使用 (1.18.8版本 + ts )
  19. ST-LINK/V2 烧录固件
  20. 杭电oj ——1000 A+B问题

热门文章

  1. 【S操作】老铁留步,干货来了!小总结云存储云办公云笔记工具——我的云工具选择,供您参考...
  2. Linux下dislocate命令用法,五个超酷Linux命令
  3. FPGA篇(十一)modelsim命令行仿真提示“vsim 不是内部或外部命令,也不是可运行的程序或批处理文件”的解决办法 (转)
  4. 15.verilog可综合语句设计综述
  5. C++重载、覆盖和遮蔽
  6. Go语言中如何进行测试
  7. 【转】C++ const用法 尽可能使用const
  8. 服务器负载均衡的部署方式
  9. SQLServer表内自关联级联删除
  10. saltstack实战-6