基本的 CISCO 路由器安全配置

路由器是网络中的神经中枢 , 广域网就是靠一个个路由器连接起来组成的 , 局域网中也已经普片的应用到了路由器 , 在很多企事业单位 , 已经用到路由器来接入网络进行数据通讯了 , 可以说 , 曾经神秘的路由器 , 现在已经飞入寻常百姓家了 .
随着路由器的增多 , 路由器的安全性也逐渐成为大家探讨的一个热门话题了 , 岩冰今天也讲一讲网络安全中路由器的安全配置吧 . 以下文章是本人在工作过程中所记录的学习笔记 , 今天整理出来 , 跟大家共享 , 也算是抛砖引玉吧 .

1.
配置访问控制列表 :

使用访问控制列表的目的就是为了保护路由器的安全和优化网络的流量 . 访问列表的作用就是在数据包经过路由器某一个端口时 , 该数据包是否允许转发通过 , 必须先在访问控制列表里边查找 , 如果允许 , 则通过 . 所以 , 保护路由器的前提 , 还是先考虑配置访问控制列表吧 .

访问列表有多种形式 , 最常用的有标准访问列表和扩展访问列表 .

创建一个标准访问控制列表的基本配置语法 :access-list access-list-number{deny|permit} source [source-wildcard]

注释 :access-list-number 是定义访问列表编号的一个值 , 范围从 1--99. 参数 deny permit 指定了允许还是拒绝数据包 . 参数 source 是发送数据包的主机地址 .source-wildcard 则是发送数据包的主机的通配符 . 在实际应用中 , 如果数据包的源地址在访问列表中未能找到 , 或者是找到了未被允许转发 , 则该包将会被拒绝 . 为了能详细解释一下 , 下面是一个简单访问列表示例介绍 :

1) access-list 3 permit 172.30.1.0 0.0.0.255 */
指明一个列表号为 3 的访问控制列表 , 并允许 172.30.1.0 这个网段的数据通过 .0.0.0.255 是通配符 .
2) access-list 3 permit 10.1.1.0 0.0.15.255 */
允许所有源地址为从 10.1.0.0 10.1.15.255 的数据包通过应用了该访问列表的路由器接口 .
3) access-list 3 deny 172.31.1.0 0.0.0.255 */
拒绝源 IP 地址为 172.31.1.0 172.31.1.255 的数据包通过该访问列表 .

配置了访问列表后 , 就要启用访问控制列表 , 我们可以在接口配置模式下使用 access-group ip access-class 命令来指定访问列表应用于某个接口 . 使用关键字 in(out) 来定义该接口是出站数据包还是入站数据包 .
示例 :ip access-group 3 in */ 定义该端口入站数据包必须按照访问列表 3 上的原则 .

由于标准访问控制列表对使用的端口不进行区别 , 所以 , 引入了扩展访问控制列表 ( 列表号从 100--199). 扩展访问列表能够对数据包的源地址 , 目的地址和端口等项目进行检查 , 这其中 , 任何一个项目都可以导致某个数据包不被允许经过路由器接口 . 简单的配置示例 :

1) ip access-list 101 permit tcp any host 10.1.1.2 established log
2) ip access-list 101 permit tcp any host 172.30.1.3 eq www log
3) ip access-list 101 permit tcp any host 172.30.1.4 eq ftp log
4) ip access-list 101 permit tcp any host 172.30.1.4 log

注释 :

第一行允许通过 TCP 协议访问主机 10.1.1.2, 如果没个连接已经在主机 10.1.1.2 和某个要访问的远程主机之间建立 , 则该行不会允许任何数据包通过路由器接口 , 除非回话是从内部企业网内部发起的 . 第二行允许任何连接到主机 172.30.1.3 来请求 www 服务 , 而所有其他类型的连接将被拒绝 , 这是因为在访问列表自动默认的在列表尾部 , 有一个 deny any any 语句来限制其他类型连接 . 第三行是拒绝任何 FTP 连接来访问 172.30.1.4 主机 . 第四行是允许所有类型的访问连接到 172.30.1.4 主机 .

2.
保护路由器的密码

1)
禁用 enable password 命令 , 改密码加密机制已经很古老 , 存在极大安全漏洞 , 必须禁用 , 做法是 :no enable password

