在OPNsense中使用Nginx保护内部网站

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动快,高并发能力强,在互联网项目中广泛应用。

在OPNsense上,集成了Nginx插件,我们可以通过添加Nginx插件来保护内部网络和Web服务器,也可以实现服务器的负载平衡。

下面以访问内部NAS服务器(IP地址:192.168.100.16,http访问端口:4999,https访问端口:5000)为例,介绍Nginx的配置过程。

安装插件

导航到OPNsense防火墙系统>固件>插件菜单,找到os-nginx插件,然后单击右侧的”+”图标进行安装。

初始配置

在配置之前,我们需要了解以下术语:

  • 上游服务器:托管网页/应用程序的真实内部服务器;
  • 上游:配置的服务器的后端;
  • 位置:配置了上游功能的网址格式;
  • HTTP 服务器:配置一个或多个位置的前端;

先从配置上游服务器开始。导航到服务>Nginx>配置菜单,找到上游服务器。

单击下面的添加按钮,添加一个新的上游服务器。

输入NAS的访问IP和端口,因为只有一个服务器,所以优先级设为1。服务器参数,取决于Web服务器/应用程序和网络环境,为了获得更好的保护,建议在“ 最大连接数/失败次数和“ 失败超时中设置一些限制

配置完成后如下:

接下来配置上游。单击上游菜单,添加一个新的上游。

服务器条目选中上一步建立的上游服务器,其他选项根据自己的需要进行设置,因为是测试,这里没选中启用TLS。

配置完成后如下图所示:

NAXSI是第三方nginx模块,可作为许多类似UNIX平台的软件包使用。默认情况下,该模块读取一小部分简单(可读)规则,其中包含与网站漏洞有关的99%的已知模式。例如, <| 或 drop不应该是一个URI的一部分。

在进行配置之前,我们需要下载Naxsi规则,并在后面的“位置配置中启用该规则。

转到HTTP(S)>Naxsi WAF策略子菜单:

单击右上的下载按钮获取NAXSI规则:

接受NAXSI存储库许可证,下载NAXSI规则。

下载完成后如下图所示:

添加位置

导航到HTTP(S)>位置,单击“+”按钮添加一个新位置。

  • 描述:填入需要说明的内容;
  • 网址格式:要与Web服务器根目录匹配,请用“/”填充。要与另一个路径匹配,请将其更改为“/ anotherpath /”;
  • 启用安全规则:此选项启用WAF保护。
  • 上游服务器:选中前面设置的上游服务器。

添加HTTP服务器

最后,创建网站的前端。转到HTTP(S)>HTTP服务器菜单,单击添加,添加一个HTTP服务器。


输入HTTP和HTTPS服务器的访问端口、服务器名称,在位置栏选中上一步设置的位置。

填写完成后如下:

启用Nginx

返回菜单服务>Nginx配置并启用服务:

选中启用选项

单击应用按钮。

应用配置后,Nginx服务将启动并运行。

创建规则

最后一步是创建所需的防火墙规则,允许外部网络访问对应的端口。导航到防火墙>规则>WAN选项卡,添加一个允许外部访问4999端口的规则。

至此,配置完成!

测试

在外部网络通过WAN IP+端口号访问内部NAS,如下图所示:

本次修订是在原有文章上进行的修改,部分图片没有更换,仍保留了英文界面的截图,请诸位谅解。

在OPNsense中使用Nginx保护内部网站》上有7个想法

  1. 使用后能打开页面无法登陆怎么解决?我查询了资料是nginx配置文件里面需要在proxy_set_header Host $host:$server_port;这句里面加上后面的端口。我在shell下手动加入配置文件后一重启系统就自动还原了这个怎么解决?web设置里面找不到可以更改的地方。

      • 重启后就还原到web gui里面的设置了,在web gui里面能调整吗?我试着想用启动脚本覆盖掉但是启动脚本不执行。进shell手动执行可以。

  2. 重启后还原配置,这个怎么弄?你在opnsense的论坛有账号吗?我没注册上。能不让开发改改这里。加上:$server_port就可以了。

    • 我内网一台NAS,访问端口是4999,用这个方法测试了没问题(重启了也没问题)。重要的是防火墙的WAN接口的规则,必须放行相关的通信端口。例如我的NAS的放行规则如下:接口:WAN,协议:TCP,目标:WAN地址,端口:4999

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注