Debian Squeeze,Squid,Kerberos / LDAP认证,Active Directory集成和Cyfin报告器
介绍
本文档介绍了Squid代理的设置,该代理将与Active Directory无缝集成,以便使用Kerberos进行身份验证,并将LDAP作为未通过Kerberos进行身份验证的用户的备份。 授权由Active Directory中的组管理。 这对于不再支持NTLMv2而不更改本地计算机策略的Windows 7客户端特别有用。 它能够使用白名单和黑名单进行站点访问和限制。
对于本指南,使用以下示例 - 您应该在必要时更新具有客户端域,主机名和IP的任何部分。
- Domain =
example.local
- 子网=
192.168.0.0/24
- 代理服务器:IP =
192.168.0.26
,HOSTNAME =squidproxy.example.local
- Windows Server 1:IP =
192.168.0.1
,HOSTNAME =domaincontroller1.example.local
- Windows Server 2:IP =
192.168.0.10
,HOSTNAME =server2.example.local
Debian Squeeze的基础安装是基本的Debian管理技能。 vi被假定为文本编辑器。
先决条件
客户端Internet Explorer浏览器需要在Internet选项::高级设置中启用“启用集成Windows身份验证”,以及启用代理自动检测功能 - Google这些不确定。 所有现代网络浏览器都将支持代理自动检测。 Firefox和Chrome还支持Windows身份验证。
DNS配置
安装dnsutils:
apt-get install dnsutils
在Windows DNS服务器上为代理服务器的主机名添加一个新的A记录条目,并确保相应的PTR(反向DNS)条目也被创建并且有效。 检查代理是否正在使用Windows DNS服务器进行名称解析和更新/etc/resolv.conf。
vi /etc/resolv.conf
search example.local nameserver 192.168.0.1 nameserver 192.168.0.10
Ping内部和外部主机名以确保DNS正在运行。
ping domaincontroller1.example.local -c 4 && ping google.com -c 4
检查您是否可以从Windows DNS反向查找Windows Server和本地代理ip。
dig -x 192.168.0.1
dig -x 192.168.0.26
警告:如果任何DNS查找失败,直到固定或代理身份验证失败才会继续。
NTP配置
安装ntp包:
apt-get install ntp
由于Kerberos需要与Windows域控制器同步进行身份验证,因此我们配置代理以从中获取时间。
vi /etc/ntp.conf
找到以下部分,并根据需要更新ntp服务器。 如果您有多个域控制器或NTP服务器,您可以添加多行。
# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example server domaincontroller1.example.local server server2.example.local
然后重新启动并测试NTP。
invoke-rc.d ntp restart
ntpq -p
您应该看到输出是指按照它们出现在conf文件中的顺序处理的域控制器和其他NTP服务器。
配置Kerberos
安装Kerberos软件包:
apt-get install krb5-user libkrb53
只要接受在我们覆盖它们时提供给任何debconf对话框的默认值。
设置Kerberos。
cp /etc/krb5.conf /etc/krb5.conf.default
cat /dev/null > /etc/krb5.conf
vi /etc/krb5.conf
编辑用客户端的域和服务器替换变量(突出显示)的文件。
警告:根据您的Windows域控制器操作系统版本取消注释相关的Windows 200X部分并注释掉相反的部分。
如果您只有1个域控制器从“[域]”部分删除附加的“kdc”条目。
[libdefaults] default_realm = EXAMPLE.LOCAL dns_lookup_kdc = no dns_lookup_realm = no ticket_lifetime = 24h default_keytab_name = /etc/squid3/PROXY.keytab ; for Windows 2003 default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 ; for Windows 2008 with AES ; default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 ; default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 ; permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 [realms] EXAMPLE.LOCAL = { kdc = domaincontroller1.example.local kdc = server2.example.local admin_server = domaincontroller1.example.local default_domain = example.local } [domain_realm] .example.local = EXAMPLE.LOCAL example.local = EXAMPLE.LOCAL
安装Squid 3
apt-get install squid3 ldap-utils
注意:配置msktutil后,squid配置会发生。
安装并运行msktutil
获取msktutil包并安装它。
cd /var/cache/apt/archives/ wget http://fuhm.net/software/msktutil/releases/msktutil_0.4-2_i386.deb
apt-get install libsasl2-modules-gssapi-mit libsasl2-modules
dpkg -i msktutil_0.4-2_i386.deb
cd
启动Kerberos会话到服务器,所以msktutil可以使用它来创建我们的代理对象在Active目录,将被用于访问。
kinit administrator
输入域名管理员密码 。
它应该返回没有错误。 你可以看到你是否成功获得了一张票:
klist
现在,我们通过运行msktutil(更新您的网络突出显示的值)在AD中配置代理服务原则。
警告:您不应该从OU使用msktutil来创建对象。
msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \
--upn HTTP/squidproxy.example.local --server domaincontroller1.example.local --verbose
如果您使用的是Server 2008域,则在命令的末尾添加“--enctypes 28”。
msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \
--upn HTTP/squidproxy.example.local --server domaincontroller1.example.local --verbose --enctypes 28
设置keytab的权限,以便squid可以读取它。
chgrp proxy /etc/squid3/PROXY.keytab
chmod g+r /etc/squid3/PROXY.keytab
在Windows Server上,通过右键单击SQUIDPROXY计算机并重新选择“重置帐户”,重新启动AD中的计算机帐户,然后按照以下步骤运行msktutil,以确保keytab按预期更新,并将密钥表由msktutil从/ etc / krb5.conf
正确
重新启动代理首先清除由kinit命令生成的kerberos故障单,然后运行以下命令:
msktutil --auto-update --verbose
如果没有找到keytab,请尝试在命令中添加“-k /etc/squid3/PROXY.keytab”,以查看它是否工作,然后排除故障,直到解决或用户无法使用Squid进行身份验证。
将以下内容添加到cron中,以便它可以在活动目录中自动更新计算机帐户(通常约30天)。 我通过记录器管道,所以如果需要,我可以看到syslog中的任何错误。 如所述,msktutil为其参数使用默认的/etc/krb5.conf
文件,因此如果您决定对其进行任何更改,请注意。
SHELL和PATH变量在那里确保cron运行正确地更改这个,如果你知道你在做什么。
crontab -e
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # m h dom mon dow command 00 4 * * * msktutil --auto-update --verbose | logger -t msktutil