免费企业代理服务器,具有域身份验证



pfSense +带https过滤的Squid +带Active Directory组过滤的单点登录(SSO)技术

简要背景


在企业中,需要实现一种代理服务器,该代理服务器具有按AD过滤用户组对站点(包括https)访问的功能,以便用户无需输入任何其他密码,并且可以从Web界面进行管理。不错的应用程序,对吗?

正确的答案是购买诸如Kerio Control或UserGate之类的解决方案,但一如既往没有钱,但有需要。

然后,好的旧鱿鱼救了我们,但是再说一遍-从哪里获得Web界面?SAMS2?道德上已过时。pfSense在这里进行了救援。

描述


本文将介绍如何配置Squid代理服务器。
Kerberos将用于授权用户。
SquidGuard将用于按域组进行过滤。

对于监视,将使用Lightsquid,sqstat和pfSense内部监视系统。
它还将解决与引入单点登录(SSO)技术相关的一个常见问题,即尝试以计算机帐户\系统帐户下的网络的应用程序。

准备安装Squid


基础将以pfSense 安装说明为准

在其中,我们使用域帐户来组织对防火墙本身的身份验证。指令

很重要!

在开始安装Squid之前,您需要在pfsense中配置DNS服务器,在我们的DNS服务器上为其创建A和PTR记录,并配置NTP,以便时间与域控制器上的时间没有差异。

在您的网络上,您可以为pfSense WAN接口提供访问Internet的权限,本地网络上的用户可以连接到LAN接口,包括通过端口7445和3128(在我的情况下为8080)。

都准备好了?与pfSense上用于授权的域的LDAP连接是否已安装并已同步?精细。现在是时候开始主要过程了。

安装和预设


在“系统/软件包管理器”部分的pfSense软件包管理器中安装Squid,SquidGuard和LightSquid。

成功安装后,转到“服务/ Squid代理服务器/”,首先,在“本地缓存”选项卡中,配置缓存,我将所有内容都设置为0,因为 我认为在缓存网站方面没有多大意义,浏览器可以很好地解决这一问题。设置完成后,单击屏幕底部的“保存”按钮,这将使我们有机会进行基本的代理设置。

主要设置如下:

图片

默认端口为3128,但我更喜欢使用8080。

代理接口选项卡中的选定参数确定我们的代理服务器将侦听的接口。由于此防火墙的设计方式使得它可以通过WAN接口查看Internet,即使LAN和WAN可以位于同一本地子网中,我还是建议使用LAN作为代理。

需要Lupbek才能使sqstat工作。

在下面,您将找到透明(透明)代理以及SSL过滤器的设置,但是我们不需要它们,我们的代理将不是透明的,并且对于https过滤,我们将不处理证书替换(我们有文件流,银行客户等),但只要看看握手。

在此阶段,我们需要转到域控制器,在其中创建一个用于身份验证的帐户(您可以使用在pfSense本身上配置用于身份验证的帐户)。这是一个非常重要的因素-如果您打算使用AES128或AES256加密-选中帐户设置中的相应复选框。

如果您的域是一个非常复杂的林,具有大量目录或.local域,则可能,但不完全是,您将必须为此帐户使用一个简单的密码,这是一个已知的错误,但可能无法使用复杂的密码,您需要检查具体情况。

图片

之后,我们在域控制器上为Kerberos创建密钥文件,打开具有管理员权限的命令行并输入:

# ktpass -princ HTTP/pfsense.domain.local@DOMAIN.LOCAL -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:\keytabs\PROXY.keytab

在我们指定FQDN pfSense的地方,请务必遵循这种情况,在mapuser参数中输入我们的域帐户及其密码,然后选择crypto中的加密方法,我使用rc4进行工作,并在-out字段中选择了将准备好的密钥文件发送到的位置。
成功创建密钥文件后,我们会将其发送到pfSense,我使用了Far,但是您也可以同时使用命令和腻子,或者通过“ Diagnostics \ Command Line”部分中的pfSense Web界面来执行此操作。

