pfSense HAProxy反向代理设置

pfSense上的HAProxy

反向代理可用于在单个IP地址和端口组合后运行多个网络服务。此外,反向代理可以提升服务的安全性。这是通过使用加密和标头操作实现的。本文介绍如何将pfSense HAProxy设置为反向代理。假定使用的域和子域已经存在并且配置正确。对于动态IP,动态DNS也完成了正确配置。

HAProxy由三个基本区域组成。

  • 常规设置(资源,统计,日志记录等)
  • 前端(与HAProxy连接的IP地址和端口组合。)
  • 后端(HAProxy应转发的内部网络服务。)

将pfSense HAProxy设置为反向代理

首先,在pfSense中安装HAProxy插件。

反向代理安装

完成后,HAProxy将出现在“Services(服务)”菜单中。

pfSense HAProxy菜单

常规设置

首先选中“启用HAProxy”来启用HAProxy,并为“Maximum connections(最大连接数)”设置一个值(例如1000)。
在“Tuning”下,建议设置2048作为Diffie Hellman参数的最大长度。

后端

由于必须在前端配置中选择后端,因此我们首先配置后端。对于每个内部服务器,可以创建自己的后端配置。下面“subdomain.example.com”的示例。

HAProxy后端

前端

至少需要两个前端配置。一个用于端口80重定向到HTTPS,一个用于HTTPS端口443。

在HTTP前端中,定义此前端侦听端口80,并且将注册域(例如example.com)结尾的所有请求都将重定向到HTTPS。

HAProxy HTTP前端

除了IP和端口设置,还可以配置所需的后端和SSL设置。

在“Advanced pass thru(高级直通)”部分中,输入以下HTTP标头。这里的作用在OWASP项目上有详细描述。
注意:“X-Robots-Tag”会阻止搜索引擎索引。

http-response set-header X-Xss-Protection 1;\ mode=block
http-response set-header X-Content-Type-Options nosniff
http-response set-header X-Robots-Tag noindex
http-response set-header X-Frame-Options SAMEORIGIN
http-response set-header Referrer-Policy same-origin

此外,它增加了“Advanced ssl options(高级SSL选项)”,来进行加密(2.44P2版本中已没有这个选项)。

force-tlsv12 ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

我们建议使用通配符证书,例如Let’s Encrypt。

HTTPS前端

防火墙规则

为了能让外部网络访问HAProxy服务,应该在WAN接口上配置防火墙规则。首先,使用已使用的端口创建别名。

HAProxy别名

然后就可以设置所需的防火墙规则。

HAProxy WAN规则

原文地址