惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
博客园_首页
IT之家
IT之家
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
Jina AI
Jina AI
月光博客
月光博客
小众软件
小众软件
S
SegmentFault 最新的问题
量子位
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - bluesky

如何彻底关闭Win10自动更新,Win10永久关闭自动更新的方法 批处理实现软件静默批量安装 windows AD监听的端口 [FreeBSD] 双网卡绑定 Kea DHCP MySQL NTP服务器知识整理 linux的常用命令 Windows上配置PHP的LDAP扩展 PHP下使用ldap域账户认证密码 理解syslinux,SYSLINUX和PXELINUX 优化pxe网启动时tftp的传输速度 --- 针对pxelinux和bootmgr 建立Cent OS7server有些问题需要注意 freebsd-update upgrade -r 11.1-RELEASE Dmidecode-查询硬件信息 Linux文件特殊权限:SUID、SGID和SBIT Samba日志分析 freebsd ports update url Cisco交换机里IP和MAC地址互查找出对应端口 实现不同vlan间的相互通信方法一:单臂路由
配置squid集成域身份认证
bluesky · 2018-11-01 · via 博客园 - bluesky

终于有时间测试一下squid的域身份认证了,之前一直使用iptables来通过IP地址做的代理访问权限控制,而使用哪种方法是根据各个公司内部的具体需求来决定的。

首先明确一下需求,配置squid使它能支持域用户认证,如果可能的话,使用集成windows身份认证,这样域用户登录计算机后,不需要输入密码就可以使用,做到用户端透明,除非用户未使用域用户登录才会弹出需要输入帐户密码。

先放狗搜了一圈,大致确定了方向,使用samba和krb5做帐户认证,用squid来调用即可。

1、本文使用CentOS5.6系统,先安装需要的软件

yum install squid samba ntp

安装ntp是为了同步时间用的,如果squid的时间和域控制器时间相差太多,在以下配置中会出错。

同步时间的命令

ntpdate clock.redhat.com

2、修改hosts文件,把计算机名以及计算机全名设置好,本例域为test.local

vi /etc/hosts 127.0.0.1 squid squid.test.local localhost

3、修改dns,使用域控制器的DNS

vi /etc/resolv.conf nameserver 192.168.1.100

4、修改/etc/krb5.conf,更改其中的域信息,注意域名一定要全部大写

[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = TEST.LOCAL #改成你自己的域名 dns_lookup_realm = false dns_lookup_kdc = true #这里需要把原来的false改成true ticket_lifetime = 24h forwardable = yes [realms] TEST.LOCAL = { #改成你自己的域名 kdc = 192.168.1.100:88 #改成域控制器的IP admin_server = 192.168.1.100:749 #改成域控制器的IP default_domain = TEST.LOCAL #改成你自己的域名 } [domain_realm] .test.local = TEST.LOCAL #改成你自己的域名 test.local = TEST.LOCAL #改成你自己的域名 [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }

修改完毕可以使用以下名来验证,输入正确的密码就不报错(就是啥显示也没有),输入错误的就会报错

net ads join -U administrator@TEST.LOCAL

注意,这里的TEST.LOCAL也必须要全部大写,否则也会报错。

5、修改samba配置文件,以下只贴出来有变化或没有的

workgroup = TEST server string = squid security = ads realm = TEST.LOCAL password server = 192.168.1.100 winbind use default domain = yes encrypt passwords = yes idmap gid = 10000 - 20000 idmap uid = 10000 - 20000 os level = 20 dns proxy = no

6、加入域

net ads join -U administrator@TEST.LOCAL

然后输入密码就可以了,检测是否成功加入域的方法
wbinfo -t #测试域连接 wbinfo -u #列出所有用户 wbinfo -g #列出所有组 tlm_auth --username=administrator #测试ntlm_auth验证密码

7、配置NSS,在/etc/nsswitch.conf找到以下两行,在后面添加winbind即可

passwd: files winbind group: files winbind

8、修改squid配置文件,因为要做组验证,还需要在域控制器上添加一个名为internet的组,并添加好相应人员

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of=TEST.LOCAL\\internet auth_param ntlm children 5 auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of=TEST.LOCAL\\internet auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 5 hours acl NTLMUsers proxy_auth REQUIRED http_access allow all NTLMUsers

里面有两个TEST.LOCAL替换成你自己的就行了,如果要替换组,把后面的internet替换成你自己的组就行了

记得在规则里看好配置,如果你之前就有了一条deny,那这些配置是不会生效的,需要把http_access deny all放到最后
另外,要让干净的squid配置文件无错,还需要增加以下几行
cache_mgr admin@penglei.name visible_hostname squid.test.local

然后把squid服务重启一下就完成了,最后别忘了把squid、smb、winbind这几个服务设置成自动运行。