主题 : 代理防火墙
我为人人,人人为我
级别: 七朵秋菊

UID: 13542
精华: 0
发帖: 1211
威望: 47453 点
无痕币: 23241 WHB
贡献值: 0 点
在线时间: 437(时)
注册时间: 2008-02-19
最后登录: 2023-08-15

0 代理防火墙

代理防火墙
一、基本概念

1、应用层代理

2、网络层防火墙

3、防火墙与代理的管理

二、iptables
1、iptable基本原理

2、NAT与路由

3、iptables安装配置

三、缓存代理squid
1、squid工作机制与基本功能

2、squid组成部分

3、squid安装配置





















代理防火墙
一、基本概念
由于网络访问是一项很复杂的活动,因而对它的管理也不容易,并且很多使用计算机用户也不是专业的计算机管理者,它们对于连接在网络上的计算机的保护很脆弱,导致其他用户在未经授权的情况下,很容易地通过网络进入到他的计算机中,窃取信息,或破坏计算机系统。
为了防止这些问题,计算机专家提出了防火墙的概念,即首先选定一块受保护的计算机范围,然后添加一个类似与建筑物中用于防火的设施,即防火墙,并假定防火墙是这个保护区与外界联系的惟一出口,然后由防火墙来决定,是放行,还是封锁进出的数据包。(防火墙就好比是门口的保安,什么人允许过进出,什么人不允许进出。)
根据防火墙在TCP/IP协议工作的不同层次,可将防火墙分为应用层代理和网络层防火墙。
1、应用层代理(Application Level Firewall,应用层防火墙)
针对不同网络服务提供细致而又安全的网络保护,它对每一种服务分别进行安全隔离,内部网络不直接与外部网络连接。
提供应用层防火墙服务的机器一般被称为代理服务器,它位于客户机与服务器之间,完全阻挡了两者间的数据交流。
为什么称为应用层代理。对于内部网络来看,它是一个服务器(内部客户机把请求都要交给它,但对于外部网络来看它只是一台客户机,这就是代理服务器的概念。)这样做的好处在于,内部客户机不直接与外部网络连接,减少了外部恶意侵害的可能性。
缺点:对系统的整个性能有较大的影响,而且,代理服务器必须针对客户机可能产生的所有应用层型逐一进行设置,增加了系统管理的复杂性。
2、网络层防火墙
工作在TCP/IP的协议的网络层,也称为包过滤型防火墙,其技术依据是网络中的分组传输技术。
每一个数据通常包含一些特定信息,如数据的源地址、目标地址、TCP/UDP、源端口和目标端口等。防火墙通过读取数据包中的地址信息,来判断这些包是否来自可信任的安全站点,一旦发现来自危险站点的数据包,防火墙便分将这些数据拒之门外。
优点:简单实用,实现成本较低,在环境比较简单的情况下,能够以较小的代价在一定程度上保证系统的安全。
缺陷:只能根据数据包的来源、目标和端口等网络信息进行判断,无法识别基于应用层的来意侵入,如恶意的Java小程序以及电子邮件中附带的病毒。
3、防火墙与代理的管理
主要的代理服务器管理工具有:apache、socks、squid,它们几乎能够实现所有服务的代理。
Apache是一个WWW服务器,但它可以通过自带的mod_proxy模块为apache服务器提供http代理服务。
二、iptables
1、iptable基本原理
****netfilter框架
在整个网络流程的若干位置旋转了一些钩子(HOOK),而每个钩子上登记了一些处理函数进行处理。
IPv4一共有5个钩子函数,分别为:
    NF    _IP_PRE_ROUTING:数据进入系统,经IP校验以后,数据会调用这一个钩子函数进行处理,决定是发给本机还是需要路由。
    NF_IP_LOCAL_IN:如果发给本机会调用这个钩子函数进行处理,处理后将数据交给上层。
    NF_IP_FORWARD:若该数据包应转发,则调用这个钩子函数。
    NF_IP_POST_ROUTING:将要转发的数据包再经过这个钩子函数处理后,再传输到网络上。
    NF_IP_LOCAL_OUT:本地产生的数据经过这个钩子函数处理后,进行路由选择处理,然后再经过第4个钩子函数处理后发送到网络上。
