在CentOS 8上使用Nginx安装LibModsecurity Web应用程序防火墙
在CentOS 8上使用Nginx安装LibModsecurity Web应用程序防火墙
LibModSecurity是一个免费的开放源代码Web应用程序防火墙,可用于保护Nginx服务器免受各种类型的网络攻击。它带有一个核心规则集,包括SQL注入,跨站点脚本,木马等。它通过OWASP ModSecurity Core规则集实时监视HTTP流量并与漏洞进行斗争来工作。它可以与Apache,Nginx和IIS一起使用,并且还与Debian,Ubuntu和CentOS兼容。
在本教程中,我们将向您展示如何在CentOS 8上下载和编译具有Nginx支持的LibModSecurity。
要求
- 运行CentOS的服务器8。
- 在服务器上配置了root密码。
入门
在开始之前,请使用以下命令将服务器更新为最新版本:dnf update
服务器更新后,请重新启动以应用更改。
安装所需的存储库和依赖项
首先,在系统上安装EPEL和REMI存储库。您可以使用以下命令安装它们:dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
接下来,使用以下命令安装所有必需的依赖项:dnf install gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pkgconfig libtool httpd-devel redhat-rpm-config wget openssl openssl-devel nano
一旦安装了所有软件包,就可以使用PowerTool存储库安装其他依赖项:dnf --enablerepo=PowerTools install doxygen yajl-devel
接下来,通过运行以下命令,使用REMI存储库安装GeoIP:dnf --enablerepo=remi install GeoIP-devel
一旦安装了所有软件包,就可以继续进行下一步。
下载并编译LibModsecurity
首先,您将需要下载LibModsecurity源并将其在您的系统上编译。为此,将目录更改为/ opt并从Git存储库下载最新版本的LibModsecurity:cd /opt/
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
接下来,将目录更改为ModSecurity并使用以下命令下载libInjection代码:cd ModSecurity
git submodule init
git submodule update
接下来,使用以下命令配置LibModsecurity:./build.sh
./configure
最后,使用以下命令编译并安装LibModSecurity:make
make install
至此,您的系统上已经安装了LibModsecurity。现在,您可以继续安装具有LibModsecurity支持的Nginx。
下载并编译具有LibModsecurity支持的Nginx
首先,您需要为Nginx创建一个系统用户和组。您可以使用以下命令创建它:useradd -r -M -s /sbin/nologin -d /usr/local/nginx nginx
接下来,您将需要下载Nginx并使用LibModsecurity支持对其进行编译。
为此,请首先使用以下命令从Git存储库下载ModSecurity-nginx连接器:cd /opt
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git
接下来,使用以下命令下载最新的Nginx稳定版本:wget http://nginx.org/download/nginx-1.17.6.tar.gz
下载后,使用以下命令解压缩下载的文件:tar -xvzf nginx-1.17.6.tar.gz
接下来,更改Nginx目录,并使用以下命令对其进行配置:cd nginx-1.17.6
./configure --user=nginx --group=nginx --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx
接下来,使用以下命令安装Nginx:make
make install
至此,已经为Nginx安装了LibModsecurity支持。现在,您可以继续配置Nginx。
将Nginx与ModSecurity配置
首先,您需要将示例ModSecurity配置文件从Nginx源目录复制到Nginx配置目录。
您可以使用以下命令复制它们:cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /opt/ModSecurity/unicode.mapping /usr/local/nginx/conf/
接下来,使用以下命令创建Nginx二进制文件到/ usr / sbin /路径的符号链接:ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
接下来,使用以下命令创建Nginx日志目录:mkdir /var/log/nginx
接下来,使用以下命令打开Nginx配置文件:nano /usr/local/nginx/conf/nginx.conf
进行以下更改:
user nginx;
worker_processes 1;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name your-server-ip;
modsecurity on;
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
完成后保存并关闭文件。然后,使用以下命令检查Nginx是否存在语法错误:nginx -t
您应该看到以下输出:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
至此,已经配置了Nginx。您可以继续为Nginx创建systemd服务文件。
为Nginx创建系统服务文件
接下来,您将需要创建一个systemd文件来管理Nginx服务。您可以使用以下命令创建它:nano /etc/systemd/system/nginx.service
添加以下行:
[Unit]
Description=The nginx server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true
[Install]
WantedBy=multi-user.target
完成后保存并关闭文件。然后,使用以下命令重新加载systemd守护程序:systemctl daemon-reload
接下来,启动Nginx服务,并使用以下命令使其在系统重启后启动:systemctl start nginx
systemctl enable --now nginx
您应该看到以下输出:
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /etc/systemd/system/nginx.service.
接下来,使用以下命令验证Nginx服务:systemctl status nginx
您应该看到以下输出:
? nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-12-30 10:20:01 EST; 41s ago
Process: 17730 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 17728 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 17727 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 17732 (nginx)
Tasks: 2 (limit: 6102)
Memory: 5.0M
CGroup: /system.slice/nginx.service
??17732 nginx: master process /usr/sbin/nginx
??17733 nginx: worker process
Dec 30 10:20:00 nginx systemd[1]: Starting The nginx HTTP and reverse proxy server…
Dec 30 10:20:00 nginx nginx[17728]: nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
Dec 30 10:20:00 nginx nginx[17728]: nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Dec 30 10:20:01 nginx systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Dec 30 10:20:01 nginx systemd[1]: Started The nginx HTTP and reverse proxy server.
至此,Nginx已经启动并运行。现在,您可以继续配置ModSecurity。
配置模式安全性
默认情况下,ModSecurity设置为仅检测模式。因此,您将需要打开ModSecurity规则引擎。您可以通过编辑文件modsecurity.conf来实现:nano /usr/local/nginx/conf/modsecurity.conf
找到以下行:
仅SecRuleEngine检测
并且,将其替换为以下行:SecRuleEngine On
还找到以下行:/var/log/modsec_audit.log
并且,将其替换为以下行:/var/log/nginx/modsec_audit.log
完成后保存并关闭文件。
接下来,使用以下命令从Git存储库下载最新版本的ModSecurity Core规则集:git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/local/nginx/conf/owasp-crs
下载完成后,使用以下命令重命名CRS示例配置文件:mv /usr/local/nginx/conf/owasp-crs/crs-setup.conf.example /usr/local/nginx/conf/owasp-crs/crs-setup.conf
接下来,通过编辑文件/usr/local/nginx/conf/modsecurity.conf,将ModeSecurity配置为使用这些规则:nano /usr/local/nginx/conf/modsecurity.conf
在文件末尾添加以下行:
Include owasp-crs/crs-setup.conf
Include owasp-crs/rules/*.conf
完成后保存并关闭文件。然后,重新启动Nginx服务以实现更改:systemctl restart nginx
测试ModSecurity
现在已安装和配置ModSecurity。现在该测试它是否正常工作了。
要针对命令注入测试ModSecurity,请打开Web浏览器,然后输入URL http://localhost/index.html?exec = / bin / bash。您应该在以下页面中看到403 Forbidden错误:
要测试针对CSS攻击的ModSecurity,请打开您的终端并运行以下命令:curl http://localhost/?q="><script>alert(1)</script>"
您应该获得以下输出:
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.17.6</center>
</body>
</html>
结论
恭喜你!您已经使用Nginx成功下载并编译了LibModSecurity。现在可以保护您的服务器免受各种攻击。
原文地址:https://www.howtoforge.com/install-and-configure-libmodsecurity-with-nginx-on-centos-8/
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/32295.html