zoukankan      html  css  js  c++  java
  • Ubuntu 16.04 安装ModSecurity

    1.前提条件

    apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev
    

    2.下载ModSecurity

    Git克隆ModSecurity,检出并构建libmodsecurity

    cd /opt/
    git clone https://github.com/SpiderLabs/ModSecurity
    cd ModSecurity
    git checkout -b v3/master origin/v3/master
    sh build.sh
    git submodule init
    git submodule update
    ./configure
    make
    make install
    

    2.1执行make时报错

    /usr/bin/ld: cannot find -llua5.2
    collect2: error: ld returned 1 exit status
    

    2.1.1需要先安装lua5.1,然后查看locate lua是否有liblua5.2.so.0 然后做软连接 ln -s liblua5.2.so.0 liblua5.2.so

    2.1.2然后再编译

    Git克隆Modsecurity-nginx连接器

    cd /opt/
    git clone https://github.com/SpiderLabs/ModSecurity-nginx.git
    

    3.下载nginx和配置nginx

    ./configure --user=www-data --group=www-data --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx
    make
    make install

    我们之前下载的ModSecurity源代码包含一些示例modsecurity.conf文件,其中包含一些推荐的设置。 将此文件复制到具有Nginx配置文件的文件夹

    cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
    

    从/ usr / local / nginx / sbin / nginx创建一个符号链接到/ bin / nginx

    ln -s /usr/local/nginx/sbin/nginx /bin/nginx
    

    制作conf / nginx.conf文件的备份副本

    cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak
    

    通过删除“#”前缀,如果禁用,确保它设置为用户“www-data”而不是默认的“nobody”,启用“user”指令,如下所示:

    user www-data;
    

    Git克隆并复制当前版本的OWASP规则集并配置为Nginx

    cd /opt/
    git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
    cd owasp-modsecurity-crs/
    cp -R rules/ /usr/local/nginx/conf/
    cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf
    

    使用OWASP ModSecuirty核心规则集配置Nginx

    编辑/usr/local/nginx/conf/modsecurity.conf

    vi /usr/local/nginx/conf/modsecurity.conf
    

    在文件末尾粘贴以下内容:

    #Load OWASP Config
    Include crs-setup.conf
    #Load all other Rules
    Include rules/*.conf
    #Disable rule by ID from error message
    #SecRuleRemoveById 920350
    

    4.在nginx.conf文件中启用

    $ vim /usr/local/nginx/conf/nginx.conf
    # 放在server下的话,就是全局,如果只要某一个的话,可以放在location中
        modsecurity on;
        modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
    ​
    $ nginx -t
    nginx: [emerg] "modsecurity_rules_file" directive Rules error. File: /usr/local/nginx/conf/modsecurity.conf. Line: 237. Column: 17. Failed to locate the unicode map file from: unicode.mapping Looking at: 'unicode.mapping', 'unicode.mapping', '/usr/local/nginx/conf/unicode.mapping', '/usr/local/nginx/conf/unicode.mapping'.  in /usr/local/nginx/conf/nginx.conf:73
    方法一:
    如果有如上错误的话,可以修改 /usr/local/nginx/conf/modsecurity.conf
    搜索mapping,将SecUnicodeMapFile unicode.mapping 20127  注释掉
    方法二:
    将unicode.mapping复制到modsecurity.conf同一目录下。
    $ cp /usr/local/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/
    $ nginx -t
    $ systemctl restart nginx
    

     5.查看日志:tail -f /var/log/modsec_audit.log

    6.modsecurity配置解释

    1.SecRuleEngine:是否接受来自ModSecurity-CRS目录下的所有规则的安全规则引擎。因此,我们可以根据需求设置不同的规则。要设置不同的规则有以下几种。SecRuleEngine On:将在服务器上激活ModSecurity防火墙,它会检测并阻止该服务器上的任何恶意攻击。SecRuleEngine Detection Only:如果设置这个规则它只会检测到所有的攻击,并根据攻击产生错误,但它不会在服务器上阻止任何东西。SecRuleEngine Off:这将在服务器上上停用ModSecurity的防火墙。
    
    2.SecRequestBodyAccess:它会告诉ModSecurity是否会检查请求,它起着非常重要的作用。它只有两个参数ON或OFF。
    
    3.SecResponseBodyAccess:如果此参数设置为ON,然后ModeSecurity可以分析服务器响应,并做适当处理。它也有只有两个参数ON和Off,我们可以根据求要进行设置。
    
    4.SecDataDir:定义ModSecurity的工作目录,该目录将作为ModSecurity的临时目录使用。
    

      7。测试网站

     模拟sql注入

     

    日志

  • 相关阅读:
    Pycharm 2016 注册码
    在mac上搭建python环境
    Carthage 的使用
    生成唯一的随机字符串
    utf-8 转码--网址转码
    让自己的项目支持 Carthage
    系统自带的语音合成
    个性化 UIAlertController
    cocoaPods 创建自己的依赖库
    appleDoc 使用
  • 原文地址:https://www.cnblogs.com/hnsya/p/12802707.html
Copyright © 2011-2022 走看看