有个安全性有下面几种概念:
- Threat:威胁
- Vulnerability: 安全隐患
- Attack: 攻击
有关Threat
常见的威胁有下面几种
DoS(Denial of Service拒绝服务攻击)
Breach of confidential information 破解机密信息
Data theft or alteration 数据盗用和篡改
Unauthorized use of compute resources 未授权访问
Identity theft 身份盗用
有关安全隐患
安全隐患常来自以下方面:
- 软件和协议的缺陷
- 配置问题
- 安全设计不足
比如使用过期的软件
有些软件有一些众所周知的缺陷,一些worm蠕虫会利用这些缺陷。
这些缺陷会被后续的更新改掉,如果不及时更新,可能被感染。
比如蠕虫CodeRed, Nimda, SQL Slammer就是利用软件缺陷进行攻击。
其中CodeRed和Nimda通过攻击Windows的IIS,SQL Slammer则攻击MS SQL 2000的一个众所周知的bug
再如使用默认的软件配置
有些默认的配置包含默认的用户名密码
有关Attack
Scanning/Probing
这是在攻击之前查看系统或者网络的信息,通过一次或者多次的检测
port scan以此查看TCP各个端口是否开启,如果开启,则为以后的攻击做准备
DoS Attack
使用大量的数据,占用大量的资源如果网络带宽,CPU, Memory,使得正常用户无法访问。
SYN Flood就是产生大量的TCP连接请求,但是并不建立连接,但是服务器会因为保持连接占用资源,最终资源耗尽。
smurf即产生大量的ICMP包,是broadcast的,但是源地址是要攻击的服务器,这样所有受到ICMP包的机器都会想服务器返回ICMP包。
PoD ping of death发送一个ICMP echo packet,但是篡改了其中max size这个域,当服务器受到这个包的时候,老的TCP/IP stack并不检查package size,因而试图为整个size创建一个内存空间,最终out of memory
大多数DoS attack才有发送大量的数据到被攻击节点,从而造成网络拥塞而暂停服务。
DDoS (Distributed denial of service)
DDoS是DoS系统的特殊版本
它控制大量的机器,对攻击目标同时访问。
DDoS通常分多个层次,Clients, Handlers, agents
Client由黑客直接控制,侵入一些系统,并在上面安装一个特殊的程序,作为handler,Client可以对handler发送指令。handler侵入更多的系统,上面安装agents。所有的handler和agents可以被client控制,同时对一个目标机器进行攻击。
如Trinoo, Tribe Flood Network, Stacheldraht
Unauthorized Access
通过侵入某个账户,并利用这个账户的权限进行操作。
通过后门,也即植入的木马对资源进行操作。
如network intrusion
Eavesdropping窃听
通过监听网络上的packet,来获得用户名密码信息
Viruses and Worms
病毒需要用户触发方才复制
蠕虫完全自我复制
CodeRed, Nimda, SQL Slammer都是蠕虫
Internet Infrastructure Attachs
主要攻击互联网的关键组件,如果DNS, border router, cache cluster, access server等。
Trust Exploitation
当两个计算机系统相互信任,则攻入一个系统,就可以以它的名义访问另一个系统。
Session Hijacking
通过侵入一个正常的session,以合法的身份进行操作。
其中常见的是IP spoofing欺骗,很多情况下,认证是基于IP的,如果黑客假装使用可信任系统的IP作为source IP,向被攻击系统发包,可能被接收并回复。
TCP ISN Guessing是另一种方式,黑客捕获或是猜想TCP SYN中的initial segment exchange,然后使用ISN + 1在TCP SYN/ACK中回复,则真正的回复会被认为重复报丢弃,从而接收了非法包。
Buffer Overflow Attacks
这利用程序的bug,程序分配了缓存,但是并不检查访问边界,则黑客可以利用这一点写入过多的内容,使得系统崩溃,或者执行非法命令。
Layer 2 Attacks
ARP spoof就是arp欺骗,当网络中机器发出arp寻找gateway的地址的时候,黑客假装一个arp reply,告知自己的mac,从而自己成了gateway.
MAC Flooding利用了这个原理,当switch的mac address table满了的时候,当受到一个从未见过的mac address的时候,则采用flooding的方式转发包。黑客先生成很多假的source mac address,将switch的mac address table填满,从而此后的包都是flood的方式,则恶意的机器就能够受到所有的包了。
VLAN hopping如果在VLAN A上的机器发送一个VLAN B的包,则从二层就被forward到VLAN B,从而绕过了router上的ACL
Network Security Infrastructure
ACLs
ACL是一种基于包头信息的过滤策略,包含一个列表的规则,每一个包会对这些规则一一匹配,匹配上的则执行相应的允许或者拒绝操作,最后一个规则往往是deny all.
ACL往往存在于border router和AZ的aggregation router上。
Standard ACL是ACL最基本的类型,仅仅基于source IP,用于控制那些机器可以访问。
Extended ACL可以基于source IP和destination IP,L4 protocal, L4 port,ICMP type, code, ToS等进行过滤
Router ACLs (RACLs)的ACL应用于某个router interface,可以使一个物理接口,也可以是一个VLAN接口,只有通过ACL的包,才会根据routing table进行转发。
VLAN ACLs (VACLs)应用于L2,没有in/out方向的概念,而是对于所有的包都进行检测。
Dynamic ACLs (Lock and Key)
当配置了lock and key后,用户首先需要打开一个telnet session进行authentication,如果城管,则一个动态的ACL entry加入了,允许这个用户暂时访问这个router. 这个动态ACL entry是基于某个模板,包含了用户的IP作为source IP。
Lock and key可以同强大的authentication方法TACACA+一起使用。
Reflexive ACLs
允许基于session来进行IP包的过滤。
Reflexive ACLs仅仅允许来自安全网段发起的session,而拒绝不安全网段发起的session
每当一个TCP/UDP连接建立的时候,会基于这个session建立一些暂时的entries.
上面的ACL对从内网到外网的TCP连接进行过滤,通过outboundfilters
reflect tcptraffic语句表明:当有从内网连到外网的TCP连接的时候,ACL inboundfilters 会增加一些access list entries.
从外网到内网的连接被inboundfilters阻拦,除非它是BGP,或者它属于某个TCP连接。
evaluate tcptraffic语句允许从内网发起的TCP连接通过。
Firewalls
Firewall用于各类不同的LAN的,往往放在重要的位置,来防止非法访问关键资源。
作为一个好的firewall,既要有好的性能,每秒处理更多的包,也要支持更多的应用程序,如果Telnet, FTP, HTTP
Packet Filtering Firewalls
根据包头过滤包,router with ACLs就是这种 Firewall,它的功能比较基础。Access rules是静态的,如果protocal动态商讨port,则不能处理。
这种firewall不保存连接的状态,因而不能block属于某个连接的包,不能检测到包的顺序的变化,不能检测是否一个protocal被侵犯了。
这种firewall不能进入payload去查看更详细的信息,不能修改其中的信息,从而不能做NAT
Proxy Firewalls
是application层次的proxy,用于保护如SMTP, HTTP, Telnet, FTP等已知的端口。可以检测是否包符合协议的标准。
Client需要配置,当对外发起连接的时候,首先连接proxy。
当client同外网建立连接的时候,连接时使用proxy的public ip而非用client真实的private IP进行。
这种firewall的优点是它的层次更高,更加智能,可以动态识别连接,可以修改payload,可以NAT,可以authentication, content filtering, caching and accounting
缺点是performance较差,需要对client进行配置。
Stateful Firewalls
这种firewall保持连接的状态,在一个connection table中,并动态更新。TCP/UDP都会保存状态。包含protocal, source and destination ip address, source and destination UDP/TCP ports, TCP sequence numbers, TCP flags, Connection Duration
由于保存了连接的状态,因而更多概率的避免了spoofing attack
这种firewall可以做application level检测,因而可以查看payload是否被篡改。
这种firewall可以保护不被DoS attack如TCP SYN floods。这种攻击试图建立很多连接,但是又不到达established状态,由于知道这种状态,firewall可以限定每个server建立这种连接的数目,除非前面的连接被ACK了,成为established状态。
也可以使用TCP SYN cookies来避免DoS attack.
SYN cookies的原理是:当进行TCP连接的时候,client发起一个SYN给server,server返回给client一个SYN+ACK,然后在queue中等待client的的ACK。然而DoS的策略是,不再发给server ACK,使得这个TCP连接始终在queue中等待,时间一长,client发起多次,queue就满了。SYN cookies的方法是,生成一个cookies,用于生成一个特殊的initial sequence number,并将这个number放在SYN+ACK发给client,这个时候马上从queue中将SYN queue entry删除。这样无论有多少这种连接,都不会放满queue,当真正的TCP连接返回ACK的时候,里面还有sequence number,根据这个number,从SYN cookies中将SYN queue entry重新创建出来,放在queue中,就可以了。
Firewall的缺点是:首先不同的攻击事件之间的联系,不容易建立。比如CodeRed通过HTTP协议侵入IIS中的buffer overflow Bug,然而HTTP请求是合法的,一旦侵入某个系统,这个被侵入的系统会生成一个蠕虫扫描其它的系统,firewall无法将这两者联系起来。
其次,firewall的配置不能根据攻击主动反应,而需要根据既定的规则。
IDSs
IDS是一个实时系统,检测intrusion入侵,以及syspicious可疑操作,并report给monitoring system,从而达到缓和,阻止攻击的作用。
包含两个组件:
Sensors感测器:appliance或者agents来分析流量和资源使用,来识别哪些是侵入或者可疑操作。分为network based和host based.
IDS management: 用于管理sensors,收集所有的alarm info
Network-Based IDS 往往连在某个LAN上,检测入侵和可疑行为。可以部署在router上,firewarll上,也可以是单独的appliance。
Host-Based IDS作为agent运行在系统上,可疑识别可疑行为,保护一些应用程序,更新系统
IDS系统有两种方式检测入侵和可疑行为:
Anomaly-based是基于异常的系统,通过一段周期的学习,根据某些参数定义了每种协议正常的流量分布,比如对于某种协议每秒应该有多少个连接,如果巨大的偏离统计值,则警告异常。
Signature-based是基于特征的系统,首先定义了一些有关流量和资源使用特征,满足了这些特征,就被认为可疑。每个package都会和特征进行比较,有可能特征分布于同一个session的多个package当中。
signature分以下几类:
Embedded signature对于已知的攻击特征的定义,IDS系统本身内置,不许修改
Connection signature用户定义的基于协议的特征
String matching signatures基于payload中某部分的值,用正则表达式进行匹配。
ACL signature每当ACL被侵犯的时候,都会log下来,会解析log来识别侵入行为。
Layer 2 Security
Port Security
你可以配置一个switch port仅仅接收来自某些可信任的mac address的包,如果不在这个集合里面,则丢掉。
也可以配置switch port的最大可识别的mac address的数量,如果在这个数量之内,则自我学习,如果超出数量,则丢弃。
ARP Inspection
你可以指定一个mapping,从default gateway到它的mac address,如果switch发现有个ARP包中的映射关系不对,则丢弃,从而解决ARP spoofing攻击
set security acl ip arp-inspection
set security acl arp-inspection match-mac enable
set security acl arp-inspection address-validation enable
set port arp-inspection mod/port drop-threshold rate shutdown-threshold rate
当一个port收到的arp太频繁,则报错
Private VLANs
意图在同一个VLAN中也进行端口隔离。
有三种端口:
Promiscuous ports,可以同任何port通信
Isolated ports,仅仅能和Promiscuous port通信,互相不能通信
Communitry ports,可以同Promiscuous port通信,也可以和相同community的port进行通信
有三种VLAN
Primary VLAN,将Promiscuous port的包转发给其他的isolated, community, promiscuous port
Isolated VLAN,仅能从isolated port将包转发给promiscuous port,这个VLAN种的机器不能相互访问,只能出去到gateway
Community VLAN,同一个community的可以相互访问,可以访问promiscuous ports
802.1Q Tag All
Ethernet interfaces can be configured either as access ports or a trunk ports, as follows:
?An access port can have only one VLAN configured on the interface; it can carry traffic for only one VLAN.
?A trunk port can have two or more VLANs configured on the interface; it can carry traffic for several VLANs simultaneously.
A trunk port can carry untagged packets simultaneously with the 802.1Q tagged packets. When you assign a default port VLAN ID to the trunk port, all untagged traffic travels on the default port VLAN ID for the trunk port, and all untagged traffic is assumed to belong to this VLAN. This VLAN is referred to as the native VLAN ID for a trunk port. The native VLAN ID is the VLAN that carries untagged traffic on trunk ports.
如果允许untagged包出现,并且可以设置为native vlan id,则会造成下面的现象:有一个access port,它本身是带tag 10的,它认为从这个port进来的包本身应该是不带tag的,但是都属于VLAN 10,结果进来一个tag 20的包,access port认为这个包是属于VLAN 10的,所以找VLAN 10的端口转发,这时候有一个trunk端口,它的native vlan是10,所以转发给了它,结果出了这个trunk端口,到达机器的时候却发现是VLAN 20,这就产生了VLAN hopping
我们可以通过vlan dot1q tag native设置,所有的trunk口出现的vlan都必须带tag,如果认为是不带tag的,就强行打上native tag
Data Center Security Framework
制定严格的security policies,组织和流程
Security Life Cycle
Assess找出弱点
Design设计解决方案
Deployment部署
Maintenance维护
将management network物理上或者逻辑上隔离
加密一切控制数据
使用动态密码,和数字证书
Data Center手册(2): 安全性