《第13章配置防火墙与代理服务器ppt课件.ppt》由会员分享,可在线阅读,更多相关《第13章配置防火墙与代理服务器ppt课件.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在此输入您的封面副标题第13章 配置防火墙与代理服务器LinuxLinux操作系统与实训操作系统与实训( (第三版第三版)杨云杨云 编著编著中国铁道出版社中国铁道出版社国家精品课程国家精品课程/国家精品资源共享课程国家精品资源共享课程配套教材配套教材第13章 配置防火墙与代理服务器 项目描述:某高校组建了校园网,并且已经架设了Web、FTP、DNS、DHCP、Mail等功能的服务器来为校园网用户提供服务,现有如下问题需要解决。(1)需要架设防火墙以实现校园网的安全。(2)需要将子网连接在一起构成整个校园网。(3)由于校园网使用的是私有地址,需要进行网络地址转换,使校园网中的用户能够访问互联网。
2、 该项目实际上是由Linux的防火墙与代理服务器:iptables和squid来完成的,通过该角色部署iptables、NAT、squid,能够实现上述功能。 项目目标 :了解防火墙的分类及工作原理 了解NAT 掌握iptables防火墙的配置 掌握利用iptables实现NAT13.1 防火墙概述 13.3 NAT13.6 项目实录13.7 超级链接第13章 配置防火墙与代理服务器13.2 iptables13.4 squid代理服务器13.5 练习题13.1 防火墙概述 1什么是防火墙防火墙通常具备以下几个特点。 (1)位置权威性。 (2)检测合法性。 (3)性能稳定性。13.1 防火墙概
3、述 2防火墙的种类(1)包过滤防火墙。 (2)代理防火墙。 (3)状态检测技术。 13.2.1 iptables简介 早期的Linux系统采用过ipfwadm作为防火墙,但在核心中被ipchains所取代。Linux 2.4版本发布后,netfilter/iptables信息包过滤系统正式使用。 Netfilter/iptables IP数据包过滤系统实际由netfilter和iptables两个组件构成。Netfilter是集成在内核中的一部分,它的作用是定义、保存相应的规则。而iptables是一种工具,用以修改信息的过滤规则及其他配置。用户可以通过iptables来设置适合当前环境的规则
4、,而这些规则会保存在内核空间中。 对于Linux服务器而言,采用netfilter/iptables数据包过滤系统,能够节约软件成本,并可以提供强大的数据包过滤控制功能,iptables是理想的防火墙解决方案。 13.2 iptables 13.2.2 iptables工作原理 netfilter是Linux核心中的一个通用架构,它提供了一系列的“表”(tables),每个表由若干“链”(chains)组成,而每条链可以由一条或数条“规则”(rules)组成。实际上,netfilter是表的容器,表是链的容器,而链又是规则的容器。1iptables名词解释 (1)规则(rules)。设置过滤数
5、据包的具体条件,如IP地址、端口、协议以及网络接口等信息,iptables如表 条 件说 明Address针对封包内的地址信息进行比对。可对来源地址(Source Address)、目的地址(Destination Address)与网络卡地址(MAC Address)进行比对Port封包内存放于Transport层的Port信息设定比对的条件,可用来比对的Pott信息包含:来源Port(Source Port)、目的Port(Destination Port)Protocol通信协议,指的是某一种特殊种类的通信协议。Netfilter可以比对TCP、UDP或者ICMP等协议Interface
6、接口,指的是封包接收,或者输出的网络适配器名称Fragment不同Network Interface的网络系统,会有不同的封包长度的限制。如封包跨越至不同的网络系统时,可能会将封包进行裁切(Fragment)。可以针对裁切后的封包信息进行监控与过滤Counter可针对封包的计数单位进行条件比对 (2)动作(target)。当数据包经过Linux时,若netfilter检测该包符合相应规则,则会对该数据包进行相应的处理,iptables动作如表 13.2.2 iptables工作原理13.2.2 iptables工作原理 (3)链(chain)。数据包传递过程中,不同的情况下所要遵循的规则组合形
7、成了链。规则链可以分为以下两种。内置链(Build-in Chains)。用户自定义链(User-Defined Chains)。netfilter常用的为内置链,其一共有5个链,如表 13.2.2 iptables工作原理netfilter的5条链相互地关联,如图 iptables数据包转发流程图 13.2.2 iptables工作原理 (4)表(table)。接受数据包时,Netfilter会提供以下3种数据包处理的功能。 过滤。 地址转换。 变更。Netfilter根据数据包的处理需要,将链(chain)进行组合,设计了3个表(table):filter、nat以及mangle。 fil
8、ter。这是netfilter默认的表,通常使用该表进行过滤的设置,它包含以下内置链。 INPUT:应用于发往本机的数据包。 FORWARD:应用于路由经过本地的数据包。 OUTPUT:本地产生的数据包。filter表过滤功能强大,几乎能够设定所有的动作(target)。13.2.2 iptables工作原理 nat。当数据包建立新的连接时,该nat表能够修改数据包,并完成网络地址转换。它包含以下3个内置链。 PREROUTING:修改到达的数据包。 OUTPUT:路由之前,修改本地产生数据包。 POSTROUTING:数据包发送前,修改该包。nat表仅用于网络地址转换,也就是转换包的源或目标
9、地址,其具体的动作有DNAT、SNAT以及MASQUERADE,下面的内容将会详细介绍。13.2.2 iptables工作原理 mangle。该表用在数据包的特殊变更操作,如修改TOS等特性。内核以前,它包含两个内置链:PREROUTING和OUTPUT,内核发布后,mangle表对其他3个链提供了支持。 PREROUTING:路由之前,修改接受的数据包。 INPUT:应用于发送给本机的数据包。 FORWARD:修改经过本机路由的数据包。 OUTPUT:路由之前,修改本地产生的数据包。 POSTROUTING:数据包发送出去之前,修改该包。 2iptables工作流程13.2.2 iptabl
10、es工作原理iptables拥有3个表和5个链,其整个工作流程如图 13.2.2 iptables工作原理13.2.3 安装iptables1检查检查iptables是否已经安装,没有安装则使用是否已经安装,没有安装则使用yum命令安装命令安装在默认情况下,iptables已经被安装好了。可以使用rpm -qa命令来查看默认安装了哪些软件,如下所示。(iptables默认已经安装。)rootRHEL6 # rpm -qa | grep iptablesrootRHEL6桌面# yum clean all /安装前先清除缓存安装前先清除缓存rootRHEL6 # yum install ipta
11、bles y/若没装则使用若没装则使用yum安装。安装。 13.2 iptables13.2.3 安装iptables2iptables服务的启动、停止、重新启动、随系统启动服务的启动、停止、重新启动、随系统启动rootRHEL6 # service iptables startrootRHEL6 # service iptables stoprootRHEL6 # service iptables restartrootRHEL6 # chkconfig -level 3 iptables on #运行级别3 自动加载rootRHEL6 # chkconfig -level 3 iptabl
12、es off #运行级别3 不自动加载提示:亦可使用ntsysv命令,利用文本图形界面对iptables自动加载进行配置。13.2.4 iptables命令 如果想灵活运用iptables来加固系统安全的话,就必须熟练地掌握iptables的语法格式。iptables的语法格式如下。iptables -t 表名表名 -命令命令 -匹配匹配 -j 动作动作/目标目标1表选项 iptables内置了filter、nat和mangle 3张表,使用-t参数来设置对哪张表生效。例如,如果对nat表设置规则的话,可以在-t参数后面加上nat,如下所示。iptables -t nat -命令命令 -匹配匹
13、配 -j 动作动作/目标目标-t参数是可以省略的,如果省略了-t参数,则表示对filter表进行操作。例如:iptables -A INPUT -p icmp -j DROP13.2.4 iptables命令13.2.4 iptables命令13.2.4 iptables命令3匹配选项 匹配选项用来指定需要过滤的数据包所具备的条件。换句话说就是在过滤数据包的时候,iptables根据什么来判断到底是允许数据包通过,还是不允许数据包通过,过滤的角度通常可以是源地址、目的地址、端口号或状态等信息。如果使用协议进行匹配的话,就是告诉iptables从所使用的协议来进行判断是否丢弃这些数据包。在TCP
14、/IP的网络环境里,大多数的数据包所使用的协议不是TCP类型的就是UDP类型的,还有一种是ICMP类型的数据包,例如ping命令所使用的就是ICMP协议。下面先来介绍一些较为常用的匹配选项。更多介绍请参考相关文献。13.2.4 iptables命令13.2.4 iptables命令13.2.4 iptables命令(3)-dport或 -destination -port。作用:基于TCP包的目的端口来匹配包,也就是说通过检测数据包的目的端口是不是指定的来判断数据包的去留。端口的指定形式和-sport完全一样。例如:iptables -I INPUT -dport 80 -j ACCEPT(4
15、)-s或-src或-source。作用:以IP源地址匹配包。例如:iptables -A INPUT -s 1.1.1.1 -j DROP注意:在地址前加英文感叹号表示取反,注意空格,如:表示除此地址外的所有地址。13.2.4 iptables命令iptables -A OUTPUT -o eth1 -j ACCEPT4动作/目标选项 动作/目标决定符合条件的数据包将如何处理,其中最为基本的有ACCEPT和DROP。介绍常用的动作/目标如表 13.2.4 iptables命令13.2.5 设置默认策略 在iptables中,所有的内置链都会有一个默认策略。当通过iptables的数据包不符合链
16、中的任何一条规则时,则按照默认策略来处理数据包。 定义默认策略的命令格式如下。iptables -t 表名表名 -P 链名链名 动作动作【例13-1】 将filter表中INPUT链的默认策略定义为DROP(丢弃数据包)。rootserver # iptables -P INPUT DROP【例13-2】 将nat表中OUTPUT链的默认策略定义为ACCEPT(接受数据包)。rootserver # iptables -t nat -P OUTPUT ACCEPT13.2.6 iptables使用举例 【例13-1】清除filter表中所有链中的规则。rootserver # iptables
17、 -F【例13-3】查看filter表中所有链的规则列表。rootserver # iptables -L【例13-2】设置filter表中3个链的默认配置策略为拒绝。rootRHEL6 # iptables -P INPUT DROProotRHEL6 # iptables -P OUTPUT DROProotRHEL6 # iptables -P FORWARD DROP13.2.6 iptables使用举例 【例13-4】添加一个用户自定义的链custom。rootserver # iptables -N custom【例13-6】向filter表中的INPUT链的第2条规则前面插入一条
18、规则,允许来自于非网段的主机对本机的25端口的访问。rootRHEL6 # 【例13-5】向filter表的INPUT链的最后添加一条规则,对来自这台主机的数据包丢弃。rootRHEL6 # iptables -A INPUT -s 192.168.1.1 -j DROP13.2.6 iptables使用举例 【例13-7】向filter表的INPUT链中添加一条规则,拒绝外界主机访问本机tcp协议的100至1024端口。rootserver # iptables -A INPUT -p tcp -dport 100:1024 -j DROP【例13-8】向filter表的INPUT链中添加一
19、条规则,拒绝来自其他主机的ping请求。rootRHEL6 # iptables -A INPUT -p icmp -icmp-type 8 -j DROP13.2.6 iptables使用举例 【例13-9】假设某单位租用DDN专线上网。网络拓扑如图13-3所示。iptables防火墙的eth0接口连接外网,IP地址为;eth1接口连接内网,IP地址为。假设在内网中存在WEB、DNS和E-mail等3台服务器,这3台服务器都有公有IP地址。设置防火墙规则加强对内网服务器的保护,并允许外网的用户可以访问此3台服务器。13.2.6 iptables使用举例 /1. 清空所有的链规则rootRHE
20、L6 # iptables -F/2. 禁止iptables防火墙转发任何数据包rootRHEL6 # iptables -P FORWARD DROP/3. 建立来自Internet网络的数据包的过滤规则iptables -A FORWARD -d 222.206.100.2 -p tcp -dport 80 -i eth0 -j ACCEPTiptables -A FORWARD -d 222.206.100.3 -p tcp -dport 53 -i eth0 -j ACCEPTiptables -A FORWARD -d 222.206.100.4 -p tcp -dport 25 -
21、i eth0 -j ACCEPTiptables -A FORWARD -d 222.206.100.4 -p tcp -dport 110 -i eth0 j ACCEPT/4. 接受来自内网的数据包通过/5. 对于所有的ICMP数据包进行限制,允许每秒通过一个数据包,该限制的触发条件是10个包iptables -A FORWARD -p icmp -m limit -limit 1/s -limit-burst 10 -j ACCEPT13.3.1 NAT的基本知识 网络地址转换器NAT(Network Address Translator)位于使用专用地址的Intranet和使用公用地址
22、的Internet之间,主要具有以下几种功能。 (1)从Intranet传出的数据包由NAT将它们的专用地址转换为公用地址。 (2)从Internet传入的数据包由NAT将它们的公用地址转换为专用地址。 (3)支持多重服务器和负载均衡。 (4)实现透明代理。 这样在内网中计算机使用未注册的专用IP地址,而在与外部网络通信时使用注册的公用IP地址,大大降低了连接成本。同时NAT也起到将内部网络隐藏起来,保护内部网络的作用,因为对外部用户来说只有使用公用IP地址的NAT是可见的,类似于防火墙的安全措施。13.3 NAT13.3.1 NAT的基本知识1NAT的工作过程 (1)客户机将数据包发给运行N
23、AT的计算机。 (2)NAT将数据包中的端口号和专用的IP地址换成它自己的端口号和公用的IP地址,然后将数据包发给外部网络的目的主机,同时记录一个跟踪信息在映像表中,以便向客户机发送回答信息。 (3)外部网络发送回答信息给NAT。 (4)NAT将所收到的数据包的端口号和公用IP地址转换为客户机的端口号和内部网络使用的专用IP地址并转发给客户机。 以上步骤对于网络内部的主机和网络外部的主机都是透明的,对他们来讲就如同直接通信一样。如图 13.3.1 NAT的基本知识13.3.1 NAT的基本知识13.3.1 NAT的基本知识2NAT的分类 (1)源NAT(Source NAT,SNAT)。SNA
24、T指修改第一个包的源IP地址。SNAT会在包送出之前的最后一刻做好Post-Routing的动作。Linux中的IP伪装(MASQUERADE)就是SNAT的一种特殊形式。 (2)目的NAT(Destination NAT,DNAT)。DNAT是指修改第一个包的目的IP地址。DNAT总是在包进入后立刻进行Pre-Routing动作。端口转发、负载均衡和透明代理均属于DNAT。13.3.1 NAT的基本知识13.3.2 实现NAT(网络地址转换)1iptables中的中的NAT工作过程工作过程 用户使用iptables命令设置NAT规则,这些规则都存储在nat表中。设置的这些规则都具有目标动作,
25、它们告诉内核对特定的数据包做什么操作。根据规则所处理的信息包类型,可以将规则分组存放在链中。 要做源IP地址转换的数据包的规则被添加到POSTROUTING链中。 要做目的IP地址转换的数据包的规则被添加到PREROUTING链中。 直接从本地出去的数据包的规则被添加到OUTPUT链中。13.3.2 实现NAT(网络地址转换)1iptables中的中的NAT工作过程工作过程 NAT工作要经过以下的步骤,如图13-5所示。13.3.2 实现NAT(网络地址转换)1iptables中的中的NAT工作过程工作过程 NAT工作要经过以下的步骤。 DNAT。若包是被送往PREROUTING链的,并且匹配
26、了规则,则执行DNAT或REDIRECT目标。为了使数据包得到正确的路由,必须在路由之前进行DNAT。 路由。内核检查信息包的头信息,尤其是信息包的目的地。 处理本地进程产生的包。对nat表OUTPUT链中的规则进行规则匹配,对匹配的包执行目标动作。 SNAT。若包是被送往POSTROUTING链的,并且匹配了规则,则执行SNAT(公网IP地址为静态获得的)或MASQUERADE(公网IP地址为从ISP处动态分配)目标。系统在决定了数据包的路由之后才执行该链中的规则。13.3.2 实现NAT(网络地址转换)2配置SNAT SNAT功能是进行源IP地址转换,也就是重写数据包的源IP地址。若网络内
27、部主机采用共享方式,访问Internet连接时就需要用到SNAT的功能,将本地的IP地址替换为公网的合法IP地址。 SNAT只能用在nat表的POSTROUTING链,并且只要连接的第一个符合条件的包被SNAT进行地址转换,那么这个连接的其他所有的包都会自动地完成地址替换工作,而且这个规则还会应用于这个连接的其他数据包。SNAT使用选项-to-source,命令语法如下。iptables -t nat -A POSTROUTING -o 网络接口网络接口 -j SNAT -to-source IP地址地址13.3.2 实现NAT(网络地址转换)13.3.2 实现NAT(网络地址转换) 【例13
28、-10】公司内部主机使用网段的IP地址,并且使用Linux主机作为服务器连接互联网,外网地址为固定地址,现需要修改相关设置保证内网用户能够正常访问Internet,如图。13.3.2 实现NAT(网络地址转换)(1)在)在NAT服务器服务器RHEL6上添加双网卡。上添加双网卡。 由于安装系统时没有添加第二块网卡,所以此时需要单独在虚拟机中添加。在虚拟机中添加第二块网卡完成后,重启系统,却发现:无论是使用setup 命令检查网络配置,还是直接点击“系统”“首选项”“网络连接”,都无法找到新添加的第二块网卡。在终端窗口中,使用“ifconfig”命令也无法浏览第二块网卡的配置信息。仔细想来,都是由
29、于安装系统时没有直接添加一块网卡。这个问题的解决方法详见课本相关内容!这个问题的解决方法详见课本相关内容!13.3.2 实现NAT(网络地址转换)(2)部署网络环境配置)部署网络环境配置 本实训由3台Linux虚拟机组成,一台是NAT服务器(RHEL6),双网卡(,连接VMnet0,连接VMnet1); 1台是安装Linux操作系统的NAT客户端(client,IP:,连接VMnet1);还有1台是互联网上的Web服务器,也安装了Linux(RHEL5,IP:,连接VMnet2)。13.3.2 实现NAT(网络地址转换)(3)测试网络连通情况)测试网络连通情况 在RHEL 6测试与另两台计算机
30、的连通性,都能连通。rootRHEL6 桌面rootRHEL6 桌面 在client(内网:)上,只能ping通RHEL 6。rootclient # ping -c 3 10.0.0.1/网络畅通rootclient # ping -c 3 212.212.12.100/无法通信 在RHEL5 (外网:),只能ping通RHEL6。rootRHEL5 # ping -c 3 212.212.12.12/网络畅通rootRHEL5 # ping -c 3 10.0.0.2 /无法通信13.3.2 实现NAT(网络地址转换)(4)搭建过程)搭建过程Step1:开启内核路由转发功能。先在内核里打开
31、IP转发功能,如下所示。rootRHEL6 etc# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 /数值改为“1”rootRHEL6 etc# sysctl -p/启用转发功能net.ipv4.ip_forward = 1net.ipv4.conf.default.rp_filter = 1 (后面略)13.3.2 实现NAT(网络地址转换)(4)搭建过程)搭建过程Step2:添加SNAT规则。设置iptables规则,将数据包的源地址改为公网地址,如下所示。rootRHEL6 # rootRHEL6 # service iptables save
32、 #保存配置信息Saving firewall rules to /etc/sysconfig/iptables: 确定 13.3.2 实现NAT(网络地址转换)(4)搭建过程)搭建过程Step3:指定客户端的默认网关(其他客户端类似)。在网卡中直接设定也可以。rootclient1 # 13.3.2 实现NAT(网络地址转换)(5)测试过程)测试过程在client(内网:)上,能ping通RHEL 6和外网计算机RHEL5。rootclient # ping -c 3 10.0.0.1/网络畅通网络畅通rootclient # ping -c 3 212.212.12.100/网络畅通网络畅
33、通13.3.2 实现NAT(网络地址转换)13.3.2 实现NAT(网络地址转换)DNAT主要能够完成以下几个功能。(1)发布内网服务器。iptables能够接收外部的请求数据包,并转发至内部的应用服务器,整个过程是透明的,访问者感觉像直接在与内网服务器进行通信一样,如图 13.3.2 实现NAT(网络地址转换) 【例13-11】接上面的例13-10,NAT服务器安装了双网卡,eth1连接外网,IP地址为;eth0连接内网,IP地址为。企业内部网络Web服务器client的IP地址为。要求当Internet网络中的用户在浏览器中输入时可以访问到内网的Web服务器,如图所示。13.3.2 实现N
34、AT(网络地址转换) 根据题目要求可知,应该做DNAT。所以,应该向PREROUTING链添加规则。此时iptables命令的-j参数的语法格式为:-j DNAT -to-destination/-to IP1-IP2:port1 -port2具体步骤如下: (1)部署网络环境请参考例13-10。不再详述。(2)在Web服务器上配置 启用安装并启用Apache服务。 在Web本机上测试安装是否成功。 (3)在外网计算机上测试是否能成功访问内网的Web服务器。 在外网用户计算机(RHEL5)上,测试内网的Web服务。由于没有启用DNAT,不能成功访问Web服务器。测试结果如图13-7所示。13.
35、3.2 实现NAT(网络地址转换)13.3.2 实现NAT(网络地址转换)(4)在)在NAT服务器服务器RHEL6上配置上配置 先清除NAT的PREROUTING。rootRHEL6 # iptables -t nat -F PREROUTING 在NAT服务器RHEL6上配置DNAT。rootRHEL6 # iptables -t nat -A PREROUTING -p tcp -d 212.212.12.12 -dport 80 -j DNAT -to 10.0.0.2:80/或者:或者:rootRHEL6 # iptables -t nat -A PREROUTING -p tcp -
36、i eth1 -dport 80 -j DNAT -to 10.0.0.2:80/或者:或者:rootRHEL6 # 13.3.2 实现NAT(网络地址转换)(4)在外网计算机)在外网计算机RHEL5(IP:)上测试。结果如图:)上测试。结果如图13-8所示。所示。13.4.1 代理服务器工作原理 代理服务器(Proxy Server)等同于内网与Internet的桥梁。普通的Internet访问是一个典型的客户机与服务器结构:用户利用计算机上的客户端程序,如浏览器发出请求,远端www服务器程序响应请求并提供相应的数据。而Proxy处于客户机与服务器之间,对于服务器来说,Proxy是客户机,P
37、roxy提出请求,服务器响应;对于客户机来说,Proxy是服务器,它接受客户机的请求,并将服务器上传来的数据转给客户机。它的作用如同现实生活中的代理服务商。13.4 squid代理服务器13.4.1 13.4.1 代理服务器的工作原理代理服务器的工作原理13.4.1 代理服务器工作原理 13.4.1 代理服务器 (1)提高访问速度。 (2)用户访问限制。 (3)安全性得到提高。13.4.2 安装、启动与停止Squid服务 对于Web用户来说,Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率。 Squid将数据元缓存在内存中,同时也缓存DN
38、S查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。 Squid由一个主要的服务程序Squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。 Squid的另一个优越性在于它使用访问控制清单(ACL)和访问权限清单(ARL)。13.4.2 安装、启动与停止Squid服务 Squid的主要功能如下所示。代理和缓存HTTP、FTP和其他的URL请求。代理SSL请求。支持多级缓存。支持透明代理。支持ICP、HTCP、CARP等缓存摘要。支持多种方式的访问控制和全部请求的日志记录。提供HTTP服务器加速。能够缓存DNS查询。Squ
39、id的官方网站是。13.4.2 安装、启动与停止Squid服务 2安装、启动、停止安装、启动、停止squid服务服务squid服务服务rootRHEL6 # rpm -qa |grep squidrootRHEL6 # mount /dev/cdrom /iso rootRHEL6 # yum clean all /安装前先清除缓安装前先清除缓存存rootRHEL6 # yum install squid -y rootRHEL6 # service squid start/启动squid服务rootRHEL6 # service squid stop/停止squid服务rootRHEL6 #
40、 service squid restart/重新启动squid服务rootRHEL6 # service squid resload/重新加载squid服务rootRHEL6 # /etc/rc.d/init.d/squid reload/重新加载squid服务rootRHEL6 # chkconfid -level 3 squid on/运行级别3自动加载rootRHEL6 # chkconfid -level 3 squid off/运行级别3不自动加载13.4.2 安装、启动与停止Squid服务 3自动加载Squid服务 (1)使用chkconfig。rootserver # chkc
41、onfid -level 3 squid on/运行级别3自动加载rootserver # chkconfid -level 3 squid off /运行级别3不自动加载 (2)使用ntsysv。 使用ntsysv命令,利用文本图形界面对Squid自动加载进行配置,在“squid”选项前按空格加上“*”。13.4.3 配置squid服务器 1几个常用的选项 (1)http_port 3128。http_port 192.168.2.254:8080(2)cache_mem 512MB。 内存缓冲设置是指需要使用多少内存来作为高速缓存。(3)cache_dir ufs /var/spool/s
42、quid 4096 16 256。 用于指定硬盘缓冲区的大小。(4)cache_effective_user squid。 设置使用缓存的有效用户。cache_effective_user nobody(5)cache_effective_group squid。 设置使用缓存的有效用户组,默认为squid组,也可更改。13.4.3 配置squid服务器 (6)。 设置有效的DNS服务器的地址。(7)cache_access_log /var/log/squid/access.log。 设置访问记录的日志文件。(8)cache_log /var/log/squid/cache.log。 设置缓
43、存日志文件。该文件记录缓存的相关信息。(9)cache_store_log /var/log/squid/store.log。 设置网页缓存日志文件。网页缓存日志记录了缓存中存储对象的相关信息,例如存储对象的大小、存储时间、过期时间等。13.4.3 配置squid服务器 (10)。 visible_hostname字段用来帮助Squid得知当前的主机名,如果不设置此项,在启动Squid的时候就会碰到“FATAL:Could not determine fully qualified hostnamePlease set visible hostname”这样的提示。当访问发生错误时,该选项的值
44、会出现在客户端错误提示网页中。(11)。 设置管理员的邮件地址。当客户端出现错误时,该邮件地址会出现在网页提示中,这样用户就可以写信给管理员来告知发生的事情。13.4.3 配置squid服务器 2设置访问控制列表 Squid代理服务器是Web客户机与Web服务器之间的中介,它实现访问控制,决定哪一台客户机可以访问Web服务器以及如何访问。Squid服务器通过检查具有控制信息的主机和域的访问控制列表(ACL)来决定是否允许某客户机进行访问。ACL是要控制客户的主机和域的列表。使用acl命令可以定义ACL,该命令在控制项中创建标签。用户可以使用http_access等命令定义这些控制功能,可以基于
45、多种acl选项,如源IP地址、域名、甚至时间和日期等来使用acl命令定义系统或者系统组。(1)acl。acl命令的格式如下。13.4.3 配置squid服务器 acl 列表名称列表名称 列表类型列表类型 -i 列表值列表值 其中,列表名称用于区分Squid的各个访问控制列表,任何两个访问控制列表不能用相同的列表名。一般来说,为了便于区分列表的含义应尽量使用意义明确的列表名称。列表类型用于定义可被Squid识别的类别。例如,可以通过IP地址、主机名、域名、日期和时间等。常见的列表类型如表 ACL列表类型说 明src ip-address/netmask客户端源IP地址和子网掩码src addr1
46、-addr4/netmask客户端源IP地址范围dst ip-address/netmask客户端目标IP地址和子网掩码myip ip-address/netmask本地套接字IP地址srcdomain domain源域名(客户机所属的域)dstdomain domain目的域名(Internet中的服务器所属的域)srcdom_regex expression对来源的URL做正则匹配表达式dstdom_regex expression对目的URL做正则匹配表达式time指定时间。用法:acl aclname time day-abbrevs h1:m1-h2:m2其中day-abbrevs可
47、以为:S(Sunday)、M( Monday)、T(Tuesday)、W(Wednesday)、H( Thursday)、F( Friday)、A( Saturday)注意:h1:m1 一定要比 h2:m2 小port 指定连接端口,如:acl SSL_ports port 443proto指定所使用的通信协议,如:acl allowprotolist proto HTTPurl_regex设置URL规则匹配表达式urlpath_regex:URL-path设置略去协议和主机名的URL规则匹配表达式13.4.3 配置squid服务器 13.4.3 配置squid服务器 13.4.3 配置squ
48、id服务器 【例13-21】 禁止用户下载*.mp3、*.exe、*.zip和*.rar类型的文件。acl badfile urlpath_regex -i .mp3$.exe$.zip$.rar$http_access deny badfile【例13-22】 屏蔽站点。http_access deny badsite -i表示忽略大小写字母,默认情况下Squid是区分大小写的。【例13-23】 屏蔽所有包含“sex”的URL路径。acl sex url_regex -i sexhttp_access deny sex13.4.3 配置squid服务器 13.4.3 配置squid服务器 1
49、3.4.4 配置透明代理 利用Squid和NAT功能可以实现透明代理。透明代理的意思是客户端根本不需要知道有代理服务器的存在,客户端不需要在浏览器或其他的客户端工作中做任何设置,只需要将默认网关设置为Linux服务器的IP地址即可(eth0是内网网卡)。13.4.4 配置透明代理 修改squid.conf配置文件,并重新加载该配置 http_port 192.168.1.1:3128 transparent 添加iptables规则 客户机浏览器测试,验证透明代理的实施效果在客户机浏览器中不需要在浏览器中指定代理服务器的地址、端口需要设置网关注:透明代理无法实现访问控制注:透明代理无法实现访问
50、控制,并且保证没有重复的语句。比如:,并且保证没有重复的语句。比如:http_port 3128http_port 192.168.1.1:3128 transparent以上两条语句,在透明代理时,请一定将第一条注释或删除!以上两条语句,在透明代理时,请一定将第一条注释或删除!从案例中学习透明代理的配置1、实例要求、实例要求 如上图10-2所示,要求如下: 客户端在设置代理服务器地址和端口的情况下能够访问互联网上的Web服务器。 客户端不需要设置代理服务器地址和端口就能够访问互联网上的Web服务器,即透明代理。从案例中学习透明代理的配置2、客户端需要配置代理服务器的解决方案、客户端需要配置代