非法外联一直都是我们企业网络管理过程中的痛点,也是不容忽视的网络安全问题。为了防止外来设备接入企业网可以采用在交换机上设置 IP-MAC绑定,结合ACL等方法使外来设备无法接入网络。目前市面上已经出现了一些上网行为管理和审计类产品,那有没有开源产品也能满足这一需求,本文就是针对该需求的一个探索。 今天为大家介绍一款开源的NAC工具PacketFence PacketFence是一个开源的网络访问控制软件,它使用NESSUS来对网络节点计算机进行漏洞扫描,从而发现设备中存在安全风险,一旦确定节点计算机中存在的安全风险,此终端就会被禁止访问目标网络。PacketFence还使用SNORT传感器来检测来自网络的攻击活动,并给出相应的警告。PacketFence支持对许多厂商的可网管交换机进行VLAN设置,通过划分不同VLAN来阻止不安全的终端接入网络,这些被支持的交换机包括H3C、Cisco、DELL等厂商生产的可网管交换机。PacketFence通过FreeRADIUS模块提供对802.1X无线的支持,能为我们提供一种和有线网络同样的安全控制方式。在管理上我们可以通过WEB和命令行界面来管理它。这些管理功能完全可以满足目前大部分中小企业的网络访问控制的需求。PacketFence可以在RHEL和CentOS Linux、Debian系统中运行,我们可以下载它的二进制文件包来安装,也可以下载它的一体化VMWare虚拟机文件来直接使用,我们可到 *
http://www.packetfence.org/download/zen.html
网站下载他的Live CD(最新版本)文件,放到U盘便可作为启动系统而直接使用。
硬件配置: 普通服务器,需要2块高性能千兆网卡(一块网卡用于链控制台,另一块网卡用于收集信息接在交换机的SPAN口),对于交换机的要求为可网管交换机。访问WEB界面: *
https://ip:1443/
接下来我们分享一下实战案例:
网络设置* * * * *
vlan1作为管理vlanvlan2作为认证vlanvlan3作为隔离vlan(非法设备将放入这个vlan)vlan10作为常规办公vlan
DHCP/DNS
packetfence自身提供DHCP服务,它将为VLAN2、3分配IP地址,但不为VLAN10提供IP,VLAN10需使用者配置IP地址(自建外部DHCP服务器)。packetfence自身提供DNS服务,它将为VLAN2、3提供域名解析功能,但不为VLAN10提供服务,VLAN10使用者自建外部DNS服务器。
3.安装
导入虚拟机
PacketFence6.4.0有预构建的虚拟磁盘(OVA)。如果您正在使用一个ESX-typehypervisor,您需要使用vSphere客户机(orvCenter)导入OVA。我们不支持任何Xen-based hypervisor。
导入ESX
确保创建了唯一的虚拟网卡,也确认你的虚拟网卡连接在虚拟交换机上,你将需要创建trunk允许所有VLAN,指派文件给你packetfence ZEN VM的虚拟网卡。
4.虚拟机密码
管理台(SSH /控制台)、MySQL
登录:root密码:p@ck3tf3nc3
WEB认证 / 802.1x认证
登录:demouser密码:demouser
5.配置
packetfence环境配置
启动虚拟机前,确保你的测试电脑接在交换机正确的trunk端口,并且网络连接正常
通电后,打开浏览器进入https:/ / PF_IP:1443/ 进行VM配置,这是一个五步配置过程,完成后虚拟机将持久工作在packetfence环境。
第一步:部署方式
这是配置过程中最重要的一步。你可以选择如何部署:
VLAN部署(带外)或在线部署(带内),或两者混合部署。
这一步的选择将影响下一步网络配置,本指南将为你展示怎样配置外部VLAN模式,
如果你想配置内部模式请参考PacketFenceInlineDeploymentQuickGuide usingZEN Step
第二步:网络
你需要静态的配置你的网络接口(注意:不支持DHCP接口配置),
根据第一步的配置选择,你必须配置配置一些需求接口,web界面将列出所有当前系统上的网络接口,如果这些网络接口DHCP获得了IP或者手动配置了IP地址,你可以编辑他们,例如创建或删除接口上的VLAN,enable/disable接口。注意:在你操作这些的时候对于接口是有影响的,在enable的接口,它是有持续影响的。最后你要设置一个管理端口。
VLAN强制所需要的接口类型:* * * *
管理vlan注册vlan隔离vlan
注意:你只能设置一个管理接口
然后,我们需要在有线接口上创建另外两个VLAN(大部分是在eth0上),点击增加VLAN
配置如下: * * * * * * * * *
注册VLANVirtual LAN ID: 2IP Address: 192.168.2.1Netmask: 255.255.255.0 隔离VLANVirtual LAN ID: 3IP Address: 192.168.3.1Netmask: 255.255.255.0
注意事项:暂时忽略高可用选项,如果对PacketFence集群感兴趣,可以参考集群指南。
也不要忘记点击接口名eth0区修改物理接口的正确的网络管理信息。
根据我们的测试例子,需要结合每个接口正确的类型 * * *
eth0: 管理eth0 VLAN 2: 注册eth0 VLAN 3: 隔离
第三步:数据库配置
这一步将配置PacketFence所需要的MySQL服务器。将创建数据库和模式以及必要的用户操作。root账号也进行安全设置,如果有必要设置密码并且拒绝远程登录。
如果MySQLd 服务没有启动,请启动。点击网页最上方的MySQL的开始按钮。
接着需要创建MySQL数据库的root密码。输入两次相同的复杂密码并保存,点击Test按钮,显示成功连接数据库,即密码创建成功。
下一步是创建数据库,并导入正确的模板。保留默认数据库名并创建数据库和表
最后一步Packetfence用户账号关联MySQL服务器,保留默认使用名和输入一个密码,这些将自动设置到Packetfence配置里。输入两次密码后,点击创建
如果这三部分都设定成功,点击继续下一步。
第四步:PacketFence配置
该步骤将配置PacketFence安装的选项。这些配置大多数符合用户的规格.
几乎所有的需求信息很清晰的,唯一容易混淆的是DHCP服务器的部分,在用户网络输入一个DHCP列表,当PacketFence看到来至于这些DHCP分配的IP的流量时,不会触发非法DHCP警报。
PacketFence将使用域名和主机名产生一个URL在认证页面进行重定向服务。如果你有一个使用相同主机名和域名的证书可以在认证页面验证SSL连接。
第五步:管理
创建一个管理员账号进入PacketFence管理网页界面,提供所需的账号密码,点击修改密码
第六步:服务---确认
通过之前所做的配置,启动PacketFence服务器。一切正常的话,可以收到一个邀请窗口提示你继续进入这个web管理界面。
然后用已有的证书(第4步)登录PacketFence管理网页界面
如果一切顺利的话服务状态会进行监控,如果失败,你可以看到哪个服务异常,并且log日志可以查出是什么导致这个异常。
配置DHCP OMAPI
为了加速IP地址的租约查询,你可以配置DHCP OMAPI,可以更快的查询IP与mac地址的关联。
首先,在SSH会话中执行以下命令 *
# dd if=/dev/urandom bs=16 count=1 2>/dev/null | openssl enc -e -base64
会产生一个相类似的输出 *
m4NMkOKc9IxfWk8cL2fP4g==
然后再管理界面粘贴这个输出结果Configuration/OMAPI/OMAPIbase64 keyand并保存。
在SSH会话中,用以下命令重启DHCP服务 *
# /usr/local/pf/bin/pfcmd service dhcpd restart
PacketFence配置文件
如果你想要定制配置文件,我们建议参考PacketFence管理指南。
主要配置文件: * * *
conf/pf.conf:配置PacketFence服务conf/networks.conf:配置注册和隔离网络conf/switches.conf:配置VLAN和网络服务
网络服务
为了正确的配置你的服务,请参考网络服务配置指南。
现在你安装了一个完整版的PacketFence,接下来,我们提供了一个用思科2960交换机结合PacketFence使用MAC认证的例子。
如果没有完全安装,登录PacketFence网页管理界面,点击配置Configuration,选择网络部分下的Switches。
添加一台交换机(cisco2960)到PacketFence数据库,点击Add switch在界面的底部。
添加窗口将弹出,在上面,你要输入两者集成的正确信息。使用下面的信息填入到文本框内
Definition: * * * * * *
IP: This will be the IP of the Catalyst 2960 switch on the management networkDescription: Cisco Catalyst 2960Type: Cisco::Catalyst_2960Mode: ProductionDeauthentication: RADIUSDynamic Uplinks: Checked
Roles: * * * *
Role by VLAN ID: checkedregistration VLAN: 2isolation VLAN: 3default: 10
RADIUS: *
Secret Passphrase: useStrongerSecret
Snmp: * * *
SNMP Version: 2cSNMP Read Community: ciscoReadSNMP Write Community: ciscoWrite
点击保存添加
新添加的交换机将显示在列表中。
配置CISCO 2960
这步我们将讨论如何配置你的cisco 2960交换机以满足与你配置好的PacketFence环境协同工作。我们假设你会使用交换机命令行做所有的配置。
启用802.1X功能
配置的第一步,你一定要在交换机全局启用802.1X功能。完成这步,使用如下命令: *
dot1x system-auth-control
配置AAA
下一步是配置AAA服务,它会使用你新创建的PacketFence服务器。务必保证在下面的命令中,你用真实的PacketFence管理IP地址替换了 PF_MANAGEMENT_IP 这个参数。 * * * * * * * *
aaa new-modelaaa group server radius packetfenceserver PF_MANAGEMENT_IP auth-port 1812 acct-port 1813aaa authentication login default localaaa authentication dot1x default group packetfenceaaa authorization network default group packetfenceradius-server host PF_MANAGEMENT_IP auth-port 1812 acct-port 1813 timeout 2 key useStrongerSecretradius-server vsa send authentication
注意:
请保证在交换机有一个本地账户。
配置交换机MAB功能
AAA功能准备之后,我们能配置一些或者所有的交换机端口去演示mac认证旁路功能(MAB)(支持w/o 语音功能): * * * * * * * * * * * * *
switchport mode accessauthentication host-mode single-hostauthentication order mab dot1xauthentication priority mab dot1xauthentication port-control autoauthentication periodicauthentication timer restart 10800authentication timer reauthenticate 10800mabno snmp trap link-statusdot1x pae authenticatordot1x timeout quiet-period 2dot1x timeout tx-period 3
如果你想在一些端口测试下VoIP电话机(例如:语音VLAN 100),可以在你的接口配置下添加下面的命令行:
switchport voice vlan 100authentication host-mode multi-domain
配置SNMP
最后,针对一些操作(像VoIP),PacketFence仍然需要通过SNMP访问交换机。请务必保证你像下面一样配置两个SNMP团体名: * *
snmp-server community ciscoRead rosnmp-server community ciscoWrite rw
你可以参考Cisco Catalyst 文档配置更多的选项。
配置授权的变更*
aaa server radius dynamic-author client PF_MANAGEMENT_IP server-key useStrongerSecret port 3799
保存配置
所有配置完成后,千万不要忘记用:wirte mem 保存你的配置。
测试和演示
恭喜你,你完成所有的设置和准备工作!如果你的设置配置正确,你应该做到如下事情: * * * *
从PacketFence环境能工到达(或ping通)交换机登录PacketFence管理UI(https://management_IP:1443)使用demouser/demouser 凭证在mac认证的端口连接上一个用户设备,演示一次认证过程
FreeRADIUS
PacketFence ZEN 6.4.0使用预先配置的FreeRADIUS完成有线和无线的认证(使用EAP协议的8021.X认证和mac认证)。我们为了802.1X认证创建了一个本地用户。
主要的配置文件如下:
/usr/local/pf/conf/radiusd.conf:RADIUS服务的配置模板/usr/local/pf/conf/eap.conf:使用EAP协议的802.1X认证的配置模板/usr/local/pf/conf/sql.conf :RADIUS记账功能和RADIUS客户端配置模板▪/usr/local/pf/raddb/users:定义本地的802.1X用户/usr/local/pf/raddb/sites-enabled/packetfence:定义在AAA(认证-授权-记账)不同阶段的模块默认配置/usr/local/pf/raddb/sites-enabled/packetfence-tunnel:定义主要是为了隧道EAP处理进程的一个本地虚拟主机。这是默认虚拟主机的扩展。/usr/local/pf/raddb/packetfence.pm :PacketFence的FreeRADIUS模块。与PacketFence协同工作。
VLANAccess 务必保证在交换机配置了注册、隔离和正常VLAN配置一个交换机端口为trunk端口能够访问所有VLAN。本征VLAN应该是管理VLAN(vlan1)把你PacketFence主机的eth0连接上trunk端口把一个交换机端口划分在注册VLAN把另外一个交换机端口划分在隔离VLAN分配一个具有静态IP地址(配置正确的网段)的主机放在注册VLAN分配一个具有静态IP地址(配置正确的网段)的主机放在隔离VLAN保证在VLAN2的设备能够通过eth0.2(且只能通过这个接口)PacketFence直接通信保证在VLAN2的设备不能和其他VLAN的设备通信保证在VLAN3的设备能够通过eth0.3(且只能通过这个接口)PacketFence直接通信保证在VLAN3的设备不能和其他VLAN的设备通信
第七章 测试
在vlan部署模式注册一个设备
你现在可也测试注册过程。你需要做如下事情:
在交换机上连接一个未注册的设备保证PacketFence能够从交换机收到radius认证请求。查看PacketFence的日志文件:/usr/local/pf/logs/packetfence.log保证PacketFence处理了radius请求,并将交换机端口划分为注册VLAN(VLAN2)。再次查看PacketFence日志文件:/usr/local/pf/logs/packetfence.log
在电脑上操作:
打开一个浏览器尝试连接一个HTTP站点(不能是HTTPS站点,例如:www.baidu.com)务必保证不管你想要访问什么网站,你只能访问注册页面
注册这台电脑使用:
用户名:demouser密码:demouser
一旦这台电脑注册完成,请确认:
PacketFence将这个交换机端口划在正常VLAN(VLAN10)这台电脑能够连接上网络并能够访问Ineternet。