ASA防火墙配置
一、实验拓补图
该实验使用GNS3软件部署,主机配置IP地址(指定各自网关),你们自行配置
1.R1路由器配置
F0/0
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int f0/0
R1(config-if)#ip add 100.1.1.254 255.255.255.0
R1(config-if)#no sh
Ctrl+Z
R1#ping 100.1.1.1 #测试和100.1.1.1的连通性
F1/0
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int f1/0
R1(config-if)#ip add 100.2.2.254 255.255.255.0
R1(config-if)#no sh
Ctrl+Z
R1#ping 100.2.2.2 #测试和100.2.2.2的连通性
F2/0
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int f2/0
R1(config-if)#ip add 192.168.10.1 255.255.255.0
R1(config-if)#no sh
R2(config-if)#exit
配置远程登录
R1(config)#enable password 456 #配置特权密码
R1(config)#line vty 0 4
R1(config-line)#password 123
R1(config-line)#login
R1(config-line)#exit
2.R2路由器配置
F0/0
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#int f0/0
R2(config-if)#ip add 172.16.1.1 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
F1/0
R2(config)#int f1/0
R2(config-if)#ip add 200.200.200.254 255.255.255.0
R2(config-if)#no sh
Ctrl+Z
R2#ping 200.200.200.1 #测试和外网连通性
配置远程登录
R2(config)#enable password 456 #配置特权密码
R2(config)#line vty 0 4
R2(config-line)#password 123
R2(config-line)#login
R2(config-line)#exit
3.配置DMZ区域服务器
1)FTP服务器
[root@localhost ~]# yum -y install vsftpd #安装 FTP 服务
[root@localhost ~]# systemctl start vsftpd #开启 FTP 服务
[root@localhost ~]# systemctl enable vsftpd #设置 FTP 开启自启
2)HTTP服务器
[root@localhost ~]# yum -y install httpd #安装 httpd 服务
[root@localhost ~]# echo "This is DMZ" >> /var/www/html/index.html #编写测试页面
[root@localhost ~]# systemctl start httpd #开启httpd服务
[root@localhost ~]# systemctl enable httpd #设置httpd开机自启
二、ASA 基础
1.ASA 的基本配置
1)配置主机名
ciscoasa(config)# hostname ASA
2)配置特权模式密码
ASA(config)# enable password 456
3)配置远程登录密码
ASA(config)# passwd 123
2.接口配置
E0/0
ASA(config)# int e0/0
ASA(config-if)# nameif dmz
INFO: Security level for "dmz" set to 0 by default.
ASA(config-if)# security-level 50
ASA(config-if)# ip add 192.168.1.254 255.255.255.0
ASA(config-if)# no sh
Ctrl+Z
ASA# ping 192.168.1.1 #测试和dmz区域的连通性
E0/1
ASA# conf t
ASA(config)# int e0/1
ASA(config-if)# nameif outside
INFO: Security level for "outside" set to 0 by default.
ASA(config-if)# security-level 0
ASA(config-if)# ip add 172.16.1.254 255.255.255.0
ASA(config-if)# no sh
Ctrl+Z
ASA# ping 172.16.1.1 #测试和R2路由器的连通性
E0/2
ASA(config)# int e0/2
ASA(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.
ASA(config-if)# security-level 100
ASA(config-if)# ip add 192.168.10.2 255.255.255.0
ASA(config-if)# no sh
Ctrl+Z
ASA# ping 192.168.10.1 #测试和R1路由器的连通性
注意:如果出现以下现象,是接口配置不对的问题,因为接口并不是相对应的
解决方案:
- 将原接口删除(删除接口下面有命令),对另外接口进行相同配置,配置完成后再次测试连通性;如果修改完后还未通信,就再次将原接口删除,对另外接口进行配置。
3.配置路由
- 配置 R1 路由器出去的默认路由
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.2
- 配置 R2 路由器回来的默认路由
R2(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.254
- 配置 ASA 去 inside 区域的静态路由
ASA(config)# route inside 100.1.1.0 255.255.255.0 192.168.10.1
ASA(config)# route inside 100.2.2.0 255.255.255.0 192.168.10.1
- 配置 ASA 去 outside 区域的默认路由
ASA(config)# route outside 0 0 172.16.1.1
4.验证
- 高优先级默认可以访问低优先级端口,反之低优先级不能访问高优先级端口
1)在内部主机上添加 Telnet 功能
- 控制面板——程序——打开或关闭 Windows 功能
2)打开 cmd 命令行进行 Telnet 远程登录 R2 路由器
注意:默认情况下,ping 包不允许通过防火墙 (ICMP协议对于防火墙来说是无状态化,默认拒绝ping 包通过)
查询 Conn 表:
ASA# sh conn detail
5.ACL 的配置
1)基本语法结构
- 标准ACL:ASA(config)# access-list 名字 permit 或 deny 网段 掩码 (正常的掩码) (和路由器不同,路由器写的是子网掩码的反掩码)
- 扩展ACL:ASA(config) # access-list 名字 permit 或 deny 协议 源网段 源掩码 目标网段 目标掩码 端口号
2)配置扩展ACL使其ICMP包通过
创建一个名字是 out_to_in ,允许主机172.16.1.1 访问主机100.1.1.1 所有协议的ACL:
ASA(config)# access-list out_to_in permit ip host 172.16.1.1 host 100.1.1.1
把刚刚创建的ACL 应用在 ASA 的外部接口的in 方向:
ASA(config)# access-group out_to_in in interface outside
3)验证
100.1.1.1验证:
100.2.2.2验证:
因为刚才配置的ACL允许172.16.1.1访问100.1.1.1,所以100.1.1.1可以访问,而100.2.2.2没做ACL,所以不可以访问(除了ICMP不可以,其它协议都可以访问)
6.其它配置
- 保存配置:ASA # write = wr = copy running-config startup-config
- 清除所有配置:ASA(config)# clear configure all
- 清除所有的ACL :ASA(config)# clear configure access-list
- 清除某一条 ACL :ASA(config)# clear configure access-list ACL 的名字
- 删除 startup-config:ASA# write erasa
- 查询路由表:ASA# show route
7.ASA 的远程配置
- 支持三种远程接入方式:Telenet、SSH、ASDM(本篇不介绍)
- 注意:以上三种方式都是为了远程登录 ASA 防火墙!!!
1)Telnet 远程登陆
- Telnet 管理方式不够安全,默认是禁止从外网使用 Telnet 的方式接入
仅允许主机地址是100.1.1.1 的进行Telnet连接,其他的全部不允许
ASA(config)# telnet 100.1.1.1 255.255.255.255 inside
注释:
ASA(config)# telnet 100.1.1.0 255.255.255.0 inside (配置允许内部网段的100.1.1.0 进行Telnet 接入)
ASA(config)# telnet 0 0 inside (特殊命令;允许所有的内部网段使用Telnet接入)
100.1.1.1主机进行 Telnet 验证:
100.2.2.2主机进行 Telnet 验证:
- 因为 ASA 防火墙上没做允许100.2.2.2主机使用 Telnet 远程登录 ASA 防火墙,所以 Telnet 不过去
2)SSH 远程登陆
- SSH 可以安全的对 ASA 进行远程管理(一般用于外访内)
- 配置域名
ASA(config)# domain-name zhangsan
- 生成密钥对
ASA(config)# crypto key generate rsa modulus 1024
--------如果显示以下,输入 yes 即可
Do you really want to replace them? [yes/no]: yes
- 配置允许 SSH 接入
ASA(config)# ssh 0 0 outside #允许所有的外部网段进行SSH接入
- 设置 SSH 版本,默认版本是 1,连接时就默认应用 SSH1
ASA(config)# ssh version 2 #把SSH版本改成2
- 外网客户机访问验证
8.ASA 的默认六条访问规则
- DMZ区域:位于企业内网和外部网络之间的一个区域(用来放置一些必须公开的服务器)(安全级别一般设置为50)
- inside 可以访问 DMZ 和 outside 区域
- outside 默认不能访问 inside 和 DMZ 区域
- DMZ 可以访问 outside 但不能访问 inside 区域
- 注意:如果想要实现外网访问 DMZ 可通过 ACL 的配置实现
三、ASA 的 NAT 应用
1.动态 NAT
- 将一组 IP 地址转换为指定地址池中的 IP 地址
1)指定需要转换的网段
- 格式:ASA(config)# nat (网段所在的接口名称) nat ID号 转换的网段 掩码
ASA(config)# nat (inside) 1 100.1.1.0 255.255.255.0
2)定义全局地址池(转换后的地址池)
- 格式:ASA(config)# global (转换后接口名称) NAT ID 号 转换后唯一地址
ASA(config)# global (outside) 1 172.16.1.188-172.16.1.200
3)验证
使用 100.1.1.1 主机Telnet 远程登录 172.16.1.1
查看ASA防火墙转换条目
ASA# sh xlate detail
测试完后将刚才配置的动态 NAT 转换条目清除,方便后续测试
ASA(config)# clear xlate #清除NAT转换表
ASA(config)# clear configure nat #删除动态NAT
ASA(config)# clear configure global #清空全局地址池
2.动态 PAT
- 将一组地址转换程一个地址(多转一)
1)指定需要转换的网段
- 格式:ASA(config)# nat (网段所在的接口名称) nat ID号 转换的网段 掩码
ASA(config)# nat (inside) 1 0 0 #为防火墙中所有 inside 区域做转换
2)定义全局地址池(转换后的地址池)
- 格式: ASA(config)# global (转换后接口名称) NAT ID 号 转换后唯一地址
ASA(config)# global (outside) 1 172.16.1.222
INFO: Global 172.16.1.222 will be Port Address Translated
分别使用内网两台主机 Telnet 远程登陆 R2 路由器
查看ASA防火墙转换条目
ASA# show xlate detail
注意:也可以将内部地址直接转换到外部的接口上(也就是图中的172.16.1.254)
ASA(config)# global (outside) 1 interface
测试完后将刚才配置的动态 PAT 转换条目清除,方便后续测试
ASA(config)# clear xlate #清除NAT转换表
ASA(config)# clear configure nat #删除动态NAT
ASA(config)# clear configure global #清空全局地址池
3.静态 NAT
- 将一个内部地址转换为一个外部地址,一对一的转换,其主要作用是保证内网地址的安全
1)配置静态转换
- 格式:ASA(config)# static (需要转换的接口名称,转换后所在接口名称) 转换后的全局IP 转换前的本地IP
ASA(config)# static (dmz,outside) 172.16.1.233 192.168.1.1
2)配置ACL
- 静态转换后,外网如果想访问内网的转换前的地址,必须写一条ACL ,该ACL的目标应该指向转换后的IP
ASA(config)# access-list out_to_dmz permit ip host 200.200.200.1 host 172.16.1.233
ASA(config)# access-group out_to_dmz in interface outside
3)验证
在 200.200.200.1 主机上使用浏览器访问转换后地址测试
查看转换条目
ASA# show xlate detail
测试完后将刚才配置的静态 NAT 转换条目清除,方便后续测试
ASA(config)# clear configure static #删除静态NAT
4.静态 PAT
- 将多个内网地址转换到一个公网地址,通过端口号去区分不同的服务
1)配置转换条目
- 格式 :ASA(config)# static (转换前所在区域名称, 转换后所在区域名称) 协议 转换后地址 端口或服务 转换前地址 端口或服务
将DMZ区域中192.168.1.1 的HTTP服务和 192.168.1.2 中的 FTP 服务转换到 outside 区域的外部地址172.16.1.188 的 FTP 和 HTTP 服务
ASA(config)# static (dmz,outside) tcp 172.16.1.188 http 192.168.1.1 http
ASA(config)# static (dmz,outside) tcp 172.16.1.188 ftp 192.168.1.2 ftp
2)配置ACL
ASA(config)# access-list out_to_dmz permit ip host 200.200.200.1 host 172.16.1.188
ASA(config)# access-group out_to_dmz in interface outside
3)验证
查看转换条目
ASA# show xlate detail
测试完后将刚才配置的静态 PAT 转换条目清除,方便后续测试
ASA(config)# clear configure static #删除静态PAT
四、NAT 控制
默认高安全级别是可以访问低安全级别的,也就是说,即使我们不做 NAT,inside 也可以访问 Internet;而在真实环境中,inside 访问Internet 时,可以通过 ASA 将源地址是自己 IP 的请求包发送出去,但是却不会接收到回应包,因为私网地址在互联网上是不合法的,因此我们还是需要做 NAT,将私网地址映射为公网地址来访问互联网或被互联网访问
ASA 从 7.0 开始提供了一个 NAT 控制的开关,即 nat-control 命令,当我们开启 NAT 后,简单的配置中,inside 不能再访问 Internet 了,必须做 NAT 转换才能进行访问
默认情况下,是禁用 NAT 控制(no nat-control),但在实际环境中,我们一般启用 NAT 控制方便管理;在启用 NAT 控制时,NAT 规则是必须的;即发起的每一个连接都需要一个相应的 NAT 规则
1.禁用 NAT 控制
这是默认的情况,在禁用 NAT 控制是,NAT 规则并不是必须的:它允许匹配 NAT 规则的网段进行地址转换通信;也允许不匹配 NAT 规则的网段通信,只是不经过地址转换
ASA(config)# no nat-control
2.启用 NAT 控制
如果启用了 NAT 控制,NAT 的规则就是必须的:它允许匹配 NAT 规则的网段进行地址转换通信;禁止不匹配 NAT 规则的网段通信
ASA(config)# nat-control
3.NAT 豁免
当启用 NAT 控制时,每个发起的连接都需要一个相应的 NAT 规则,但是在某些应用场合(例如配置 VPN)需要绕过 NAT 规则。绕过 NAT 规则有很多种方法,NAT 豁免就是其中一种,NAT 豁免允许双向通信
1)启用 NAT 控制
ASA(config)# nat-control
为 100.1.1.0/24 网段配置动态NAT
ASA(config)# nat-control
ASA(config)# nat (inside) 1 100.1.1.0 255.255.255.0
ASA(config)# global (outside) 1 172.16.1.188-172.16.1.200
2)配置 NAT 豁免
为 100.2.2.0/24 网段配置 NAT豁免
ASA(config)# access-list nonat extended permit ip 100.2.2.0 255.255.255.0 172.16.1.0 255.255.255.0
ASA(config)# nat (inside) 0 access-list nonat
3)验证
100.1.1.1验证
100.2.2.2验证