Ubuntu 16.04 上带有 libmodsecurity 和 OWASP ModSecurity 核心规则集的 Nginx
本教程适用于这些操作系统版本
- Ubuntu 15.04(Vivid Vervet)
在此页
- 1。安装先决条件
- 2。下载 ModSecurity
- 3。下载 Nginx
- 4。配置和安装 Nginx
- 5。安装 OWASP ModSecuirty 核心规则集
- 关于作者
在本教程中,我将向您展示如何使用 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 多年的经验。众所周知,他还涉足编程。
他倾向于在完成特定项目后编写指南或操作指南,主要是因为他的记忆力很差,如果他必须再次做同一个项目,他不想重新发明轮子。
保持联系
