分类: 系统运维
2010-07-19 11:13:12
16.4.2 Squid安全设置
身份认证是实现网络通信安全的重要机制之一。在安全的网络通信中,涉及的通信各方必须通过某种形式的身份验证机制来证明他们的身份,验证用户的身份 与所宣称的是否一致,然后才能实现对于不同用户的访问控制和记录。用户身份认证作为保护网络系统资源的第一道防线,在任何公共服务中都是必要的组成部分。 Squid代理服务也同样需要搭配满足需求的用户身份认证机制,保证合法终端客户以合法的权限访问网络系统资源。
在默认情况下,Squid服务本身不包括任何身份认证程序,但我们可以通过绑定外部用户认证程序的方式实现Squid服务本身的用户身份认证。下面 是一些Squid服务能够绑定的用户认证程序:
(1)LDAP认证:使用轻量级目录访问协议(Lightweight Directory Access Protocol);
(2)NCSA认证:使用NCSA风格的用户名和密码;
(3)SMB认证:使用SMB协议的服务,如SAMBA或Windows NT;
(4)MSNT认证:使用Windows NT的域验证;
(5)PAM认证:使用Linux的可装载验证模块;
(6)Getpwam认证:使用Linux的密码文件/etc/passord。
Squid不支持在透明代理模式下启用用户身份认证功能。
接下来给大家介绍一下Squid代理服务绑定NCSA用户认证的实现过程。
1.配置squid.conf文件
虽然Squid代理服务器可以绑定前述的多种用户认证方式,但最为常用的认证方式还是NCSA。下面是在Squid主配置文件"/usr /local/squid/etc/squid.conf"中实现NCSA认证方式绑定配置的重要部分。
#该选项指出了认证方式(basic)、需要的程序(ncsa_auth) |
(1)设置认证方式
参数auth_param basic program定义了认证方式为basic(从Squid 2.5版以后,NCSA认证包含在了basic中)、认证程序路径和认证程序需要读取的账号文件。
auth_param basic program /usr/bin/ |
该设置说明绑定NCSA认证,认证程序在"/usr/bin/ncsa_auth"路径下,用户账号文件在"/usr/local/squid /etc/password"路径下。
(2)设置认证程序的进程数
参数auth_param basic children定义了认证程序的进程数。
auth_param basic children 5 |
该设置说明NCSA认证程序许可的进程数是5。
(3)设置认证有效时间
参数auth_param basic credentialsttl定义了用户经过认证后的有效时间,用户在有效时间后如果还需要继续使用Squid代理服务,则必须重新输入用户名和密码。
auth_param basic credentialsttl 2 hours |
该设置说明NCSA认证的有效时间是两个小时。
(4)设置认证领域内容
参数auth_param basic realm定义了Web浏览器显示用户名/密码对话框时的领域内容。
auth_param basic realm My Proxy Caching Domain |
(5)设置允许经过认证的用户访问
定义了一条名为auth_user的ACL,ACL类型为proxy_auth,通过外部程序进行用户认证方式,列表值是REQUIRED,然后使 用http_access选项允许该访问控制列表。
acl normal proxy_auth REQUIRED |
2.建立账号文件
为了建立供用户认证使用的账号文件,可以利用Apache的htpasswd程序生成账号文件,放置在"/usr/local/squid/etc /passwd"路径下。该账号文件每行包含一个用户账号信息,即用户名和经过加密后的密码。
[root@localhost ~]# htpasswd -c /usr/local/squid/etc/passwd test |
3.测试用户认证
当Squid的安全配置工作完成后,有必要进行一下测试,检验一下我们的配置是否合适。测试用户认证的过程如下:
重启Squid服务,重启方法参见本章16.3.6节"启动和停止代理服务器"。
在终端客户的Web浏览器中配置好代理服务器的IP地址和端口号。
访问任意外部站点,此时Web浏览器会弹出输入用户名和口令的对话框,如图16-22所示。
输入正确的用户名和口令,就能够连上Internet了。
如果用户名和口令不正确,则出现"网络缓存服务器拒绝访问"的错误提示信息,如图16-23所示。
(点击查看大图)图16-22 登录对话框 |
图16-23 用户认证失败的错误提示信息 |