设为首页 收藏本站
查看: 1920|回复: 0

[经验分享] RHCE253--架设Squid服务器

[复制链接]

尚未签到

发表于 2018-12-28 08:17:06 | 显示全部楼层 |阅读模式
  一、squid代理服务技术概览
  1、代理服务器的简单概述与工作流程
  2、squid代理服务器分类与介绍
  3、squid代理服务器的安装和配置文件讲解
  4、ACL访问控制应用
  5、搭建透明代理网关服务器
  6、搭建反向代理服务器
  7、实现代理服务器的身份认证和安装代理日志分析软件
  二、代理服务器的简单概述与原理
  1、代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:
  它是网络信息的中转站。代理服务器是介于浏览器和Web服务器之间的另一台服务器,有了它之后,
  浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,信号会先送到代理服务器,
  由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。大部分代理服务器都具有缓冲的功能,
  就好像一个大的Cache,它有很大的存储空间,它不断将新取得的数据储存到它本机的存储器上,
  如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器
  取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。所以,
  一般所说的代理就是指缓存代理,可以实现共享网络、加快访问网站速度、防止***等。在Linux下
  主要使用squid代理服务器软件。
  2、代理服务的缓存作用体现和工作流程
  通过缓存的方式为用户提供Web访问加速,对用户的Web访问进行过滤控制

  如果缓存中已经有客户机请求的数据,则走1、2、3、4路线
  如果缓存中还没有客户机请求的数据,则走1、2、5、6、3、4路线
  三、缓存squid代理服务器分类与介绍
  1、缓存代理主要可以分为如下三种:
  (1)普通代理服务
  即标准的、传统的代理服务
  需要客户机在浏览器中指定代理服务器的地址、端口
  (2)透明代理服务
  适用于企业的网关主机(共享接入Internet)中
  客户机不需要指定代理服务器地址、端口等信息
  需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理
  对于普通代理服务和透明代理服务都可以通过如下图表示:

  (3)反向代理服务
  反向代理的缓存加速机制更多的应用于以下情况:Internet中的大量用户访问企业的单个(或少量)
  Web站点;如下图表示:

  而普通代理、透明代理更多应用于:局域网的大量用户访问Internet中的大量Web站点
  四、squid代理服务器的安装和配置文件讲解
  1、安装squid软件包squid-2.6.STABLE21-3.el5.i386.rpm(可以直接 挂载光盘安装)
  [root@mail Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm --force

  warning: squid-2.6.STABLE21-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key>  Preparing...                ########################################### [100%]
  1:squid                  ########################################### [100%]
  服务名:squid
  主程序:/usr/sbin/squid
  配置目录:/etc/squid/
  主配置文件:/etc/squid/squid.conf
  默认监听端口:TCP 3128
  默认访问日志文件:/var/log/squid/access.log
  配置文件:
  /etc/squid/squid.conf   主配置文件(重点,见过内容最多的配置文件)
  /var/log/squid/access.log 访问日志
  /var/log/squid/cache.log   缓存日志
  /var/log/squid/store.log   缓存的存储日志
  /var/spool/squid/
  代理服务器网页存放的目录。一级目录为16个,二级目录为256个。
  (题外话:需要修改squid.conf配置文件之前,最好先作好备份,默认已经有squid.conf.default)
  对于主配置文件/etc/squid/squid.conf,通过 set number了解如下常用配置项:
  919 http_port 3128   定义代理服务器的端口,3128是默认端口号
  953 cache_mem 8 MB
  分配为代理服务器的物理内存空间。一般为物理内存的1/3左右。最大到1/2.
  1160 cache_dir ufs /var/spool/squid 100 16 256
  代理服务器的网页存放目录,及大小(缓存数据的存储格式为ufs,100为缓存目录分配的磁盘空间(MB))
  1199 maximum_object_size 4096 KB 最大缓存对象 4m.
  1322 access_log /var/log/squid/access.log squid 定义访问日志
  1338 cache_log /var/log/squid/cache.log 定义缓存日志
  1348 cache_store_log /var/log/squid/store.log 存储日志
  574 acl all src 0.0.0.0/0.0.0.0
  定义访问列表。all表示访问列的名称。src表示访问列表的类型,在此表示源地址或源网段。
  577 acl to_localhost dst 127.0.0.0/8 dst表示目标网段
  578 acl SSL_ports port 443 port定义端口
  615 http_access allow manager localhost      允许或拒绝某些访问列表
  2383 visible_hostname linux 有效主机名,linux表示主机名
  五、ACL访问控制应用
  1、ACL(Access Control List,访问控制列表)
  凡是搞过网络的都知道ACL这个访问控制机制,可以从客户机的IP地址、请求访问的URL/域名/文件类型、
  访问时间、并发请求数等各方面进行控制。
  应用访问控制的方式:
  定义acl列表
  acl  列表名称 列表类型 列表内容 …
  针对acl列表进行限制
  http_access allow或deny 列表名……
  例如禁止任何客户机使用代理服务:
  acl all src 0.0.0.0/0.0.0.0          //先写出列表
  http_access deny all       //然后调用(这很像网络设备写ACL,然后在接口调用一样)
  2、常用的acl列表类型
  src
  dst
  port
  srcdomain
  dstdomain
  time
  maxconn
  url_regex
  urlpath_regex
  3、ACL列表定义示例
  acl LAN1 src 192.168.1.0/24
  acl PC1 src 192.168.1.66/32
  acl Blk_Domain dstdomain .qq.com .kaixin001.com
  acl Work_Hours time MTWHF 08:30-17:30
  acl Max20_Conn maxconn 20
  acl Blk_URL url_regex -i ^rtsp:// ^mms://
  acl Blk_Words urlpath_regex -i sex adult
  acl RealFile urlpath_regex -i \.rmvb$ \.rm$
  4、根据已经定义的部分ACL列表进行访问控制
  http_access deny LAN1 Blk_URL
  http_access deny LAN1 Blk_Words
  http_access deny PC1 RealFile
  http_access deny PC1 Max20_Conn
  http_access allow LAN1 Work_Hours
  上面这个ACL的具体用法在squid的主配置文件中有罗列出,下面copy一些重点举例说明:
  acl aclname src   ip-address/netmask 源网段,源ip,源ip范围
  acl aclname dst   ip-address/netmask 目标网段
  acl aclname myip ip-address/netmask 代理服务器的IP地址
  acl aclname arp   mac-address mac地址
  acl aclname srcdomain   .foo.com 源域名
  acl aclname dstdomain   .foo.com 目标域名
  acl aclname srcdom_regex [-i] xxx 源域名,支持正则表达式
  eg: acl jpdomain srcdom_regex -i '\.jp$'
  acl aclname dstdom_regex [-i] xxx 目标网段
  acl aclname time [day-abbrevs] [h1:m1-h2:m2] 限制时间
  day-abbrevs:SMTWHFA (周日~周六)
  #               S - Sunday
  #               M - Monday
  #               T - Tuesday
  #               W - Wednesday
  #               H - Thursday
  #               F - Friday
  #               A - Saturday      //因为S被周日用了,就用第二个字母
  eg1: acl time1 time MTWHF 09:00-12:00 14:00-17:30
  acl time2 time MTWHF 08:00-18:00
  acl boss src 192.168.101.112
  http_access allow boss time2
  http_access deny time1
  acl aclname url_regex [-i] ^http://   限制访问协议,网址
  eg2: 不允许ftp,rstp,mms
  acl ftp_test url_regex -i ^ftp://
  acl rstp_test url_regex -i ^rstp://
  acl mms_test url_regex -i ^mms://
  acl url_test url_regex -i fake yellow
  acl aclname urlpath_regex [-i] \.gif$ 限制下载,文件扩展名
  eg3:
  acl download urlpath_regex -i \.torrent$ \.exe$ \.com$ \.zip$ \.rar$ \.tar$ \.gz$
  http_access deny download
  acl aclname urllogin [-i] [^a-zA-Z0-9] 限制网址登录
  acl aclname port 80 70 21 限制端口
  eg4: 禁止QQ
  acl qq port 4000 8000
  acl aclname proto HTTP FTP 限制协议
  acl aclname method GET POST 限制方法
  acl aclname proxy_auth [-i] username ... 身份认证
  acl aclname proxy_auth_regex [-i] pattern 身份认证,支持正则表达式
  acl aclname maxconn number 限制用户最大连接数
  eg5: 限制连接
  acl conn1 maxconn 2
  注意:若没有做过调整,默认的squid.conf文件中将会拒绝其他客户机使用代理服务,
  即存在“http_access deny all”
  实例:
  允许员工的周一~周五,12:00~14:00 15:00~18:00上网
  允许webmin端口
  允许tomcat端口
  禁止下载.gz .tar .bz2的文件
  vim /etc/squid/squid.conf
  acl mynet src 192.168.101.0/24
  acl time1 time MTHWFA 07:00-14:00 15:00-18:00
  acl Safe_ports port 10000
  acl Safe_ports port 8080
  acl download urlpath_regex -i \.gz$ \.tar$ \.bz2$
  http_access deny download mynet
  http_access allow mynet time1
  http_access deny all

  service squid>  service httpd start
  cd /var/www/html/
  touch 1.tar 2.gz 3.bz2
  通过在Windows用浏览器下载可以发现被拒绝!
  六、搭建透明代理网关服务器
  1、实现透明代理的基本条件
  (1)前提:
  客户机的Web访问数据要能经过防火墙
  代理服务构建在网关(防火墙)主机中
  (2)配置要求:
  代理服务程序能够支持透明代理
  设置防火墙规则,将客户机的Web访问数据自动重定向给代理服务程序处理
  基本实现步骤
  修改squid.conf配置文件,并重新加载该配置
  http_port 192.168.1.1:3128 transparent
  添加iptables规则
  iptables -t nat -I PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT
  --to-ports 3128
  客户机浏览器
  不需要在浏览器中指定代理服务器的地址、端口
  七、搭建反向代理服务器
  1、基本实现步骤
  修改squid.conf文件,并重新加载该配置
  http_port 218.29.30.31:80 vhost
  cache_peer 192.168.2.11 parent 80 0 originserver weight=5 max-conn=30
  cache_peer 192.168.2.12 parent 80 0 originserver weight=5 max-conn=30
  cache_peer 192.168.2.13 parent 80 0 originserver weight=5 max-conn=30
  cache_peer 192.168.2.14 parent 80 0 originserver weight=1 max-conn=8
  cache_peer Web服务器地址 服务器类型 http端口 icp端口 [可选项]
  2、验证反向代理的实施效果
  在上游Web服务器(192.168.2.11~192.168.2.14)中开启httpd服务
  在Internet中的客户机(218.29.30.29)中访问反向代理服务器主机(http://218.29.30.31),
  应能够看到实际由上游Web服务器提供的网页内容,查看反向代理服务器的访问日志信息
  [root@localhost ~]# tail -1 /var/log/squid/access.log
  (由于我所处的特殊网络环境,该试验无法对结果进行验证)
  八、实现代理服务器的身份认证和安装代理日志分析软件
  1、linux系统的代理支持认证方式有ncsa,smb,ldap,shadow,pam
  通过编辑主配置文件:
  vim /etc/squid/squid.conf
  275 auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid.passwd
  276 auth_param basic children 5
  277 auth_param basic realm Squid proxy-caching web server
  278 auth_param basic credentialsttl 2 hours
  279 auth_param basic casesensitive off
  580 acl password proxy_auth REQUIRED    //设置认证的访问列表
  648 http_access allow password time1      //允许正确用户在上网时间访问
  649 http_access allow mynet time1
  2、添加用户:
  htpasswd -c /etc/squid/squid.passwd xx1
  htpasswd /etc/squid/squid.passwd xx2     //不用-c选项啦

  然后重新加载squid配置文件参数service squid>  通过浏览器代理上网比必须认证通过了~!~
  3、代理日志分析软件sarg的安装使用:
  [root@mail ftp]# tar -zxf sarg-2.2.5.tar.gz -C /opt/
  [root@mail ftp]# cd /opt/sarg-2.2.5/
  [root@mail sarg-2.2.5]# mkdir /var/www/html/sarg
  [root@mail ftp]# ./configure --enable-bindir=/usr/bin--enable-sysconfdir=/usr/local/sarg/ --enable-htmldir=/var/www/html/sarg --enable-mandir=/usr/share/man/man1/
  [root@mail ftp]# make
  [root@mail ftp]# make install
  [root@mail sarg]# vim /usr/local/sarg/sarg.conf
  37 access_log /var/log/squid/access.log
  138 temporary_dir /tmp
  144 output_dir /var/www/html/sarg
  [root@mail sarg]# vim /etc/httpd/conf.d/sarg.conf
  
  Options Indexes MultiViews
  AllowOverride authconfig
  Order allow,deny
  Allow from 192.168.101.0/24
  authtype basic
  authname "aadfajsldf"
  authuserfile /var/www/html/.htpasswd
  require user admin
  
  [root@mail sarg]# htpasswd -c /var/www/html/.htpasswd admin
  New password:
  Re-type new password:
  Adding password for user admin
  [root@mail sarg]# sarg
  SARG: Records in file: 142, reading: 100.00%
  SARG: Successful report generated on /var/www/html/sarg/2010Aug23-2010Sep02
  http://x.x.x.x/sarg 就可以通过帐号admin登陆使用了
  这里有一点要注意的:
  1、htpasswd -c /etc/squid/squid.passwd
  创建后查看-->
  /etc/squid/squid.passwd //这个是浏览网页密码
  2、htpasswd -c /var/www/html/.htpasswd
  创建后查看-->
  /var/www/html/.htpasswd    //这个是登录sarg密码


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656661-1-1.html 上篇帖子: Squid 高级访问控制-ACL 下篇帖子: squid 配置详解+认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表