640 likes | 848 Views
安全网管技术. 张焕杰 中国科学技术大学网络信息中心 james@ustc.edu.cn http://202.38.64.40/~james/nms Tel: 3601897(O). 第4章 网络隔离与防火墙技术(2). 本章主要内容 物理隔离技术与双网隔离计算机 协议隔离技术 防火墙技术 包过滤防火墙 Socks 协议 参考资料: 计算机网络安全基础,袁津生等,人民邮电出版社. 包过滤防火墙. 状态包过滤 Stateful Firewall 记录数据包的连接状态
E N D
安全网管技术 张焕杰 中国科学技术大学网络信息中心 james@ustc.edu.cn http://202.38.64.40/~james/nms Tel: 3601897(O)
第4章 网络隔离与防火墙技术(2) • 本章主要内容 • 物理隔离技术与双网隔离计算机 • 协议隔离技术 • 防火墙技术 • 包过滤防火墙 • Socks协议 • 参考资料: • 计算机网络安全基础,袁津生等,人民邮电出版社
包过滤防火墙 • 状态包过滤 Stateful Firewall • 记录数据包的连接状态 • TCP: SYN_SENT, SYN_RECV, ESTABLISHED, TIME_OUT等,根据数据包的内容动态修改 • UDP: 无状态,第一个数据包触发创建一个新连接,后续的数据包刷新该连接,直到超时后连接信息被删除 • ICMP: 状态
包过滤防火墙 • 状态表 • 连接,并发连接数 • Linux中存放连接的信息需要200-400字节的内存
状态的维护 • 对于TCP,跟踪所有的数据包,依据TCP 有限状态机动态修改状态 • 对于UDP等无连接协议,一定时间内没有数据就认为连接结束,实现时设置超时时间 • TCP也有超时处理 • 防止有死连接
包过滤防火墙 • 状态过滤 • 对所有已经建立的连接的数据包都允许(包括相关的连接的数据包) • 非法的数据包禁止 • 管理员只要定义规则,判断新连接的数据包是否需要允许即可控制信息流 • 简化了配置,方便了管理,提高了安全性
包过滤防火墙 • 正常情况下,大部分数据包属于已经建立的连接,直接允许通过,提高了性能 • 例如对于设置了1000条规则的防火墙,不使用状态过滤的时候,每个数据包平均要检查500条规则才能作出是否转发该数据包的判断 • 如果使用了状态过滤,正常情况下绝大多数数据包仅仅检查状态后就允许通过了
地址转换 • NAT Network Address Translation • 对通过防火墙的数据包IP地址进行改变 • 隐藏内部网络结构,提高安全性 • 解决IPv4地址不足 • 将正式地址和内部保留地址进行互相翻译 • 10.*.*.* • 172.16.*.* – 172.31.*.* • 192.168.*.* • 比代理效率高
地址转换 • NAT Network Address Translation • 适应所有IP通信 • 重写IP地址 • 1:1的映射 • 类似直拨电话 • NAPT Network Address Port Translation • 只能处理TCP、UDP、ICMP通信 • 重写IP地址和端口信息 • 1:M的映射 • 类似电话分机概念
NAT & NAPT • 尽量使用NAT,基本上各种协议都可用 • 解决IP地址不足时,往往要用到NAPT
数据包内数据的处理 • NAT仅仅处理数据包头的信息有时不能有效工作 • 数据包中包含的IP地址、端口信息需要同时修改 • DNS中的A和PTR查询/应答 • Netmeeting使用的H.323数据包中的IP地址信息 • FTP PORT命令 • SIP协议等 • 只有完全处理了这些信息,应用才能正确工作
NAT的分类 • 不同的产品的术语不同 • Linux下的NAT有两种实现 • 在路由处理时修改IP地址,只能实现1:1的翻译,不处理任何其他数据,这种NAT工作方式不在本课程中讨论 • Netfilter/iptables下的地址转换,是一种NAPT实现,是重点
NAT的分类 • 对每个连接的第一个数据包的处理分类 • SNAT • 修改第一个连接包的源地址 • 常用于把内部的IP地址转换成正式IP地址对外通信 • DNAT • 修改第一个连接包的目的地址 • 常用于从外面访问内部的服务器
地址换换 SNAT 10.0.0.1:1024 -> 202.38.64.2:80 61.132.182.2:8133 ->202.38.64.2:80 NAT设备 客户机 服务器 61.132.182.2:8133 <- 202.38.64.2:80 10.0.0.1:1024 <- 202.38.64.2:80 内部网络 外部网络 源地址转换 SNAT
地址换换 DNAT 10.0.0.1:80 <- 202.38.64.2:1024 61.132.182.2:80 <- 202.38.64.2:1024 NAT设备 服务器 客户机 61.132.182.2:80 -> 202.38.64.2:1024 10.0.0.1:80 -> 202.38.64.2:1024 内部网络 外部网络 目的地址转换 DNAT
NAT的分类 • Cisco • Inside source / Inside destination • Outside source / Outside destination
Cisco更具体信息 • Deploying and Troubleshooting Network Address Translation: http://210.45.224.8/~james/cw2003/NMS-2102.pdf
Linux Kernel中的包过滤防火墙 • Ipfw/ipfwadm • 2.0.*中使用移植于BSD的ipfw • 缺点:包过滤、NAT等代码混杂在整个网络相关代码中 • Ipchains • 2.2.*中使用 • Netfilter/iptables • 2.4.* • http://www.netfilter.org/ • 模块化,支持状态跟踪
Netfilter/iptables • Netfilter是Linux kernel 中对数据包进行处理的框架 • 在数据包的处理路径上定义了5个HOOK位置 • NF_IP_PRE_ROUTING • NF_IP_LOCAL_IN • NF_IP_FORWARD • NF_IP_POST_ROUTING • NF_IP_LOCAL_OUT
netfilter结果 • NF_ACCEPT: continue traversal as normal. • NF_DROP: drop the packet; don't continue traversal. • NF_STOLEN: I've taken over the packet; don't continue traversal. • NF_QUEUE: queue the packet (usually for userspace handling). • NF_REPEAT: call this hook again.
Netfilter • Iptables是netfilter上的应用程序 • nat mangle filter
Netfilter/iptables • 可以实现完整的基于连接跟踪的包过滤防火墙 • 支持包过滤,双向地址转换 • 一般是路由型的 • 使用ebtables中的bridge+nf patch可以表现为网桥型的 • http://ebtables.sourceforge.net/
nat 中的内定规则链 进来的数据包 发出的数据包 PRE ROUTING POST ROUTING 路由 PREROUTING 处理DNAT规则 POSTROUTING 处理SNAT规则 连接的第一个数据包处理后会 保持一些信息,用来在应答的 数据包再次通过时修改数据包 内容 本机
Linux 配置 echo 1 > /proc/sys/net/ipv4/ip_forward ip add add 218.22.10.4/24 dev eth0 ip addr add 192.168.0.1/24 dev eth1 ip link set eth0 up ip link set eth1 up ip route add 0/0 via 218.22.10.1 iptables –t nat –A POSTROUTING –j SNAT –to 218.22.10.1 –o eth0
复杂的设置 #1增加一个IP地址, 含义是让Linux能接收到发送给218.22.10.5的数据包,以便进行地址转换 ip addr add 218.22.10.5 dev eth0 #2将所有发送给218.22.10.5的数据包,转换成发送给192.168.0.2 iptables -t nat -A PREROUTING -j DNAT –d 218.22.10.5 --to 192.168.0.2 #3将所有由192.168.0.2发出的数据包,转换成由218.22.10.5发出 iptables -t nat -A POSTROUTING -j SNAT --to 218.22.10.5 -s 192.168.0.2 -o eth0
设置(2) #4 从内部发送给192.168.0.2的要进行转换为从网关发出的,否则内部的机器无法连接218.22.10.5,因为返回的数据包不经过网关就发送回去了 iptables -t nat -A POSTROUTING -j SNAT --to 192.168.0.1 -s 192.168.0.0/24 -d 192.168.0.2 -o eth1 #5其他的转换 iptables -t nat -A POSTROUTING -j SNAT --to 218.22.10.4 -s 192.168.0.0/24 -o eth0
设置要求 • 网关的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,作为www服务器,开放80端口 • 192.168.1.12地址转换成218.22.166.102,作为邮件服务器,开放25、80、110、143端口 • 其它计算机转换为218.22.166.99,这个IP也是Linux网关的IP地址
基本设置 ip addr add 218.22.166.99/28 dev eth0 ip addr add 218.22.166.101/28 dev eth0 ip addr add 218.22.166.102/28 dev eth0 ip addr add 192.168.1.254/24 dev eth2 ip link set eth0 up ip link set eth2 up #缺省路由 ip route add 0/0 via 218.22.166.97 #到校内192.168.*.*的路由,下一跳是主干交换机的IP地址 ip route add 192.168.0.0/16 via 192.168.1.253
NAT设置 iptables -t nat -A PREROUTING -j DNAT -d 218.22.166.101 --to 192.168.1.11 iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.1.11 --to 218.22.166.101 iptables -t nat -A POSTROUTING -j SNAT -s 192.168.0.0/16 -d 192.168.1.11 --to 192.168.1.254 iptables -t nat -A PREROUTING -j DNAT -d 218.22.166.102 --to 192.168.1.12 iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.1.12 --to 218.22.166.102 iptables -t nat -A POSTROUTING -j SNAT -s 192.168.0.0/16 -d 192.168.1.12 --to 192.168.1.254
NAT设置 #其他出去的转换,都转化成从网关的IP出去的 iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.0.0/16 --to 218.22.166.99
包过滤设置 #首先允许所有建立的连接 iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED #www服务器,允许连接TCP80端口,其他的被拒绝,并记录日志 #记录日志时每分钟最多记录10条日志 iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.11 --dport 80 iptables -A FORWARD -j LOG -d 192.168.1.11 -m limit --limit 10/min --log-prefix " WWW "
包过滤设置 #mail服务器 iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.12 --dport 25 iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.12 --dport 80 iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.12 --dport 110 iptables -A FORWARD -j ACCEPT -p tcp -d 192.168.1.12 --dport 143 iptables -A FORWARD -j LOG -d 192.168.1.12 -m limit --limit 10/min --log-prefix " mail " iptables –A FORWARD –j DROP –o eth2
Linux下实现透明网桥型包过滤 • Linux 下bridge,实现了网桥的功能,包括STP生成树协议 • 使用ebtabls bridge+nf patch可以实现网桥型的包过滤 • iptables –m physdev 扩展 • --physdev-in • --physdev-out
透明网桥包过滤 eth0 eth1 外部网络 Linux 机器 服务器 要求:设置透明网桥包过滤
透明网桥包过滤 brctl addbr br0 brctl addif br0 eth0 brctl addif br0 eth2 ip link set eth0 up ip link set eth1 up ip link set br0 up ip addr add xx.xx.xx.xx/y br0
透明网桥包过滤 iptables –A FORWARD –j ACCEPT –m state --state ESTABLISHED,RELATED iptables –A FORWARD –j ACCEPT –d server_ip –p tcp --dport 80 iptables –A FORWARD –j DROP –m physdev --physdev-out eth1
防火墙产品 • 基于通用平台的软件系统 软件型 • 基于专用平台的集成产品 • ASIC芯片实现包处理 • 通用CPU实现包处理
基于通用平台的软件产品 • 基于通用的硬件、软件平台 • 如基于Windows NT系统、Solaris系统 • 价格相对较低 • 功能丰富 • 强调认证的较多 • 安全性依赖于底层的操作系统 • 在国内商用的不多 • Check-Point
专用ASIC芯片实现的 • 典型产品为Netscreen公司产品 • 利用ASIC或NP芯片实现包过滤、地址转换、加密处理 • 可以得到极高的性能 • Netscreen 5400 • 12Gbps 3DES加密到6Gbps