Squid代理--经典缓存代理服务器(实现正向代理配置、ACL各种访问控制、日志分析)

  • Squid是Linux系统中常用的一款开源代理服务软件官方网站http://www.squid-cache.org , 可以很好的实现http、ftp、dns查询,以及ssl等应用的缓存代理。
  • 一、Squid服务概述

    缓存代理概述

    1、代理的工作机制

    • 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面反馈给请求的客户端。如果缓存中没有,则由代理服务器向web服务器发起访问请求,当获得返回的web页面后,缓存服务器首先将数据保存到自己本身的缓存中,然后再发送给客户端。
    • 代理服务器的缓存机制如图所示:

    • HTTP代理的缓存加速对象主要是文字、图像等静态web元素。

    2、代理类型

    正向代理:
    ①传统代理,在所用软件中设置代理服务器地址及端口。
    ②透明代理,通过默认路由或者服务器iptables设置将请求交给代理服务器,实现用户无感知代理。

    • 正向代理常常存在于企业内部,当企业采用正向代理可实现如下优点:
    • 1)由于客户端的访问请求由代理服务器未完成访问,一定程度上起到保护作用。
    • 2)针对于企业内部多台机器访问相同web页面等,提升网络访问速度,减少公司网络拥堵。
    • 3)可控的内部网络访问控制,可以针对要访问的目标、客户机地址、访问时间段等进行过滤控制。

    反向代理:
    存在于企业服务提供端,实现将客户端请求接收分发给后面的web服务器群集

    • squid反向代理存在于服务提供端,可实现如下优点:
    • 1)加速客户端来访网站的访问速度。
    • 2)可将不同的URL请求分发到后台不同的web服务器上,实现负载均衡。
    • 3)同时互联网上的客户端只能访问到代理服务器的地址,并不知道后面web服务器真实地址,加强了安全功能。

    Squid代理服务器安装

    • squid代理缓存服务器安装方式有多种,可以选择去官网选择最新版本软件包,自行解压手动编译安装,也可选择yum直接安装。
    • 本文选择安装方式为yum自动安装方式,并进行后续实验。

    yum install squid -y

    • 注,此处代理服务器中防火墙策略不用关闭,需要通过规则链实现访问。

    二、构建传统代理

    实验环境

    服务器 操作系统 IP地址 使用软件
    squid代理服务器 centos7.3 192.168.144.136 squid
    web服务器 centos7.3 192.168.144.116 http
    client windows7 192.168.144.117 IE浏览器

    实验拓扑展示

    传统代理设置过程

    1、设置配置文件

    vim /etc/squid/squid.conf

    http_port 3128    //在服务监听端口下添加如下内容
    cache_mem 64 MB                   //指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
    reply_body_max_size 10 MB         //允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
    maximum_object_size 4096 KB       //允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
    
    • 清空防火墙规则,添加filter表规则连,允许3128端口通过

    iptables -F
    setenforce 0
    iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
    systemctl restart squid.service

    2、客户端访问设置

    • 客户端访问时只需要设置代理服务器的IP地址即可,然后直接访问web服务器地址即可。实验模拟的情况下,客户端与web服务器本身处于同一网段,因此直接访问web服务器也能访问,那么如何区分是否是通过代理服务器访问的还是客户端本身去访问的,需要通过查看web服务器的日志判断。


    3、web服务器端检测是否为代理服务器访问

    vim /var/log/httpd/access_log

    • 当查看到如下图所示,即访问原地址是代理服务器地址,即表示代理服务器设置成功。

    三、ACL访问控制

    • squid提供了强大的代理控制机制,通过合理设置ACL(访问控制列表)并进行限制,可以针对源地址、目标地址、访问的URL路径。
    • 注,本实验ACL访问控制建立在传统正向代理服务器中。

    控制方式

    • squid配置文件中,一使用acl配置项定义需要控制的条件;
    • 二:通过http_access配置项对已定义的列表做“允许”或者“拒绝”实现访问控制。

    常用的访问控制类型

    如图:

    1、基于源地址src的访问控制

    vim /etc/squid.conf

    acl localnet1 src 192.168.100.100/24   //设置原地址访问控制ACL策略名称为localnet1,设置地址为客户端地址
    acl localnet1 src 192.168.175.0/24     //禁止源地址目标段访问,切记,此处需要添加子网掩码的位数
    ...
    http_access deny localnet1         //设置策略为拒绝通过
    • 重启服务

    service squid restart

    • 客户端访问验证效果则访问禁止。

    如图

    2、基于访问目标地址的访问控制

    vim /etc/squid.conf

    acl destionhost dst 192.168.100.130/32   //访问目标地址策略
    ...
    http_access deny destionhost         //设置策略为拒绝通过
    • 重启服务

    service squid restart

    • 客户端访问验证效果则访问禁止。

    3、基于最大连接数的访问控制

    vim /etc/squid.conf

    acl MC20 maxconn 20   //最大链接数策略
    ...
    http_access deny MC20         //设置策略为拒绝通过
    • 重启服务

    service squid restart

    4、基于URL的访问控制

    vim /etc/squid.conf

    acl BURL url_regex -i ^rtsp:// ^emule://   //以rtsp等开头的URL
    acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$   //以mp3等为结尾的URL
    ...
    http_access deny BURL         //设置策略为拒绝通过
    http_access deny PURL         //设置策略为拒绝通过
    • 重启服务

    service squid restart

    5、基于时间段的访问控制

    vim /etc/squid.conf

    acl work time MTWHF 08:30-17:30   //时间段访问控制策略
    ...
    http_access deny work         //设置策略为拒绝通过
    • 重启服务

    service squid restart

    创建独立访问控制列表文件

    • 假如说针对某一些或者某一批量的进行访问控制,每条都写入配置文件中,这样会针对以后的修改以及查询都不方便,因此我们需要在配置文件中声明,可创建独立的配置访问控制配置文件。
    • 下面以访问目标地址为例,创建独立配置文件进行访问控制。

    vim /etc/squid/dest.list

    192.168.100.100
    192.168.100.110
    192.168.100.120
    192.168.100.130   //添加目标IP
    • 创建完成独立文件后,需要在squid配置文件中声明。
    • 此处需要注意,不论是修改主配置文件还是修改独立配置文件,想让修改后的服务生效,必须要重启squid服务。

    vim /etc/squid.conf

    acl destination dst "/etc/squid/dest.list"   //设置为dst目标地址访问控制,取名destination
    
    ...
    http_access deny destination   //拒绝列表(注意置顶)

    service squid restart

    • 重启服务后,再用客户端访问会发现想要访问目标网址的服务器被拒绝。

    四、squid日志分析

    • squid日志分析为了帮助管理员更加直观与方便管理服务器,可以通过日志分析进行处理。
    • 由于日志分析是在web页面中以图形化界面显示,因此需要打开squid代理服务器的httpd服务。
    • 注意,此处日志分析建立在传统正向代理服务当中。

      1、日志分析软件环境包安装

    yum install gd gd-devel
    mkidr /usr/local/sarg
    tar zxvf sarg-2.3.7.tar.gz -C /opt
    cd /opt/sarg-2.3.7

    • 执行安装程序

    ./configure --prefix=/usr/local/sarg \
    --sysconfdir=/etc/sarg \
    --enable-extraprotection //额外安全防护

    make && make install

    cd /etc/sarg/

    vim sarg.conf

    • 在sarg的配置文件中找到如下部分,按照实际情况按如下方式修改,并打开相应功能
    access_log /usr/local/squid/var/logs/access.log    //指定访问日志文件
    
    title "Squid User Access Reports"      //网页标题
    
    output_dir /var/www/html/squid-reports    //报告输出目录
    
    user_ip no          //使用用户名显示
    
    exclude_hosts /usr/local/sarg/noreport   //不计入排序的站点列表文件
    
    topuser_sort_field connect reverse   //top排序中有连接次数、访问字节、降序排列 升序是normal
    
    user_sort_field reverse    //用户访问记录 连接次数、访问字节按降序排序
    
    overwrite_report no   //同名日志是否覆盖
    
    mail_utility mailq.postfix   //发送邮件报告命令
    
    charset UTF-8   //使用字符集
    
    weekdays 0-6   //top排行的星期周期
    
    hours 0-23   //top排行的时间周期
    
    www_document_root /var/www/html  //网页根目录
    • 创建不计入站点文件,添加的域名将不被显示在排序中

    touch /usr/local/sarg/noreport
    yum install httpd -y
    systemctl start httpd.service

    • 日志分析安装完成后,使用客户端网址访问http://192.168.100.110/squid-reports
    • 出现如下图所示,即日志分析完成。

    原文地址:http://blog.51cto.com/13659253/2149641

    时间: 2024-10-12 21:31:14

    Squid代理--经典缓存代理服务器(实现正向代理配置、ACL各种访问控制、日志分析)的相关文章

    Squid透明代理+ACL访问控制+日志分析

    防伪码:仰天大笑出门去,我辈岂是蓬蒿人 第一章 Squid透明代理+ACL访问控制+日志分析 前言:搭建代理服务器可以提高上网打开网页的速度,可以对非法网站进行屏蔽,限制文件下载,以及查看员工访问internet的情况,包括上网的地址,用户,时间等,是企业网络管理的常用手段. 代理服务器分为传统代理和透明代理,传统代理适用于浏览internet,需要在浏览器上手工指定服务器地址和端口,不是很方便,但是可以隐藏本机真实的ip地址,而且为下载工具使用多个代理可以规避服务器的并发连接显示.透明代理适用

    apache 配置代理服务器(正向代理,反向代理)

    正向代理和反向代理是从数据流方向命名的,正向代理,代理的用户请求:反向代理,替代服务器接受请求 正向代理: 用户 -> 代理服务器 -> www  用户的请求数据给发代理服务器,代理服务器帮助用户去www请求数据,然后再返回给用户 作用:配置代理服务器,客户端做代理设置后可以访问facebook,Twitter 如何配置: <VirtualHost *:80> DocumentRoot /home/web ServerName www.xxx.com ServerAlias xxx

    【实战】Squid 缓存服务器 之 传统代理 + 透明代理

    目录: 1· Squid代理的概述原理2· 代理的基本类型3· Squid 服务脚本4· 构建代理服务器(传统代理.透明代理)5· 总结 Squid代理的概述原理 1)代理的工作机制 1.什么是 Squid ? Squid是一个高性能的代理缓存服务器,Squid支持FTP.gopher.HTTPS和HTTP协议.和一般的代理缓存软件不同,Squid用一个单独的.非模块化的.I/O驱动的进程来处理所有的客户端请求. 2·缓存的工作原理 squid 是工作在应用层的代理服务软件,squid 主要提供

    图解正向代理、反向代理、透明代理

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://z00w00.blog.51cto.com/515114/1031287 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理

    正向代理和反向代理

    [原创作品,技术交流.允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息.如有错误,请指正] /** author: lihaibo date: 1/25/2016 */ 今天看到几篇比较好的关于写代理服务器的文章(已经在末尾附地址),本文就是这几篇好文经过改动并结合自己实际情况来阐述代理和代理的工作原理. 正向代理(Forward Proxy)的概念 正 向代理,也就是传说中的代理,他的工作原理就像一个跳板, 简单的说, 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器

    图解正向代理、反向代理、透明代理(转)

    转自:http://www.cnblogs.com/Anker/p/6056540.html 正向代理:代理服务器代替客户端想服务器发送请求 反向代理:客户直接访问反向代理服务器,反向代理服务器通过反向代理获取服务器内容,然后返回给客户端 透明代理:修改包,中转,透明 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代

    正向代理,反向代理和透明代理的区别

    一.正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forward)是一个位于客户端[用户A]和原始服务器(origin server)[服务器B]之间的服务器[代理服务器Z],为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端.客户端必须要进行一些特别的设置才能使用正向代理.如下图1.1 (图1.1) 从上面的概念

    图解正向代理、反向代理、透明代理(反向代理可以实现负载均衡)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://z00w00.blog.51cto.com/515114/1031287 套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理

    分解正向代理、反向代理、透明代理

    套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术.一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术.常用的代理技术分为正向代理.反向代理和透明代理.本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理解代理服务技术. 一.正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forward)是一个位于客户端