Squid 学习笔记
内容提示:本文以Redhat Enterprice Linux 4.0版本为基础,并成功实现。其它linux发行版请读者自行测试。
Squid为系统自带软件,可以在安装时选择相应软件包安装或用rpm命令安装。
安装完成后用以下命令启动:
#service squid start
或
#/etc/init.d/squid start
当然可以将start参数改为restart或stop来重启或停止squid服务。也可以用以下命令使服务在开机时自动启动:
#chkconfig squid on
作为练习,可将系统的防火墙关闭;至于实际应用需打开的端口请自行参考iptables相关文档。关闭iptables防火墙:
#service iptables stop
或
#/etc/init.d/iptables stop
接下来就是配置squid服务了。
在开始前,我们先看一下squid.conf文件的内容,应该知道以#开头的都是注释,所以以#开头的行和空行都可以删除,操作前先备份一下文件哦!
我们用下面命令来查看文件(文中使用的squid.conf即位于/etc/squid/下,文中不使用绝对路径):
#sed -e '/^#/d;/^$/d' squid.conf
#sed -e '/^#/d' squid.conf
sed -e '/^$/d'
#sed -e '/^#/d' squid.conf
grep -v ^$
#grep -v ^# squid.conf
grep -v ^$
#grep -v ^# squid.conf
sed -e '/^$/d'
花点时间说明下sed命令,不感兴趣的朋友可以略过:
可见:sed -e '/^#/d' 和 grep -v ^# ,以及sed -e '/^$/d'和grep -v ^$效果是一样的,不同的是sed是编辑命令,而grep只是一个过滤命令,就是将含有过滤内容的行显示出来;“-e”是指定后面的部分是要对被编辑内容的编辑脚本;“-v”是对grep产生的结果取反,不显示符合规则的行,而显示不符合规则的行。命令中的“^#”“^$”都是正则表达式:^表示行首;#无特殊含义,即字符#,$表示行尾,^$即表示空行,^#即表示以字符#开始的行,同理#$则表示以#结尾的行。斜杠只是把正则表达式括起来的符号,而斜杠后的d则表示将符合的行删除(delete)它是sed脚本的一个命令参数,单引号是把属于sed的脚本括起来,在特殊情况下“可以或必须”省略。注新版本的sed有-i选项,请慎用,它能直接修改目标文件!
目标一、打开/禁止指定网段的上网权限
定义访问控制列表
acl allowed_network src 192.168.1.0/24
acl restricted_network src 192.168.2.0/24
应用规则
#允许192.168.1.0/24网段上网,禁止192.168.2.0/24网段上网。
http_access allow allowed_network
http_access deny restricted_network
目标二、限制访问时间
定义访问控制列表
acl work_time time M T W H F 8:30-17:30
acl rest_time time 12:00-13:00
应用规则
#指定不能上网的主机可以在休息时间上网,指定可以上网的主机不能在工作时间(周一至周五的8:30到17:30)不能上网
http_access allow rest_time restricted_network
http_access deny work_time allowed_network
目标三、定义安全站点和禁止访问的站点
建立存放网站域名的文件,内容可以是主机名或域名。注:每个站点在文件中占一行。
#touch /etc/squid/allowed_sites.list
#touch /etc/squid/restricted_sites.list
例如:
www.yahoo.com.cn
microsoft.com
定义访问控制列表
acl allowed_sites dstdomain "/etc/squid/allowed_sites.list"
acl restricted_sites dstdomain "/etc/squid/restricted_sites.list"
应用规则
http_access deny restricted_sites
http_access allow allowed_sites
目标四、使用用户认证上网
建立保存用户密码的文件:
#touch /etc/squid/squid.passwd
#chmod o+r /etc/squid/squid.passwd
添加用户user01,生成密码:
#htpasswd /etc/squid/squid.passwd user01
New password:
Re-type new password:
Adding password for user user01
添加认证模块:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid.passwd
定义访问控制列表
acl ncsa_users proxy_auth REQUIRED
应用规则
http_access allow ncsa_users
接下去就可以根据各自的需要定义各种各样的条件进行网络管理了。