Download presentation
Presentation is loading. Please wait.
Published byAníbal Castro de Sousa Modified 6年之前
1
潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse
网络与信息安全 网络安全 (一) 潘爱民,北京大学计算机研究所
2
内容 TCP/IP基础 防火墙 防火墙的基本介绍 几种防火墙的类型 防火墙的配置 防火墙技术的发展
3
安全层次 应用安全 系统安全 网络安全 安全协议 安全的密码算法
4
TCP/IP overview 协议栈 一些数据包的格式 IP数据包 TCP/UDP数据包 常用的上层协议 几个常用工具
5
TCP/IP协议栈
6
IP地址划分 保留私用的网络地址: 还有一些具有特殊意义的网络地址,如广播地址和127.0.0.1地址等。
还有一些具有特殊意义的网络地址,如广播地址和 地址等。
7
协议栈各层数据包的结构
8
IP网络互连的原理 广播子网内部 ARP地址解析 从MAC地址到IP地址之间的解析 以太网络间路由
9
IP数据包格式
10
UDP数据包格式
11
TCP数据包格式
12
TCP连接的建立和终止时序图
13
常用的上层协议 DNS: 53/tcp,udp FTP: 20,21/tcp,udp telnet: 23/tcp,udp
HTTP: 80/tcp,udp NNTP: 119/tcp,udp SMTP: 25/tcp,udp POP3: 110/tcp,udp 参考:IANA提供的port-numbers.txt
14
常用的网络工具 Netstat Ipconfig/ifconfig Ping Tracert ……
15
防火墙(Firewall) 防火墙的基本设计目标 防火墙的控制能力 对于一个网络来说,所有通过“内部”和“外部”的网络流量都要经过防火墙
通过一些安全策略,来保证只有经过授权的流量才可以通过防火墙 防火墙本身必须建立在安全操作系统的基础上 防火墙的控制能力 服务控制,确定哪些服务可以被访问 方向控制,对于特定的服务,可以确定允许哪个方向能够通过防火墙 用户控制,根据用户来控制对服务的访问 行为控制,控制一个特定的服务的行为
16
防火墙能为我们做什么 定义一个必经之点 防火墙提供了一个监视各种安全事件的位置,所以,可以在防火墙上实现审计和报警
挡住未经授权的访问流量 禁止具有脆弱性的服务带来危害 实施保护,以避免各种IP欺骗和路由攻击 防火墙提供了一个监视各种安全事件的位置,所以,可以在防火墙上实现审计和报警 对于有些Internet功能来说,防火墙也可以是一个理想的平台,比如地址转换,Internet日志、审计,甚至计费功能 防火墙可以作为IPSec的实现平台
17
防火墙本身的一些局限性 对于绕过防火墙的攻击,它无能为力,例如,在防火墙内部通过拨号出去
防火墙不能防止内部的攻击,以及内部人员与外部人员的联合攻击(比如,通过tunnel进入) 防火墙不能防止被病毒感染的程序或者文件、邮件等 防火墙的性能要求
18
防火墙的类型 包过滤路由器 应用层网关 电路层网关
19
包过滤路由器 基本的思想很简单 如何过滤 对于每个进来的包,适用一组规则,然后决定转发或者丢弃该包 往往配置成双向的
过滤的规则以IP和传输层的头中的域(字段)为基础,包括源和目标IP地址、IP协议域、源和目标端口号 过滤器往往建立一组规则,根据IP包是否匹配规则中指定的条件来作出决定。 如果匹配到一条规则,则根据此规则决定转发或者丢弃 如果所有规则都不匹配,则根据缺省策略
20
安全缺省策略 两种基本策略,或缺省策略 没有被拒绝的流量都可以通过 没有被允许的流量都要拒绝 管理员必须针对每一种新出现的攻击,制定新的规则
比较保守 根据需要,逐渐开放
21
包过滤路由器示意图 网络层 链路层 物理层 外部网络 内部网络
22
包过滤防火墙 在网络层上进行监测 通常在路由器上实现 优点: 缺点: 举例: ipchains and iptables
并没有考虑连接状态信息 通常在路由器上实现 实际上是一种网络的访问控制机制 优点: 实现简单 对用户透明 效率高 缺点: 正确制定规则并不容易 不可能引入认证机制 举例: ipchains and iptables
23
Linux内核2.2中的包的流向 output input sys_write() sys_read() sock_write()
inet_sendmsg() tcp_v4_sendmsg() tcp_do_sendmsg() tcp_send_skb() tcp_transmit_skb() ip_queue_xmit() ip_output() ip_finish_output() dev_queue_xmit() hard_start_xmit() sys_read() sock_read() inet_recvmsg() tcp_recvmsg() tcp_v4_recv() ip_local_deliver() ip_rcv() net_bh() Netif_rx() Block_input() ei_receive() ei_interrupt()
24
网络层的处理流程 传输层 链路层 forward input output Route table Demasq Ip_forward()
Ip_local_deliver() forward Route table input Ip_output() Ip_rcv() output 链路层
25
Linux内核中的包过滤 Firewall_ops input forward output user Deny Reject
In_Rule1 Rule1 In_Rule2 Rule2 In_Rule3 Accept
26
Ipchains的用法示例 ipchains -A input -i eth0 -s 192.168.1.0/24 -j DENY
ipchains -A input -p tcp -d /26 any -y –i eth0 -j DENY ipchains –A input –p tcp –d -i eth0 –j ACCEPT
27
包过滤防火墙的设置(1) 从内往外的telnet服务 client server 内部 外部 往外包的特性(用户操作信息)
IP源是内部地址 目标地址为server TCP协议,目标端口23 源端口>1023 连接的第一个包ACK=0,其他包ACK=1 往内包的特性(显示信息) IP源是server 目标地址为内部地址 TCP协议,源端口23 目标端口>1023 所有往内的包都是ACK=1
28
包过滤防火墙的设置(2) 从外往内的telnet服务 client server 外部 内部 往内包的特性(用户操作信息)
IP源是外部地址 目标地址为本地server TCP协议,目标端口23 源端口>1023 连接的第一个包ACK=0,其他包ACK=1 往外包的特性(显示信息) IP源是本地server 目标地址为外部地址 TCP协议,源端口23 目标端口>1023 所有往内的包都是ACK=1
29
针对telnet服务的防火墙规则 *: 第一个ACK=0, 其他=1 服务方向 包方向 源地址 目标地址 包类型 源端口 目标端口 ACK
往外 外 内部 外部 TCP >1023 23 * 内 1 往内 *: 第一个ACK=0, 其他=1
30
Ftp文件传输协议 ftp server client 5151 5150 21 20 PORT 5151 OK 建立数据通道
命令通道:21端口 client ftp server 数据通道:20端口 PORT 5151 OK 建立数据通道
31
Ftp文件传输协议(续) ftp server client 5151 5150 21 20 PASV 3267 OK3267 建立数据通道
命令通道:21端口 client ftp server 数据通道:>1023 PASV OK3267 建立数据通道 OK 3267
32
针对ftp的包过滤规则注意事项 建立一组复杂的规则集 动态监视ftp通道发出的port命令 启示 是否允许正常模式的ftp数据通道?
有些ftp client不支持pasv模式 动态监视ftp通道发出的port命令 有一些动态包过滤防火墙可以做到 启示 包过滤防火墙比较适合于单连接的服务(比如smtp, pop3),不适合于多连接的服务(比如ftp)
33
针对包过滤防火墙的攻击 IP地址欺骗,例如,假冒内部的IP地址 源路由攻击,即由源指定路由
对策:在外部接口上禁止内部地址 源路由攻击,即由源指定路由 对策:禁止这样的选项 小碎片攻击,利用IP分片功能把TCP头部切分到不同的分片中 对策:丢弃分片太小的分片 利用复杂协议和管理员的配置失误进入防火墙 例如,利用ftp协议对内部进行探查
34
应用层网关 也称为代理服务器 特点 所有的连接都通过防火墙,防火墙作为网关 在应用层上实现 可以监视包的内容 可以实现基于用户的认证
所有的应用需要单独实现 可以提供理想的日志功能 非常安全,但是开销比较大
35
应用层网关的结构示意图
36
应用层网关的协议栈结构 HTTP FTP Telnet Smtp 传输层 网络层 链路层
37
应用层网关的优缺点 优点 缺点 允许用户“直接”访问Internet 易于记录日志 新的服务不能及时地被代理
每个被代理的服务都要求专门的代理软件 客户软件需要修改,重新编译或者配置 有些服务要求建立直接连接,无法使用代理 比如聊天服务、或者即时消息服务 代理服务不能避免协议本身的缺陷或者限制
38
应用层网关实现 编写代理软件 客户软件 协议对于应用层网关的处理 代理软件一方面是服务器软件 另一方面也是客户软件
但是它所提供的服务可以是简单的转发功能 另一方面也是客户软件 对于外面真正的服务器来说,是客户软件 针对每一个服务都需要编写模块或者单独的程序 实现一个标准的框架,以容纳各种不同类型的服务 软件实现的可扩展性和可重用性 客户软件 软件需要定制或者改写 对于最终用户的透明性? 协议对于应用层网关的处理 协议设计时考虑到中间代理的存在,特别是在考虑安全性,比如数据完整性的时候
39
应用层网关——代理服务器 发展方向——智能代理 两个代理服务器的实现例子 不仅仅完成基本的代理访问功能 还可以实现其他的附加功能,比如
对于内容的自适应剪裁 增加计费功能 提供数据缓冲服务 两个代理服务器的实现例子 MSP – Microsoft Proxy Server squid
40
Microsoft Proxy Server 2.0
一个功能强大的代理服务器 提供常用的Internet服务 除了基本的Web Proxy,还有Socks Proxy和Winsock Proxy 强大的cache和log功能 对于软硬件的要求比较低 安装管理简单 与NT/2000集成的认证机制 扩展的一些功能 反向proxy: proxy作为Internet上的一个Web server 反向hosting,以虚拟Web Server的方式为后面的Web Server独立地发布到Internet上 安全报警
41
Microsoft Proxy Server v2管理示意图
42
squid 关于squid 管理和配置 是一个功能全面的Web Proxy Cache 可以运行在各种UNIX版本上
是一个自由软件,而且源码开放 功能强大,除了http协议之外,还支持许多其它的协议,如ftp、ssl、DNS等代理服务 管理和配置 /usr/local/squid /etc/squid.conf 默认端口3128 一种使用方案 Linux+Squid
43
电路层网关
44
电路层网关 本质上,也是一种代理服务器 有状态的包过滤器 动态包过滤器 状态 上下文环境 流状态 认证和授权方案 例子:socks
45
socks 专门设计用于防火墙 在应用层和传输层之间垫了一层 Socks v4和socks v5 正在普及和流行
Socks lib和socks server 不支持ICMP Socks v4和socks v5 基于用户的认证方案 对UDP的支持 正在普及和流行 可以参考有关的RFC
46
socks 应用 传输层 网络层 链路层 policy server client Socks server
47
Socks v5 在socks v4的基础上发展起来 Socks要求 Socks v4支持基于TCP的应用穿越防火墙
Socks v5增加了对于UDP协议的支持 Socks v5增加了对于认证方案的支持 Socks v5支持IPv6地址 Socks要求 修改客户程序,链接到socks library,以便socksified 首先连接到socks server,然后再同目标服务器连接 对于UDP协议,首先同socks server建立一个TCP连接,然后再传送UDP数据
48
TCP客户的处理过程 客户首先与socks server建立一个TCP连接,通常SOCKS端口为1080 然后客户与服务器协商认证方案
然后进行认证过程 认证完成之后 客户发出请求 服务器送回应答 一旦服务器应答指示成功,客户就可以传送数据了
49
认证方案的协商 Client->Server: +-----+---------------+---------------+
|VER | NMETHODS| METHODS | | | | 1 to | Method: X’00: No Authentication require X’01: GSSAPI X’02: Username/password X’FF: No Acceptable Methods Server->Client |VER | METHOD | | | |
50
客户发出的请求 | VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT | | 1 | 1 | X‘00’ | 1 | Variable | 2 | CMD: X’01: connection X’02: bind X’03: UDP associate ATYP: X’01: IP v4 X’03: Domain name X’04: IP v6
51
服务器的应答 | VER| REP | RSV | ATYP | BND.ADDR | BND.PORT | | 1 | 1 | X‘00’ | 1 | Variable | 2 | REP 00: succeed 01: general SOCKS server failure 02: connection not allowed by ruleset 03: network unreachable 04: host unreachable 05: connection refused 06: TTL expired 07: Command not supported 08: address type not supported 09-FF: not assigned BND.ADDR & BND.PORT: Specify the addr and port of the socks server which will accept an inbound connection
52
UDP客户的处理过程 请求命令为“UDP associate” 客户->UDP relay server ->目标机器
UDP packet |RSV | FRAG | ATYP | DST.ADDR | DST.PORT | DATA | | 2 | | | Variable | | Variable | FRAG: current fragment number
53
电路层网关的优缺点 优点 效率高 精细控制,可以在应用层上授权 为一般的应用提供了一个框架 缺点 客户程序需要修改 动态链接库?
54
防火墙的配置 几个概念 堡垒主机(Bastion Host):对外部网络暴露,同时也是内部网络用户的主要连接点
双宿主主机(dual-homed host):至少有两个网络接口的通用计算机系统 DMZ(Demilitarized Zone,非军事区或者停火区):在内部网络和外部网络之间增加的一个子网
55
防火墙几种典型配置方案 双宿主方案 屏蔽主机方案 单宿主堡垒主机 双宿主堡垒主机 屏蔽子网方案
56
配置方案一 双宿主堡垒主机方案 所有的流量都通过堡垒主机 优点:简单
57
配置方案二 屏蔽主机方案:单宿主堡垒主机 只允许堡垒主机可以与外界直接通讯 优点:两层保护:包过滤+应用层网关;灵活配置
缺点:一旦包过滤路由器被攻破,则内部网络被暴露
58
配置方案三 屏蔽主机方案:双宿主堡垒主机 从物理上把内部网络和Internet隔开,必须通过两层屏障
优点:两层保护:包过滤+应用层网关;配置灵活
59
配置方案四 屏蔽子网防火墙 优点: 三层防护,用来阻止入侵者 外面的router只向Internet暴露屏蔽子网中的主机
60
防火墙的发展 分布式防火墙 应用层网关的进一步发展 与其他技术的集成 认证机制 智能代理
比如NAT、VPN(IPSec)、IDS,以及一些认证和访问控制技术 防火墙自身的安全性和稳定性
61
参考资料 书 William Stallings, Cryptography and network security: principles and practice, Second Edition 文章 SOCKS Protocol Version 5, RFC 1928 其他关于防火墙技术的书籍
Similar presentations