lakers009 发表于 2018-12-26 12:02:50

squid-7240173

  Squid的分类和作用   
  1、普通代理服务
  即标准的、传统的代理服务
  需要客户机在浏览器中指定代理服务器的地址、端口
  2、透明代理服务
  适用于企业的网关主机(共享接入Internet)中
  客户机不需要指定代理服务器地址、端口等信息
  需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理
  3、反向代理服务
  为Internet用户访问企业Web站点提供缓存加速
  Squid配置
  一、安装
  #rpm -ivh squid*
  二、配置
  #cd /etc/squid
  #cp squid.conf squid.conf.bak
  #vi /etc/squid/squid.conf
  http_port 192.168.0.1:8080                  //192.168.0.1为本机接内网IP地址
  cache_mem 64 MB
  cache_dir ufs /var/spool/squid 1000 16 256
  cache_effective_user squid
  cache_effective_group squid
  dns_nameservers 222.85.85.85                  //222.85.85.85为dnsIP
  cache_access_log /var/log/squid/access.log
  cache_log /var/log/squid/cache.log
  cache_store_log /var/log/squid/store.log
  visible_hostname 192.168.0.1
  cache_mgr admin@163.com
  acl all src 0.0.0.0/0.0.0.0
  http_access allow all
  三、初始化squid
  1、创建Squid使用硬盘缓冲区的目录结构
  #/usr/sbin/squid -z
  #ls -l /var/spool/squid/
  2、设置squid错误提示信息为中文
  #mv /etc/squid/errors /etc/squid/errors.bak
  #ln -s /usr/share/squid/errors/Simplify_Chinese /etc/squid/errors

  #/etc/init.d/squid>  四、测试
  1、关闭防火墙或开启8080端口
  #service iptables stop
  或
  #iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
  2、设置客户端IE浏览器
  右击IE——属性——连接——局域网设置——代理服务器
  地址:192.168.0.1端口:8080
  五、访问控制应用实例
  1、禁止IP地址为192.168.0.254的客户机上网。
  #vi /etc/squid/squid.conf
  acl badclientip1 src 192.168.0.254
  http_access deny badclientip1

  #/etc/rc.d/init.d/squid>  2、禁止192.168.0.0子网里所有的客户机上网。
  #vi /etc/squid/squid.conf
  acl badclientnet1 src 192.168.0.0/255.255.255.0
  http_access deny badclientnet1

  #/etc/rc.d/init.d/squid>  3、禁止用户访问IP地址为122.224.185.6的网站。
  #vi /etc/squid/squid.conf
  acl badsrvip1 dst 122.224.185.6
  http_access deny badsrvip1

  #/etc/rc.d/init.d/squid>  4、禁止用户访问域名为www.163.com的网站。
  #vi /etc/squid/squid.conf
  acl baddomain1 dstdomain -i www.163.com
  http_access deny baddomain1

  #/etc/rc.d/init.d/squid>  5、禁止用户访问域名包含有163.com的网站。
  #vi /etc/squid/squid.conf
  acl badurl1 url_regex -i 163.com
  http_access deny badurl

  #/etc/rc.d/init.d/squid>  6、禁止用户访问域名包含有sex关键字的URL
  #vi /etc/squid/squid.conf
  acl badurl2 url_regex -i sex
  http_access deny badurl2

  #/etc/rc.d/init.d/squid>  7、限制IP地址为192.168.0.254客户机并发最大连接数为5。
  #vi /etc/squid/squid.conf
  acl clientip1 src 192.168.0.254
  acl conn5 maxconn 5
  http_access deny client1 conn1

  #/etc/rc.d/init.d/squid>  8、禁止192.168.1.0这个子网里所有的客户机在周一到周五的9:00到18:00上网。
  #vi /etc/squid/squid.conf
  acl clientnet1 src 192.168.1.0/255.255.255.0
  acl worktime time MTWHD 9:00-18:00
  http_access deny clientnet1 worktime

  #/etc/rc.d/init.d/squid>  9、禁止客户机下载*.mp3、*.mp4、*.zip和*.rar类型的文件。
  #vi /etc/squid/squid.conf
  acl badfile1 urlpath_regex -i \.mp3$\.exe$\.zip$\.rar$
  http_access deny badfile1

  #/etc/rc.d/init.d/squid>  六、透明代理的实现
  1、编辑主配置文件
  #vi /etc/squid/squid.conf
  http_port 192.168.0.1:8080                  //192.168.0.1为本机接内网IP地址
  cache_mem 64 MB
  cache_dir ufs /var/spool/squid 1000 16 256
  cache_effective_user squid
  cache_effective_group squid
  dns_nameservers 222.85.85.85                  //222.85.85.85为dnsIP
  cache_access_log /var/log/squid/access.log
  cache_log /var/log/squid/cache.log
  cache_store_log /var/log/squid/store.log
  visible_hostname 192.168.0.1
  cache_mgr admin@163.com
  #以下是实现透明代理的4条语句的关键,缺一不可
  httpd_accel_host virtual
  httpd_accel_port 80
  httpd_accel_with_proxy on
  httpd_accel_uses_host_header on
  可以用iptables/ipchains直接将对Web端口80的请求直接转发到Squid端口8080,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。例如以下这条命令:
  iptables -t nat -A PREROUTING -s 192.168.2.0/32 -p tcp --dport 80 -j REDIRECT 8080 就是将192.168.2.0的所有针对80端口的访问重定向到8080端口。
  acl all src 0.0.0.0/0.0.0.0
  http_access allow all
  2、配置iptables实现NAT代理
  1)开启路由转发
  #echo 1 > /proc/sys/net/ipv4/ip_forward
  2)设置代理
  #iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j SNAT –-to-source 211.162.11.1
  3)设置端口重定向
  #iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
  七、用户身份认证(注:Squid不支持在透明代理模式下启用用户身份认证功能)
  1、认证程序查看
  #ls /usr/lib/squid
  2、编辑主配置文件
  #vi /etc/squid/squid.conf
  http_port 192.168.0.1:8080                  //192.168.0.1为本机接内网IP地址
  cache_mem 64 MB
  cache_dir ufs /var/spool/squid 1000 16 256
  cache_effective_user squid
  cache_effective_group squid
  dns_nameservers 222.85.85.85                  //222.85.85.85为dnsIP
  cache_access_log /var/log/squid/access.log
  cache_log /var/log/squid/cache.log
  cache_store_log /var/log/squid/store.log
  visible_hostname 192.168.0.1
  cache_mgr break@163.com
  #以下是实现用户身份认证的语句
  auth_param basic program /usr/lib/squid/ncsa_auth/etc/squid/passwd
  auth_param basic children 5
  auth_param basic credentialsttl 2 hours
  auth_param basic realm Example.com's Squid proxy-caching
  acl auth_user proxy_auth REQUSquid的分类和作用   
  1、普通IRED
  http_access allow auth_user
  3、建立帐户文件
  #useradd test1
  #passwd test1
  #htpasswd -c /etc/squid/passwd test1
  #useradd test2
  #passwd test2
  #htpasswd /etc/squid/passwd test2
  4、测试用户认证
  1)#/etc/init.d/squid restart
  2)在客户端的Web浏览器中配置好代理服务器的IP地址和端口号;
  3)访问任意网站,这时Web浏览器会弹出输入用户名和口令的对话框。
  4)输入正确的用户名和口令,就能连接上Internet了。
  5)如果用户名和口令不正确,则出现错误信息。
  注:若希望实现某些特殊IP地址或子网的客户机(如领导使用的计算机)不需要经过用户认证直接上网,其他客户机必须经过用户认证后才能上网的功能,可以利用Squid是顺序处理
  http_access选项的特点,为这些特殊的客户机建立类型为src源IP地址方式的ACL,然后将允许特殊客户机ACL的http_access的语句放在设置认证用户的http_access语句前面。
  acl noauth_user src 192.168.1.0/255.255.255.0
  auth_param basic program /usr/lib/squid/ncsa_auth/etc/squid/passwd
  auth_param basic children 5
  auth_param basic credentialsttl 2 hours
  auth_param basic realm Example.com's Squid proxy-caching
  acl auth_user proxy_auth REQUIRED
  http_access allow noauth_user
  http_access allow auth_user

页: [1]
查看完整版本: squid-7240173