1安全网管技术张焕杰中国科学技术大学网络信息中心james@ustc.edu.cn~james/nmsTel:3601897(O)2第3章网络隔离与防火墙技术(2)本章主要内容–物理隔离技术与双网隔离计算机–协议隔离技术–防火墙技术–包过滤防火墙–Socks协议参考资料:–计算机网络安全基础,袁津生等,人民邮电出版社3包过滤防火墙状态包过滤StatefulFirewall记录数据包的连接状态–TCP:SYN_SENT,SYN_RECV,ESTABLISHED,TIME_OUT等,根据数据包的内容动态修改–UDP:无状态,第一个数据包触发创建一个新连接,后续的数据包刷新该连接,直到超时后连接信息被删除–ICMP:状态4包过滤防火墙状态表连接,并发连接数超时协议SRCSportDSTDportstate5状态的维护对于TCP,跟踪所有的数据包,依据TCP有限状态机动态修改状态对于UDP等无连接协议,一定时间内没有数据就认为连接结束,实现时设置超时时间TCP也有超时处理6包过滤防火墙状态过滤对所有已经建立的连接的数据包都允许(包括相关的连接的数据包)非法的数据包禁止管理员只要定义规则,判断新连接的数据包是否需要允许即可控制信息流简化了配置,方便了管理,提高了安全性7地址转换NATNetworkAddressTranslation对通过防火墙的数据包IP地址进行改变隐藏内部网络结构,提高安全性解决IPv4地址不足–将正式地址和内部保留地址进行互相翻译–10.*.*.*–172.16.*.*–172.31.*.*–192.168.*.*比代理效率高8地址转换NATNetworkAddressTranslation–适应所有IP通信–重写IP地址–1:1的映射–类似直拨电话NAPTNetworkAddressPortTranslation–只能处理TCP、UDP、ICMP通信–重写IP地址和端口信息–1:M的映射–类似电话分机概念9102011NAT&NAPT尽量使用NAT,基本上各种协议都可用解决IP地址不足时,往往要用到NAPT121314数据包内数据的处理NAT仅仅处理数据包头的信息有时不能有效工作数据包中包含的IP地址、端口信息需要同时修改–DNS中的A和PTR查询/应答–Netmeeting中的IP地址信息–FTPPORT命令–SIP协议等只有完全处理了这些信息,应用才能正确工作15NAT的分类不同的产品的术语不同Linux下的NAT有两种实现–在路由处理时修改IP地址,只能实现1:1的翻译,不处理任何其他数据,这种NAT工作方式不在本课程中讨论–Netfilter/iptables下的地址转换,是一种NAPT实现,是重点16NAT的分类对每个连接的第一个数据包的处理分类–SNAT修改第一个连接包的源地址常用于把内部的IP地址转换成正式IP地址对外通信–DNAT修改第一个连接包的目的地址常用于从外面访问内部的服务器17地址换换SNATNAT设备客户机服务器10.0.0.1:1024-202.38.64.2:8061.132.182.2:8133-202.38.64.2:8061.132.182.2:8133-202.38.64.2:8010.0.0.1:1024-202.38.64.2:80内部网络外部网络源地址转换SNAT18地址换换DNATNAT设备服务器客户机10.0.0.1:80-202.38.64.2:102461.132.182.2:80-202.38.64.2:102461.132.182.2:80-202.38.64.2:102410.0.0.1:80-202.38.64.2:1024内部网络外部网络目的地址转换DNAT19NAT的分类Cisco–Insidesource/Insidedestination–Outsidesource/Outidedestination20212223Cisco更具体信息DeployingandTroubleshootingNetworkAddressTranslation:~james/cw2003/NMS-2102.pdf24nat中的内定规则链PREROUTING进来的数据包路由本机发出的数据包POSTROUTINGPREROUTING处理DNAT规则POSTROUTING处理SNAT规则25例子InternetLinux网关交换机服务器Linux网关作为单向地址转换设备的简单应用eth1192.168.0.1eth0218.22.10.4网关218.22.10.1iptables-tnat-APOSTROUTING-jSNAT--to218.22.10.1-oeth026Linux配置echo1/proc/sys/net/ipv4/ip_forwardipaddadd218.22.10.4/24deveth0ipaddradd192.168.0.1/24deveth1iplinkseteth0upiplinkseteth1upiprouteadd0/0via218.22.10.1iptables–tnat–APOSTROUTING–jSNAT–to218.22.10.1–oeth027InternetLinux交换机服务器192.168.0.2218.22.10.5Linux作为双向地址转换设备的应用eth1192.168.0.1eth0218.22.10.4网关218.22.10.128复杂的设置#1增加一个IP地址,含义是让Linux能接收到发送给218.22.10.5的数据包,以便进行地址转换ipaddradd218.22.10.5deveth0#2将所有发送给218.22.10.5的数据包,转换成发送给192.168.0.2iptables-tnat-APREROUTING-jDNAT–d218.22.10.5--to192.168.0.2#3将所有由192.168.0.2发出的数据包,转换成由218.22.10.5发出iptables-tnat-APOSTROUTING-jSNAT--to218.22.10.5-s192.168.0.2-oeth029设置(2)#4从内部发送给192.168.0.2的要进行转换为从网关发出的,否则内部的机器无法连接218.22.10.5,因为返回的数据包不经过网关就发送回去了iptables-tnat-APOSTROUTING-jSNAT--to192.168.0.1-s192.168.0.0/24-d192.168.0.2-oeth1#5其他的转换iptables-tnat-APOSTROUTING-jSNAT--to218.22.10.4-s192.168.0.0/24-oeth030Linux网关31设置要求网关的eth0接口接电信出口,可用的地址段为218.22.166.98-218.22.166.110掩码255.255.255.240,网关是218.22.166.97。eth2接内部网络,地址为192.168.1.254。内部网络的IP地址范围为192.168.*.*。192.168.1.11地址转换成218.22.166.101,作为服务器,开放80端口192.168.1.12地址转换成218.22.166.102,作为邮件服务器,开放25、80、110、143端口其它计算机转换为218.22.166.99,这个IP也是Linux网关的IP地址32基本设置ipaddradd218.22.166.99/28deveth0ipaddradd218.22.166.101/28deveth0ipaddradd218.22.166.102/28deveth0ipaddradd192.168.1.254/24deveth2iplinkseteth0upiplinkseteth2up#缺省路由iprouteadd0/0via218.22.166.97#到校内192.168.*.*的路由,下一跳是主干交换机的IP地址iprouteadd192.168.0.0/16via192.168.1.25333NAT设置iptables-tnat-APREROUTING-jDNAT-d218.22.166.101--to192.168.1.11iptables-tnat-APOSTROUTING-jSNAT-oeth0-s192.168.1.11--to218.22.166.101iptables-tnat-APOSTROUTING-jSNAT-s192.168.0.0/16-d192.168.1.11--to192.168.1.254iptables-tnat-APREROUTING-jDNAT-d218.22.166.102--to192.168.1.12iptables-tnat-APOSTROUTING-jSNAT-oeth0-s192.168.1.12--to218.22.166.102iptables-tnat-APOSTROUTING-jSNAT-s192.168.0.0/16-d192.168.1.12--to192.168.1.25434NAT设置#其他出去的转换,都转化成从网关的IP出去的iptables-tnat-APOSTROUTING-jSNAT-oeth0-s192.168.0.0/16--to218.22.166.9935包过滤设置#首先允许所有建立的连接iptables-AFORWARD-jACCEPT-mstate--stateESTABLISHED,RELATED#服务器,允许连接TCP80端口,其他的被拒绝,并记录日志#记录日志时每分钟最多记录10条日志iptables-AFORWARD-jACCEPT-ptcp-d192.168.1.11--dport80iptables-AFORWARD-jLOG-d192.168.1.11-mlimit--limit10/min--log-prefix包过滤设置#mail服务器iptables-AFORWARD-jACCEPT-ptcp-d192.168.1.12--dport25iptables-AFORWARD-jACCEPT-ptcp-d192.168.1.12--dport80iptables-AFORWARD-jACCEPT-ptcp-d192.168.1.12--dport110iptables-AFORWARD-jACCEPT-ptcp-d192.168.1.12--dport143iptables-AFORWARD-jLOG-d192.168.1.12-mlimit--limit10/min--log-prefixmailiptables–AFORWARD–jDROP–oeth237Linux下实现透明网桥型包过滤Linux下bridge,实现了网桥的功能,包括STP生成树协议使用ebtablsbridge+nfpatch可以实现网桥型的包过滤iptables–mphysdev扩展--physdev-in--physdev-out38透明网桥包过滤Linux机器服务器eth0eth1要求:设置透明网桥包过滤外部网络39透明网桥包过滤brctladdbrbr0brctladdifbr0eth0brctladdifbr0eth2iplinkseteth0upiplinkseteth1upiplinksetbr0upipaddraddxx.xx.xx.xx/ybr040透明网桥包过滤iptables–AFORWARD–jACCEPT–mstate--stateESTABLISHED,RELATEDiptables–AFORWARD–jACCEPT–dserver_ip–ptcp--dport80iptables–AFORWARD–