Ubuntu 16.04 上带有 libmodsecurity 和 OWASP ModSecurity 核心规则集的 NginxUbuntu 16.04 上带有 libmodsecurity 和 OWASP ModSecurity 核心规则集的 NginxUbuntu 16.04 上带有 libmodsecurity 和 OWASP ModSecurity 核心规则集的 NginxUbuntu 16.04 上带有 libmodsecurity 和 OWASP ModSecurity 核心规则集的 Nginx
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

Ubuntu 16.04 上带有 libmodsecurity 和 OWASP ModSecurity 核心规则集的 Nginx

本教程适用于这些操作系统版本

  • Ubuntu 15.04(Vivid Vervet)

在此页

  1. 1。安装先决条件
  2. 2。下载 ModSecurity
  3. 3。下载 Nginx
  4. 4。配置和安装 Nginx
  5. 5。安装 OWASP ModSecuirty 核心规则集
  6. 关于作者

在本教程中,我将向您展示如何使用 libmodsecurity (Modsecurity 3.x) 编译最新版本的 Nginx,不要与 Modsecurity 2.9 混淆。我们还将集成 OWASP ModSecurity 核心规则集 (CRS)。

Libmodsecurity 是对 ModSecurity 的重大重写,可提供改进的性能和稳定性。尽管 Modsecurity 2.9.x 是为不同的平台提供的,但它确实更喜欢使用 Apache 进行部署,而使用其他平台进行部署则需要以性能为代价的各种第 3 方依赖项。 Libmodsecurity 通过从头开始重写来改变这一切。可以在此处找到有关 Libmodsecurity 的更多信息。

本指南假设您已经拥有一个全新的 Ubuntu 16.04 64 位更新实例。

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

Git 克隆 Modsecurity-nginx 连接器

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

您现在应该有以下目录,其中包含 Modsecurity-nginx 连接器

/opt/ModSecurity-nginx

3.下载Nginx

下载最新的 Nginx 稳定源

转到 http://nginx.org/en/download.html 并获取最新稳定版 Nginx 的链接。在撰写本文时,最新的稳定版本是 nginx-1.12.0.tar.gz。针对您的特定版本调整以下说明。下载解压

cd /opt 
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0

4.配置和安装Nginx

使用 Modsecurity-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

创建以下目录:

mkdir /usr/local/nginx/conf/sites-available 
mkdir /usr/local/nginx/conf/sites-enabled
mkdir /usr/local/nginx/conf/ssl
mkdir /etc/nginx

从 /usr/local/nginx/conf/ssl /etc/nginx/ssl 创建一个符号链接

ln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl

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

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

配置/usr/local/nginx/conf/nginx.conf文件

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

找到并删除所有以 \server {\ 开头并以倒数第二个右大括号 \}\ 结尾的条目。换句话说,保持最后一个花括号完好无损。

在最后一个花括号的正上方,插入以下内容。这将指示 Nginx 在 \/usr/local/nginx/conf/sites-enabled\ 目录中查找我们的站点配置

include /usr/local/nginx/conf/sites-enabled/*;

所以文件的结尾应该如下所示(确保结束 } 存在):

include /usr/local/nginx/conf/sites-enabled/*; 
}

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

user www-data;

保存文件。

下载用于管理 nginx 服务的 Jason Giedymins Nginx init 脚本并将其配置为服务

wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx 
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults

此脚本提供以下用于管理 Nginx 服务的选项:

# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy

5. 安装 OWASP ModSecuirty 核心规则集

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

在您的 Nginx modsecurity.conf 文件或您的个人服务器 conf 文件中,在服务器或位置块中输入以下内容。下面的示例显示了在服务器和位置块中添加条目的组合:

server { 
.....
modsecurity on;
location / {
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
.....
}
}

测试你的 Nginx 配置

service nginx configtest

如果没有错误,请重新加载或重新启动 Nginx

service nginx reload

您现在可以查看任何 ModSecurity 事件的 /var/log/modsec_audit.log

tail -f /var/log/modsec_audit.log

如果您满意,请编辑 /usr/local/nginx/conf/modsecurity.conf 文件并将 \SecRuleEngine\ 从 \DetectionOnly\ 设置为 \On\ 如下所示

SecRuleEngine On

本指南到此结束。

关于作者

Dino Edwards 是一名 IT 专业人员,在联邦、州和私营部门拥有 20 多年的经验。众所周知,他还涉足编程。

他倾向于在完成特定项目后编写指南或操作指南,主要是因为他的记忆力很差,如果他必须再次做同一个项目,他不想重新发明轮子。

保持联系

©2015-2025 艾丽卡 support@alaica.com