SSL 虚拟网络的IOS配置总结
SSL和TLS的历史:
安全套接层(SSL)是由Netscape Communication(网景)公司于1990年开发,用于保障WWW通讯的安全。主要任务是提供私密性、完整性和身份认证。1994年改版SSLv2, 1995年改版SSLv3。
Transport Layer Security(TLS)标准协议由IETF于1999年颁布,整体来说TLS非常类似于SSLv3,只做了少量修改。 (TLS 1.0 = SSL 3.1 ≈ SSL 3.0 ) 最新的版本是TLS 1.2
SSL协议概述:
SSL是一个不依赖于平台和应用程序的协议,用于保障TCP-based应用安全,SSL在TCP层和应用层之间,就像应用程序协议连接到TCP的一个接口。
SSL总是工作在TCP之上,应用层之下。
主协议是Record Protocol,附带四个子协议(Handshake Protocol,Change Cipher Spec Protocol , Alert Protocol , Application Data Protocol)
(1)Record协议提供数据加密,压缩,附带完整性检查
(2)Change Cipher协议用于产生和更新密钥
(3)Alert协议用于SSL连接和会话的管理性告警
(4)Handshake协议用于认证,协商参数并产生加密材料
注:紫色部分是双向认证才用到
DTLS (Datagram TLS)——RFC4347
为什么需要DTLS:
(1)TLS基于TCP443,建立 TCP/IP隧道
(2)TCP会对丢包做重传
(3)应用层和TLS都会试图重传,对于语音视频来讲很不好
因此:
(1)DTLS采用UDP/443替换TCP/443
(2)DTLS使用TLS来协商建议DTLS会话(控制消息和密钥交换还是使用TCP)
(3)业务数据使用DTLS,基于UDP传输
(4)对于延迟敏感的实时业务有利
(5)DTLS作为一个选项,如果需要的时候还可以退回到TLS方式
使用SSL加密的实例:
1. HTTP over SSL:加密网页流量是设计SSL的初衷,所以HTTP也是第一个使用SSL保障安全的应用层协议。当Netscape在其浏览器Navigator里运用HTTP over SSL的时候,使用https:// 来标识,因此HTTP over SSL通常又被称为HTTPS。后来HTTPS在RFC2818被标准化,工作在TCP 443端口。
2. Email over SSL:类似于HTTP over SSL,邮件协议SMTP,POP3,IMAP都可以支持SSL。SMTP over TLS标准文档RFC2487,POP3和IMAP over TLS在RFC 2595。
SSLVPN的特点:
提供如下特性:
1. 不需要预装客户端软件
2. 使用标准的网页浏览器即可建立VPN连接
3. 使用浏览器拥有的SSL技术提供数据私密性、完整性校验和源认证
4. 提供精细的访问控制
5. 客户端运用程序可以通过多种方式动态的下载,例如:连接时在线下载,通过java,activex或者exe文件分发。
6. 为连接互联网的系统灵活的建立VPN连接,不管这个系统是否被公司管理。
7. 在任何地点都能轻松的穿越防火墙和网络。
8. 支持透明的无线漫游。
9. 可以使用集成的IOS防火墙提供增强的安全性。
SSLVPN部署:
两个组件:
(1)SSL VPN服务器:可以是路由器,ASA5500,VPN3000
(2)SSL VPN客户端:网页浏览器,其他客户端软件(AnyConnect)
PPTP | L2TP | L2TP over IPSec | IPSec | SSLVPN | |
VPN客户端 | 绝大部分Windows系统集成 | 新版Windows系统集成 | 新版Windows系统集成 | 需要第三方软件 | VPN客户端可选 |
加密 | MPPE | MPPE | DES,3DES,AES | DES,3DES,AES | DES,3DES,RC4,AES |
部署 | 很少使用 | 很少使用 | 较少使用 | 大量使用 | 稳定增长 |
SSL VPN的访问模式:
1. 无客户端模式(7层技术):
无客户端模式提供了安全的web资源访问和基于web内容的访问,例如:互联网访问,数据库和在线的基于web的工具。无客户端模式使用(CIFS Common Internet File System)提供远程文件共享。无客户端模式受限于web-based的内容(默认http/https/cifs)
2. 瘦客户端(7层技术)(也叫做port forwarding):
瘦客户端提供TCP服务的远程访问,例如:POP3,SMTP,IMAP,Telnet和SSH运用。瘦客户端是在SSLVPN会话建立的时候通过JAVA程序的方式动态下载的。这种模式增强了网页游览器的加密功能。
3. 厚客户端(3层技术)(也叫tunnel mode或者full tunnel client):
厚客户端模式提供了广泛的应用程序支持(毕竟提供了IP可达),厚客户端软件SVC软件或者Cisco anyconnect VPN软件在VPN服务器上动态下载。这种模式提供了轻量级的,中心管理并且易于使用的SSL VPN隧道软件,实现了三层的完整访问支持任何应用。
服务器用windows 2K3或2K8, IP: 10.10.10.241/24
Client用windows 7做test-PC,IP:61.1.1.150/24
R1做telnet / SSH / HTTP Server
R2做SSL Gateway
一、底层配置
SW
vlan 10
vlan 20
int vlan 10
ip add 202.100.1.254 255.255.255.0
int vlan 20
ip add 61.1.1.254 255.255.255.0
int f1/2
sw access vlan 10
int f1/1
sw access vlan 20
R1
int f0/0
ip add 10.10.10.1 255.255.255.0
no sh
ip route 0.0.0.0 0.0.0.0 10.10.10.2
R2
int f0/0
ip add 10.10.10.2 255.255.255.0
no shut
int f0/1
ip add 202.100.1.2 255.255.255.0
no shut
ip route 61.1.1.0 255.255.255.0 202.100.1.254
Win7 记得写网关指向61.1.1.254
二、R1 SSH 、 HTTP服务器配置
R1
ip domain name cisco.com
crypto key generate rsa modulus 1024
username cisco password cisco
line vty 0 4
login local
自测: ssh -l cisco 10.10.10.1
ip http server
三、基本IOS GW配置
四步:
(1)配置Gateway——指定SSL接入点
(2)配置Context——SSLVPN连接属性容器
(3)配置页面外观 (可选)
(4)配置组策略——各种策略容器
注:context——外部一个SSL VPN客户端连接到GW,GW定义公网IP地址,直接和context建立。我们可以运用策略到context来限制连接的用户和组。我们可以把context理解为ASA里tunnel-group。
R2
aaa new-model //不是必须,但是建议使用AAA来管理用户
aaa authentication login NOAU line none
line con 0
login authentication NOAU
line aux 0
login authentication NOAU
aaa authentication login SSL local
aaa authorization exec SSL local
username admin password cisco
ip http server
(1)配置Gateway
webvpn gateway SSLGW //系统这时会自动创建RSA key pair用于生成自签名证书
ssl trustpoint TP-self-signed-xxxxxxx //系统自动产生这句话,标明使用哪个自签名证书(容器)
ip add 202.100.1.2 //系统默认会追加 port 443
http-redirect port 80 //用户如果通过http打开80端口,将被重定向到https 443端口
inservice //开关
R2#show webvpn gateway
Gateway Name Admin Operation
------------ ----- ---------
SSLGW up up
(2)配置Context
webvpn context SSLCTX
aaa authentication list SSL //不配这句话,默认是调用default list(local)
gateway SSLGW
inservice
测试:
Win 7用浏览器打开: http://202.100.1.2
自动重定向到 https://202.100.1.2
首先打开的是Login
这就是Client Less Mode。
R2#show webvpn session context all
WebVPN context name: SSLCTX
Client_Login_Name Client_IP_Address No_of_Connections Created Last_Used
admin 61.1.1.150 6 00:01:30 00:01:08
R2#show webvpn session user admin context all
Session Type : Clientless
Client User-Agent : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Tr
Username : admin Num Connection : 2
Public IP : 61.1.1.150 VRF Name : None
Context : SSLCTX Policy Group :
Last-Used : 00:06:11 Created : *15:45:54.323 UTC Mon Aug 12 2013
Session Timeout : Disabled Idle Timeout : 2100
Citrix : Disabled Citrix Filter : None
Client Ports : 60513 60528
用户登出需要点logout
否则会话会保持,GW清除命令:
cle webvpn session user admin context SSLCTX
(3)配置页面外观
首先调整Login页(登录页)
webvpn context SSLCTX
title "BJ WOLF SSLVPN"
color green
login-message "Welcome to BJ WOLF CCIE Security"
重新登录
限制用户登录数量,有效防止攻。 -击
webvpn context SSLCTX
max-users 2 //最多只允许两个用户,同时登录。
(4)配置组策略
(a)如果一个context只定义了一个group policy,那么这个policy必须应用到default group policy
(b)一个default group policy只能应用一个group,如果想定义多个,可以使用AAA
(c)如果一个context定义了多个group policy,但Radius服务器没有推送任何policy,那么default group policy将会应用给那些没有收到特定策略的用户
1. Banner设置
webvpn context SSLCTX
policy group 1
banner "welcome to BJ WOLF"
default -group-policy 1
重新登陆测试
2. 隐藏url-list
webvpn context ssl
policy group 1
hide-url-bar
测试
3. 定义url-list
webvpn context SSLCTX
url-list "Inside.http"
heading "inside.http-R1"
url-text "inside.http-R1" url-value "http://10.10.10.1"
policy group 1
url-list "inside.http"
mask-urls
mask-urls以后的效果:
4. IDLE时间配置
webvpn context SSLCTX
policy group 1
timeout idle 1800 //闲置时间,默认2100s
timeout session 3600 //用户会话总时间,默认无限
5. 配置NBNS和CIFS
为什么需要配置 NBNS 服务器:
Cisco IOS 路由器支持 Common Internet File System(CIFS)的网络文件共享。配置 CIFS 需要预先配置 NetBIOS Name Server(NBNS),也叫做 Windows Internet Naming Server(WINS)。当 SSLVPN 用户查询并且游览网络的时候,CiscoIOS 路由器联系 WINS 服务器获取可用 domains(域名),workgroups(工作组)和 workstations(工作站)的列表。
webvpn context SSLCTX
nbns-list "wins-server"
nbns-server 10.10.10.241 master
policy group 1
nbns-list "wins-server"
functions file-access //激活文件共享功能,如不启用,下两条命令没有意义。
functions file-browse //提供文件目录浏览功能。
functions file-entry //在网页允许用户直接输入服务器地址。
测试
配置文件共享
webvpn context SSLCTX
cifs-url-list "Inside.File"
heading "Inside.file.server"
url-text "Inside.file.server-241" url-value 10.10.10.241
policy group 1
cifs-url-list "Inside.File"
测试:
6.1 port-forwarding配置(瘦客户端)
webvpn context SSLCTX
port-forward "telnet.inside"
local-port 3000 remote-server "10.10.10.1" remote-port 23 description "This is a Router"
//源local-port定义一个没有被占用端口号,建议设置大些。目的端口号为标准端口号。
policy group 1
port-forward "telnet.inside"
telnet 127.0.0.1 3000 即可登录R1
.1.1 Smart-Tunnel
注:15.0以后开始支持Smart-Tunnel。
webvpn context SSLCTX
smart-tunnel list "Inside-telnet"
appl "telnet" "telnet.exe" windows
policy group 1
smart-tunnel list "Inside-telnet"
测试:
直接telnet 10.10.10.1即可
注:一个context下只能调用一个smart-tunnel
6.2 port-forwarding http proxy配置
webvpn context SSLCTX
port-forward "pf.inside"
local-port 3000 remote-server "10.10.10.1" remote-port 23 description "R1 Telnet"
local-port 8888 remote-server "10.10.10.1" remote-port 80 description "R1 HTTP"
local-port 8389 remote-server "10.10.10.241" remote-port 3389 description "WIN2K8 RDP"
policy group 1
port-forward "pf.inside" auto-download
注: 如不跟auto-download命令,需要手工下载JAVA插件。
7. 配置Application ACL
网络管理员可以配置 application access control lists( ACL)来控制 Clientless SSL VPN 用户对特定运用服务器的访问。Application ACL 可以控制HTTP,HTTPS,FTP 和 CIFS 等协议。这种 ACL 只影响 clientless SSL VPN 的流量。(15.0不影响)
Application ACL 可以使用如下两种方式来定义:
(1)Filer on URL:基于URL的web ACL,用来对SSLVPN数据包里包含类似http://或错误!超链接引用无效。
(2)Filter on address and service:基于地址和服务的 web ACL,这种ACL 分析 TCP 封装,基于 IP 地址和 4 层端口号过滤 SSLVPN 数据包。
webvpn context SSLCTX
acl "control.http"
permit http 61.1.1.150 255.255.255.255 10.10.10.1 255.255.255.255 syslog
注:源地址为真实的SSL VPN 客户端地址。也可以写any
policy group 1
acl "control.http"
列表没有permit 的将无法打开
R2(config)#
*Aug 12 18:14:12.739: %SSLVPN-6-WEBVPN_APP_ACL_NET: The request( source ip: 61.1.1.150, destion ip : 10.10.10.1 ) from user admin is permitted by ACL
SVC模式:
页面推送安装程序
需要预先把 anyconnect的package 文件拷贝到本地flash:(或者ssl vpn client手工安装)
1. 通过TFTP将package文件拷贝到flash
R2#format disk0: //模拟器必须先格式化一遍才能拷入文件
R2#copy tftp: disk0:
Address or name of remote host []? 61.1.1.150
Source filename []? anyconnect-win-2.5.3055-k9.pkg
Destination filename [anyconnect-win-2.5.3055-k9.pkg]?
Accessing tftp://61.1.1.150/anyconnect-win-2.5.3055-k9.pkg...
Loading anyconnect-win-2.5.3055-k9.pkg from 61.1.1.150 (via FastEthernet0/1): !!!!!
2. 安装pkg
R2(config)#webvpn install svc disk0:/anyconnect-win-2.5.3055-k9.pkg
SSLVPN Package SSL-VPN-Client (seq:1): installed successfully
//安装anyconnect的pkg文件。有的模拟器上打问号看不见这句话,一样可以敲。
3. 创建地址池,用于给客户端分配IP地址
ip local pool SSLPOOL 172.16.1.100 172.16.1.200
严重注意:12.4 T以上IOS地址池必须是SSL Server内网地址,或者配置一个环回接口。
int lo 10
ip add 172.16.1.1 255.255.255.0
webvpn context SSLCTX
policy group 1
functions svc-enabled //激活SVC
svc address-pool "SSLPOOL" netmask 255.255.255.0 //调用地址池。
svc keep-client-installed //保持anyconnect软件一直安装在客户端上(可选)。
svc rekey method new-tunnel //更新密钥的方式是建立新的隧道(可选)。
安装过程略
因为当前无法验证证书,默认情况下AnyConnect不允许连接非法证书的SSL服务器
因此点击Change Settings
重新连接
此时客户已经可以完全访问网内的资源了,不限于http/https/cifs
激活SVC功能 (SSL VPN Client)
两种激活 SVC 的选项:
(1)svc-enable:当使用这个选项激活 svc功能, 当用户认证成功以后,
Anyconnect 客户端会自动在用户电脑上加载。如果 SVC 客户端加载出现错误,用户
依然能够使用 clientless 和 thin client SSLVPN 模式。 Svc-enable 这种功能,在当我们想使用 svc 对 clientless 或 thin client 模式访问的至关重要的运用(Web,Mail 和 Terminal Server)做备份的时候启用实现备份连接,是非常有用的。
(2)svc-required:当使用这个选项激活 svc 功能, 当用户认证成功以后,Anyconnect 客户端会自动在用户电脑上加载。然而SVC客户端加载出现错误,用户将不能使用 clientless 或 thin client SSLVPN模式。
配置 Traffic Filter
ip access-list extended TRAFFIC-ACL
permit tcp 172.16.1.0 0.0.0.255 host 10.10.10.1 eq telnet
注:放行地址池为源到特定地址和服务的流量。
webvpn context SSLCTX
policy group 1
filter tunnel TRAFFIC-ACL
测试,ping不通,但telnet可通
配置 Split Tunnel (full tunnel后,当前用户已无法访问公网,可测试ping 61.1.1.254不通,因此需要隧道分割)
webvpn context SSLCTX
policy group 1
svc split include 10.10.10.0 255.255.255.0
注:只有10.10.10.0/24的流量加密(默认tunnel all)
//split exclude IP+Mask 什么样的流量不加密。
再ping公网地址可以通了
配置DNS、WINS 服务器和默认域名、homepage的指派
命令行配置:
webvpn context SSLCTX
policy group 1
svc default-domain "wolf.com"
svc homepage www.wolf.com
svc dns-server primary 10.10.10.241
svc dns-server secondary 10.10.10.241
svc wins-server primary 10.10.10.241
svc wins-server secondary 10.10.10.242
感谢阅读 记得关注我!