本文主要参考自EagleBear2002的博客
网络安全
1网络安全问题概述
计算机网络上的通信面临着以下四种威胁
威胁 | 解释 | 攻击类型 |
---|---|---|
截获 | 从网络上窃听他人的通信内容。 | 被动攻击 |
中断 | 有意中断他人在网络上的通信。 | 主动攻击 |
篡改 | 故意篡改网络上传送的报文。 | 主动攻击 |
伪造 | 伪造信息在网络上传送。 | 主动攻击 |
- 被动攻击:截获信息的攻击,并不改变通讯的过程
- 主动攻击:更改信息和拒绝用户使用资源的攻击,修改了通信的构成
计算机网络通信安全的目标
- 防止析出报文内容
- 防止通信量分析(通信的习惯)
- 检测更改报文流
- 检测拒绝报文服务
- 检测伪造初始化连接
恶意程序
- 计算机病毒:会“传染”其他程序的程序,“传染” 通过修改其他程序来把自身或其变种复制进去而完成。
- 计算机蠕虫:通过网络的通信功能将自身从一个节点发送到另一个节点并启动运行的程序。(特定场景才能使用,出现上商业行为)
- 特洛伊木马:一种程序,它执行的功能超出所声称的功能。运作木马获得特殊的权限(包括逻辑控制:逻辑下载程序/控制器程序:远程控制)
- 逻辑炸弹:一种当运行环境满足某种特定条件时执行其他特殊功能的程序。
计算机网络安全的内容
- 保密性
- 安全协议的设计
- 访问控制
2、数据加密
一般的数据加密模型
容易被加密者截取并篡改
密码学:分为密码编码学(设计密码)和密码分析学(推算密钥或明文)
- 无条件安全:不论截取者获得了多少密文,但在密文中都没有足够的信息来唯一地确定出对应的明文
- 计算上安全:密码体制中的密码不能被可使用的计算资源破译
对称密钥密码体制
加密密钥与解密密钥是相同的密码体制。
数据加密标准 DES:属于常规密钥密码体制,是一种分组密码。加密时将数据每64位分一组,每组进行二进制加密,产生64位密文,再将其串接起来得到整个密文。使用64位密钥(实际密钥长度为 56 位,有8 位用于奇偶校验)
DES 是世界上第一个公认的实用密码算法标准,它曾对密码学的发展做出了重大贡献。但是目前较为严重的问题是 DES 的密钥的长度。(算力的提升使得破解 DES 所需的时间进一步降低)
公钥密码体制
使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
最著名的公钥密码体制是RSA 体制
- 加密密钥(即公钥) PK 是公开信息,而解密密钥(即私钥或秘钥) SK 是需要保密的
- 加密算法 E 和解密算法 D 也都是公开的
- 不能根据 PK 计算出 SK
算法:如果A想发送数据给B,A那么使用B的公钥加密,B使用B的私钥解密
加密和解密的运算可以对调,即先对明文执行解密(用私钥),在加密(用公钥),也一样可以得出数据
- PK和SK可以在计算机上成对产生,但是PK无法推导SK
3、 数字签名
A发送数据时,先对数据使用A的私钥进行数字签名,再将其加密发送
数字签名必须保证以下三点:
- 报文鉴别——接收者能够核实发送者对报文的签名(实现原因:除A外没有人具有A的私钥)
- 报文的完整性——发送者事后不能抵赖对报文的签名(实现原因:如果想要抵赖,可以找第三方,让第三方用公钥验证A确实发送过数据X给B)
- 不可否认——接收者不能伪造对报文的签名(实现原因:同上,B如果伪造,就不能在第三者前出示报文)
4、防火墙
由软件、硬件构成的系统,是一种特殊编程(ACL)的路由器,用来在两个网络之间实施接入控制策略。
防火墙内的网络称为可信赖的网络(trusted network),而将外部的因特网称为不可信赖的网络(untrusted network)。
防火墙的位置:
防火墙的功能:阻止和允许
- 阻止:阻止某种类型的通信量通过防火墙
- 允许与阻止相反
- 防火墙必须能够识别通信量的各种类型。
防火墙技术
1、网络级防火墙:用来防止整个网络出现外来非法的入侵(分组过滤和授权服务器)
- 分组过滤:检查所有流入本网络的信息,然后拒绝不符合事先制订好的一套准则的数据
- 授权服务器:检查用户的登录是否合法
2、应用级防火墙:从应用程序来进行接入控制。通常使用应用网关或代理服务器来区分各种应用(例如允许访问万维网的应用,阻止FTP应用通过)
访问控制列表ACL
ACL(Access Control Lists)是指令列表,它告诉路由器允许或拒绝什么类型的数据包。
- 如果不配置ACL,路由器就会接收并转发所有数据包。ACL可以让路由器拒绝某些包
- 拒绝或接收数据包的可基于的标准:源地址、目的地址、上层的协议(比如TCP或UDP端口)
ACL的使用
输入ACL的语句需要按顺序。在确定是允许还是拒绝一个数据包时,会按顺序逐一对每个ACL语句进行匹配。一旦匹配成功(包含了有关这个报文的处理方案的信息),那么就按照这个匹配的方式处理,而忽略下面其他的语句。所以前面的语句先匹配,处理掉
如果使用了ACL,但是没有匹配的语句,那么最后默认就是拒绝。
出站标准ACL流程
- 收到 packet,确定路由表确认路由表看能够转发
- 可以转发的话,进入 ACL 确认
- 如果接口没有配置ACL,那么直接通过
- 如果配置了ACL,那么就对一句语句检查,看语句的源地址是否和packet匹配
- 如果匹配,就根据结果做出选择。如果不匹配,就检查是否有下一句语句。如果还有下一句语句,就继续循环检查;如果没有了,就直接拒绝
标准ACL的两个基本使用
标准ACL只显示声明拒绝规则,扩展ACL可以显式声明拒绝规则和允许规则。
因此,标准ACL的拒绝规则是:应该尽量放在出口
ACL命令:
Router(config)#access-list access-list-number {permit/deny}{test-conditions}
顺序编写ACL命令:
1 | Lab-D(config)#access-list 1 deny 192.5.5.10 0.0.0.0 拒绝来自 192.5.5.10 的报文 |
给接口配置ACL命令:
1 | Router(config-if)#{protocol} access-group access-list-number {in/out} |
- ACL有不同的类型(标准ACL、扩展ACL等),而为ACL指定序号,即access-list-number需要根据不同的ACL类型分配不同的值
ACL Type | ACL Number |
---|---|
IP Standard | 1 to 99 |
IP Extended | 100 to 199 |
AppleTalk | 600 to 699 |
IPX Standard | 800 to 899 |
IPX Extended | 900 to 999 |
IPX SAP | 1000 to 1099 |
-
命令中的permit/deny选项根据你要执行的操作输入允许permit或拒绝deny,
-
命令中的test condition参数,大多数是源地址IP和通配符掩码。(例如192.168.1.0 0.0.0.255就表示从192.168.1.0到192.168.1.255之间所有的取值)
当然,可以使用省时办法:
-
1、使用通配符any。(例如
Lab-A(config)#access-list 1 permit 0.0.0.0 255.255.255.255
,如果你想要允许所有的报文,你可以直接改为access-list 1 permit any
) -
2、主机名支持。可以用host来表示特定主机。(例如
Lab-A(config)#access-list 1 permit 192.5.5.10 0.0.0.0
就可以改写为access-list 1 permit host 192.5.5.10
)
标准ACL的配置位置
标准 ACL 没有目标参数。因此需要将标准 ACL 放置在尽可能靠近目标的位置。
扩展ACL
编号为100-199,扩展了标准ACL的功能
可以基于以下内容来过滤流量:
- 目的地址
- IP协议的部分(更加细分,比如ICMP协议或RIP之类的)
- 协议套件的上层(可以拒绝tftp、http等,可以使用eq、gt、lt、neq等运算符,比如permit ip any any neq 80就表示允许源地址和目的地址不为80端口的信息)
扩展ACL使用
基本命令:
Router(config)# access-list access-list-number {permit|deny} {protocol|protocol-keyword}{source source-wildcard} {destination destination-wildcard} [protocol-specific options] [log]
编写ACL语句:
1 | Lab-A(config)#access-list 101 deny tcp 192.5.5.0 0.0.0.255 210.93.105.0 0.0.0.255 eq telnet log |
将ACL分配到接口:
Router(config-if)#{protocol} access-group
access-list-number {in/out}
Lab-A(config-if)#ip access-group 101 out
1 | Lab-A(config-if)#ip access-group 101 out |
参数:
- access-list-number:100到199之间
- {protocol | protocol-number}:协议,例如IP或TCP
- {source source-wildcard}:源地址和掩码,和标准的相似
- {destination destination-wildcard}:目的地址和掩码,是标准ACL中没有的
- [protocol-specific options]:用于确认协议的过滤部分
端口号
需要记住以下端口号
端口号 | 描述 |
---|---|
21 | FTP |
25 | SMTP |
53 | DNS |
69 | TFTP |
可以直接使用端口号对应的名字而不是端口号,写在protocol-specific options中
注意:由于扩展的 ACL 具有目标信息,因此您希望将其放置在尽可能靠近源的位置。
使用ACL:
1 | Router-C(config)#access-list 100 deny ip 221.23.123.0 0.0.0.255 198.150.13.34 0.0.0.0 |
ACL的命名
命名 ACL 后,提示将更改,您不再需要输入 access-list 和 access-listnumber 参数。
在下面的示例中,ACL 命名为 over_and,以提示应如何将其放置在接口上
1 | Lab-A(config)# ip access-list standard over_and |
ACL校验命令
show access-lists
查看全部shows all access-lists configured on the router
显示路由器上配置的所有访问列表show access-lists {name | number}
查看某一个端口的shows the identified access list
显示已识别的访问列表show ip interface</pode:显示了应用于接口的访问列表(入站和出站)。
show running-config
:显示所有访问列表以及它们应用于什么接口