****iptables规则链
Iptables的作用在于为netfiler的处理提供相关规则,它们告诉netfiler对来自某些源、前往某些目的的或具有某些协议类型的数据包做些什么。
如果某个数据包与规则匹配,则可以规则所确定的目标“ACCEPT(accept,接受)”允许该信息包通过,或目标“DRIP(滴,水滴)、REJECT(拒绝,抵制)”,来阻塞并杀死信息包,当然还可以执行其他管理员定义的目标。
一条规则只定义了某一类型的数据包,而对其他类型的数据包,就需要另一条规则来描述,也就有了多种类型的规则存在。同时,这些规则均会被某个netfilter钩子函数来处理,我们把被同一个钩子函数处理的多条规则称为一条规则链。
对应于netfilter框架中的5个检查点,iptables需要维护5条规则链:
    PREROUTING
FORWARD
POSTROUTING
INPUT
OUTPUT
建立规则并将链放在适当位置之后,就可以开始进行真正的网络信息包过滤工作了。来自外界的信息包到达防火墙时,首先被PREROUTING规则处理,这个信息包处理通过后,IP协议棧检查信息包的头信息,尤其是信息包的目的地,根据信息包的目的地决定信息包的走向,即进行路由。
如果信息包的目的地是本地系统,那么,内核将它传递到INPUT链进行处理,通过这个规则链的相应处理后,即被系统上层应用程序接收。
如果信息包源自系统内部,并且,此信息包要前往另一个外部系统,那么信息包传递到OUTPUT链,通过处理后,IP协议棧查看信息包头的信息进行路由,确定路由后,传输给POSTROUTING规则链进行处理,根据规则链的“目标”来发送或丢弃该包。
如果信息包源自外部系统,并前往外部系统,在通过PREROUTING处理后,即传给FORWARD规则链处理,处理完成后,IP协议棧进行路由,最后交给POSTROUTING链处理发送。
每次处理过程都基本相同,它使用包头信息,与它所传递到链中的每条规则进行比较,看是否与某条规则完全匹配。如果信息包与某条规则匹配,那么内核就对该信息包执行由规则指定的操作,如果不匹配,那么它将与链中的下一条规则进行比较。如果信息包与链中的任何规则都不匹配,那么内核将参考链的策略,来决定如何处理该信息包。
  iptables规则表
iptables的规则组织在3个不同的规则表中:
Filter:针对过滤系统
NAT:针对地址转换系统
Mangle:针对策略路由和特殊应用
   规则链分配如下:
     Filter:INPUT、FORWARD、OUTPUT
     NAT:PREROUTING、POSTROUTING、INPUT、OUTPUT
     Mangle:OUTPUT、POSTROUTING
   针对主机的安全性主要集中在Filter表中的INPUT和OUTPUT规则链,这两个关键字在添加规则的时候用到。在内核编译了NetFilter系统以后,系统会自动建立这5个规则链和3个规则表。
2、NAT与路由
****NAT与路由的比较
   所有的路由仅仅充当中间人角色,也就是通常所说的存储转发(除将源MAC地址转换成自己的MAC地址外,路由器不会对转发的数据包做任何修改。)NAT(Network Address Translation,网络地址转换)恰恰是出于某种特殊需要而对数据包的源IP地址、目的IP地址、源端口、目的端口进行改写的操作。
