一个简单的思科ASA防火墙LDAP认证的实例

?思科的ASA防火墙的AAA认证支持RADIUS、TACAS以及LDAP认证,大家对于前两种认证接触的比较多,但是LDAP认证的相关资料就比较少了。最近在研究防火墙认证这方面的特性开发,所以adreaman我就特别架起了一个最简单的LDAP实验拓扑,供参考学习,也为更加深入的研究打下基础。

实验拓扑:

linux pc —————ASA——————http服务器
?????????????????????????????????????|
?????????????????????????????????????|
?????????????????????????????????????|———-LDAP认证服务器(windows 2003)
????????????????????????
ASA与linux pc连接的接口为outside口,安全级别为0;ASA与http服务器连接的接口为dmz口,安全级别为80;ASA与LDAP认证服务器连接的接口为inside口,安全级别为100.

我们的实验是:令外网那台linux pc的web浏览器发出http浏览请求,ASA在为其建立HTTP连接时,先向内网的LDAP服务器的认证,通过认证后linux pc即可浏览dmz网络的http服务器上的网页内容。

思科ASA防火墙软件版本:Cisco Adaptive Security Appliance Software Version 8.0(4)
首先配置最基本的网络连通性:
linux pc的接口配置ip地址:
??? ifconfig eth1 10.10.1.1
ASA与linux pc连接的接口配置:
??? interface GigabitEthernet0/0
????? nameif outside
????? security-level 0
????? ip address 10.10.1.100 255.255.0.0
http服务器ip地址:
??? 20.0.35.101
ASA与http服务器连接的接口配置:
??? interface GigabitEthernet0/2
????? nameif dmz
????? security-level 80
????? ip address 20.0.35.120 255.255.255.0
LDAP服务器接口地址:
??? 20.0.36.10
ASA与LDAP服务器连接的接口配置:
??? interface GigabitEthernet0/1
????? nameif inside
????? security-level 100
????? ip address 20.0.36.88 255.255.255.0
?????
然后配置linux pc与http服务器的连通性,也就是配置防火墙inside网络与outside网络之间的NAT转换,这里就是用
access-list ldap-test permit any any ;这里建立一个acl,并将其绑定到outside口(命令略)
最简单的静态NAT转换:
static (dmz,outside) 10.10.1.133 20.0.35.101 netmask 255.255.255.255? ;将dmz接口所在网络内的20.0.35.101地址转换为10.10.1.133这样的outside网络地址
static (outside,dmz) 20.0.35.166 10.10.1.1 netmask 255.255.255.255??? ;将outside网络的10.10.1.1地址转换为20.0.35.166这样的dmz网络地址
然后在linux pc 尝试ping一下10.10.1.133地址,保证ping通。这样,就保证外网可以正常访问到http服务器的地址了。

配置ldap认证服务器
我使用的LDAP服务器实际是一台安装了Windows2003的PC,在它之上安装windows2003服务器上的“域控制器”(Active dirctionary)服务,这个“域控制器”也叫做Active dirctionary,是windows2003服务器的一项重要服务,主要用在windows域的控制,所以也叫做域控制器,它是基于LDAP协议的,所以,它就是一台LDAP服务器。除了微软的这个域控制器活动目录之外,常见的LDAP服务器还有SUN、novell等公司的专用LDAP服务器软件,以及开源的基于Linux的OpenLDAP。
具体的安装细节就不介绍了,安装好之后,在域控制器软件中user分支下添加一个用户ldaptest并设置密码。我们之后就将使用这个用户来做认证。

为了保证域控制安装正常,可以用一个LDAP客户端测试一下。我使用LdapBroswer软件:

使用LdapBroswer连接LDAP服务器时,需要输入服务器主机地址,端口(默认389),Ldap协议版本号(一般为3),以及base目录(主机ip、端口和版本号填正确的话,可以使用fetch按钮自动获取到base目录。实际就是填入LDAP服务器的基目录dc=xxx,dc=ccc这种字符串),接下来输入用户名和密码,就是我们刚刚建立的那个用户了。这里要特别注意的是,用户名一定要填写在windows2003域控制器中显示的那个“显示名称”而不是那个“登录名称”。如果一切正常的话,LdapBroswer就会将该windows2003域控制器的LDAP目录全部显示出来了。有了LdapBrowser,我们之后需要配置的一些信息也可以很方便的查看到,所以这个东东还是很有帮助的。

配置ASA对LDAP认证的支持:
1、设置ASA使用的LDAP服务器的属性
aaa-server ldap-test-grp protocol ldap??? ;创建一个ldap认证服务器组
aaa-server ldap-test-grp (inside) host 20.0.36.10? ;添加一个认证服务器到这个ldap认证服务器组
?ldap-base-dn DC=xxx,DC=ccc???????????? ;设置ldap服务器的基目录。在ldapBrowser上查看根目录的属性就可以看到这个字符串,原样copy过来即可
?ldap-scope subtree??????????????????? ;可以搜索子树
?ldap-login-password *???????????????? ;输入我们创建的那个用户的密码,这里显示的是*号
?ldap-login-dn CN=uuu,CN=mmm,DC=xxx,DC=ccc?? ;输入我们创建的用户的dn(dn是LDAP的术语,指一个可查询单元)? 这个信息也可以使用ldapbrowser查看我们添加的那个用户的属性来找到,原样copy过来即可
?server-type microsoft????? ;我们当前使用的是微软的域控制器活动目录服务器
?
2、aaa authentication include tcp/0 outside 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 ldap-test-grp ;所有的outside的tcp连接都使用这个ldap认证服务器组来认证

然后,我们就可以测试LDAP认证过程了。在linux pc打开一个网页浏览器,打开http服务器的服务地址,这时浏览器会自动打开一个登录框,输入我们添加的那个用户的用户名和密码(注意,这里要填的是域控制器上的“登录名称”,而不是“显示名称”),就可以正常浏览网页了。至此,LDAP认证完成。

如果遇到问题或需要深入调试,可以在ASA上打开ldap调试信息debug ldap来查看更加详细的处理信息和出错信息等,或者在AD服务器所在的windows 2003上用抓包软件查看LDAP报文的详细信息。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>