2)
利用 enable secret 命令设置密码 , 该加密机制是 IOS 采用了 MD5 散列算法进行加密 , 具体语法是 :enable secret[level level] {password|encryption-type encrypted-password}
举例 :
Ro(config-if)#enable secret level 9 ~@~!79#^&^089^ */
设置一个级别为 9 级的 ~@~!79#^&^089^ 密码
Ro(config-if)#service router-encryption */
启动服务密码加密过程

enable secret
命令允许管理员通过数字 0-15, 来指定密码加密级别 . 其默认级别为 15.

3.
控制 telnet 访问控制

为了保护路由器访问控制权限 , 必须限制登陆访问路由器的主机 , 针对 VTY(telnet) 端口访问控制的方法 , 具体配置要先建立一个访问控制列表 , 如下示例 , 建立一个标准的访问控制列表 ( 编号从 1--99 任意选择 ):

access-list 90 permit 172.30.1.45
access-list 90 permit 10.1.1.53

该访问列表仅允许以上两个 IP 地址之一的主机对路由器进行 telnet 访问 , 注意 : 创建该列表后必须指定到路由器端口某个端口上 , 具体指定方法如下 :

line vty E0 4
access-class 90 in

以上配置是入站到 E0 端口的 telnet 示例 , 出站配置采用 out, 在这里将不再详细赘述 . 为了保护路由器的安全设置 , 也可以限制其 telnet 访问的权限 , 比如 : 通过分配管理密码来限制一个管理员只能有使用 show 命令的配置如下 :

enable secret level 6 123456
privilege exec 6 show

给其分配密码为 123456,telnet 进入路由器后 , 只能用 show 命令 , 其他任何设置权限全部被限制 . 另外 , 也可以通过访问时间来限制所有端口的登陆访问情况 , 在超时的情况下 , 将自动断开 , 下面是一个配置所有端口访问活动 3 30 秒的设置示例 :

exec-timeout 3 30

4.
禁止 CDP

CDP(Cisco Discovery Protocol)CISCO
查找协议 , 该协议存在 CISCO11.0 以后的 IOS 版本中 , 都是默认启动的 , 他有一个缺陷就是 : 对所有发出的设备请求都做出应答 . 这样将威胁到路由器的泄密情况 , 因此 , 必须禁止其运行 , 方法如下 :

no cdp run
管理员也可以指定禁止某端口的 CDP, 比如 : 为了让路由器内部网络使用 CDP, 而禁止路由器对外网的 CDP 应答 , 可以输入以下接口命令 :

no cdp enable

5.HTTP
服务的配置

现在许多 CISCO 设备 , 都允许使用 WEB 界面来进行控制配置了 , 这样可以为初学者提供方便的管理 , 但是 , 在这方便的背后 , 却隐藏了很大的危机 , 为了能够配置好 HTTP 服务 , 本文也提一下如何配置吧 .

使用 ip http server 命令可以打开 HTTP 服务 , 使用 no ip http server 命令可以关闭 HTTP 服务 . 为了安全考虑 , 如果需要使用 HTTP 服务来管理路由器的话 , 最好是配合访问控制列表和 AAA 认证来做 , 也可以使用 enable password 命令来控制登陆路由器的密码 . 具体的配置是在全局模式下来完成的 , 下面是我们创建一个简单的标准访问控制列表配合使用 HTTP 服务的示例 :
ip http server */
打开 HTTP 服务
ip http port 10248 */
定义 10248 端口为 HTTP 服务访问端口
access-list 80 permit host 10.0.0.1 */
创建标准访问列表 80, 只允许 10.0.0.1 主机通过
ip http access-class 80 */
定义了列表号为 80 的标准访问列表为 HTTP 服务允许访问的
ip http authentication aaa tacacs */
增加 AAA 认证服务来验证 HTTP 控制的主机


6.
写在最后的话
保护路由器并不是这样简单的事情 , 在很多实际应用中 , 还需要很多辅助配置 . 为了保护路由器 , 各种各样的安全产品都相继出现 , 比如给路由器添加硬件防火墙 , 配置 AAA 服务认证 , 设置 IDS ***检测等等吧 . 为了维护路由器的安全稳定工作 , 我要告诉大家最重要的还是配置最小化 IOS, 没有服务的设备 , 肯定没有人能够*** , 最小化的服务就是我们最大化的安全 <?xml:namespace prefix = o />