****NAT的使用
   1、使外部机器可以访问内网
      例:一个局域网内要建立一台WWW服务器,可以在防火墙的外部网卡上绑定多个合法的IP地址,然后再将外部访问其中一个时,转发到内部的WWW服务器地址上就可以了。
   2、代理上网
      例:一个局域网,有一台机器采用拨号上网,因为只有一个外部IP地址,哪么可以使用这台机器代理整个局域网上网(可以在应用层做代理,如使用代理软件。也可以在网络层做代理,如使用NAT。)
       3、NAT重定向(当接收到一个包后,不是转发这个包,而是将其重定向到系统上的某一个应用程序。最常风的应用就是与squid配合使用成为透明代理,在对http流量进行缓存的同时,可以提供对Internet的无缝访问。)
****NAT的类型
    1、静态NAT(Static NAT)
       内部永久映射成外部网络中的某个合法地址。
     2、动态NAT(Pooled NAT)
       在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。
     3、网络端口转换(Network Address Port Translation,NAPT)
       是把内部地址映射到外部外部网络的一个IP地址的不同端口上。
****通过iptables实现NAT
    在iptables/netfilter组合框架中,将NAT分成了两种类型,即源NAT(SNAT),就是改变数据包的源地址(出去),和目的NAT(DNAT),就是改变转换数据包的目的地址(进来)。
    如iptables规则表中所述,nat表用来实现地址转换,它定义了3条规则链:PREROUTING(对数据包的源地址进行地址转换)、POSTROUTING(对数据包的目的地址进行转换)、OUTPUT(对于本地数包的目的地址的转换,则由OUTPUT规则来实现),分别监听3个Netfilter钩子函数:NF_IP_PRE_ROUTING   NF_IP_POST_ROUTING及NF_IP_LOCAL_OUT。

3、iptables安装配置
****安装
  rpm -qa|grep  iptables
  rpm –ivh iptables*  --force
    从http://www.iptables.org/files/iptables-X.X.X.tar.bz2处下载源代码包
    tar –zxvf iptables*
    cd  iptables*
    make      make install
****配置防火墙
  1、命令语法
    Iptables工具安装成功后,即可使用iptables命令来设置、维护和检查Linux内核的IP包过滤规则。
    Iptables可以定义不同的表,每个表都包含几个内部的链,也能包含用户自定义的链。每个链都是一个规则列表,将对应的包进行匹配:每条规则指定了一个target(目标),指定如何处理与之匹配的包,也可以指定这个目标为跳向同一个表内的用户定义的链。语法为:






  2、规则操作参数说明(看书)
      3、规则定义参数说明(看书)
      4、匹配规则扩展选项(看书)
****包过滤配置
  假定有这样一个局域网,内部IP地址范围为192.168.1.1-254,网关为192.168.1.1,绑定在eth0接口上,同时,网关具有外部Internet地址为10.25.0.7,绑定在eth1接口上,防火墙就位于网关上,通过它的设置,对流经防火墙的网络包进行过滤处理。同时,在局域内部有一台WWW服务器,它的内部地址为192.168.1.2,它被设置为可以接受外部的网络用户访问。
  1、首先清空所有的规则链,并设置规则链的默认策略为DROP,即丢弃所有的网络数据包。
    iptables  -F
    iptables  -P  INPUT  DROP
    iptables  -P  OUTPUT  DROP
    iptables  -P  FORWARD  DROP
  2、新增用户自定义规则链bad_tcp_packets、allowed和icmp_packets。
    iptables  -N  bad_tcp_packets
     iptables  -N  allowed  
     iptables  -N  icmp_packets
  3、定义bad_tcp_packets规则链的规则:将要求重导向的网络连接记录起来,然后将报文丢弃(防止本地机器被其他主机作为入侵跳板,侵入别的主机):
    iptables –A bad_tcp_packets –p TCP  !  --syn  -m  state  --state  NEW  -j  LOG  --log-level  INFO  --log-prefix “New not syn:”
    iptables  -A  bad_tcp_packets  -p  TCP  !  --syn  -m  state  --state  NEW  -j  DROP
三、缓存代理squid
1、squid工作机制与基本功能

2、squid组成部分

3、squid安装配置

Total 0.058319(s) query 3, Time now is:05-17 13:16, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