现在我们可以编辑\ create /etc/krb5.conf

图片

,其中/etc/krb5.keytab是我们创建的密钥文件。

确保使用kinit检查kerberos的操作,如果它不起作用,则没有意义。

配置Squid身份验证和访问列表而不进行身份验证


成功配置kerberos之后,我们将其固定到我们的Squid。

为此,请转到Services \ Squid Proxy Server,然后在主要设置中找到最底端的“高级设置”按钮。

在“自定义选项(授权前)”字段中,输入:

#
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
# 
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt" 
# 
http_access allow nonauth 
http_access deny !auth
http_access allow auth

其中auth_param协商程序/ usr / local / libexec / squid / contract_kerberos_auth-选择我们需要的Kerberos身份验证帮助程序。值为GSS_C_NO_NAME

-s开关 -定义密钥文件中任何帐户的使用。-k 开关的值为/usr/local/etc/squid/squid.keytab-定义此keytab文件的使用。就我而言,这是我们创建的同一密钥表文件,我将其复制到/ usr / local / etc / squid /目录中,并重命名了该文件,因为我不想与该目录成为朋友,显然没有足够的权限。使用-t none-t开关



-禁用对域控制器的周期性请求,如果您有50个以上的用户,则可以大大减少对域控制器的负载。
在测试期间,您还可以添加-d开关-即诊断,将显示更多日志。
auth_param协商子项1000-指定可运行的并发授权过程的数量
auth_param协商keep_alive的状态 -轮询授权
acl auth proxy_auth REQUIRED所在的授权链时不会中断连接-创建并需要访问控制列表,其中包括经过身份验证的用户
acl nonauth dstdomain /etc/squid/nonauth.txt“-我们通知鱿鱼有关非认证访问列表的信息,该列表包含目标域,每个人都将始终被允许访问该域。我们创建文件本身,并在其中输入格式如下的域

.whatsapp.com
.whatsapp.net

Whatsapp不能作为示例使用-它对身份验证代理非常挑剔,并且如果在身份验证之前不允许,它将无法正常工作。
http_access允许非身份验证 -允许所有访问此列表的人
http_access deny!auth-禁止未授权用户访问其他站点
http_access允许auth-允许授权用户访问。
鱿鱼本身已为您配置了所有内容,现在该开始按组过滤了。

配置SquidGuard


转到服务\ SquidGuard代理过滤器。

在“ LDAP选项”中,我们输入用于Kerberos身份验证的帐户的详细信息,但格式如下:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

如果有空格和/或非拉丁字符,则整个条目应用单引号或双引号引起来:

'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"

接下来,确保选中以下标记:

图片

删除不必要的DOMAIN \ pfsense .LOCAL对整个系统非常敏感。

现在我们转到Group Acl并绑定我们的域访问组,我本着group_0,group_1等的精神使用简单的名称,最多3个,其中3只访问白名单,0代表所有内容。

组如下所示:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))

我们保存我们的组,转到Times,在这里我创建了一个间隔,该含义表示始终工作,现在转到Target Categories并根据需要创建列表,创建列表后,我们返回到组中,并在组内选择可以在何处和何处不存在的按钮。 。

LightSquid和sqstat


如果在设置过程中我们在squid设置中选择了一个环回,并打开了访问网络和pfSense本身的防火墙中7445的可能性,那么当我们转到Diagnostics \ Squid Proxy Reports时,我们可以打开sqstat和Lighsquid不会出现问题,对于后者您将需要在同一位置输入用户名和密码,并且还可以选择设计。

完成时间


pfSense是一个非常强大的工具,可以完成很多事情-流量代理和对Internet的用户访问控制只是所有功能的一小部分,但是,在拥有500台计算机的企业中,这解决了问题并节省了购买代理的费用。

我希望本文能帮助某人解决与大中型企业非常相关的问题。

All Articles