在本课中,你将回顾Fortinet单点登录(FSSO)操作,并了解对FSSO问题进行故障排除的工具和技巧。
完成本课程后,你应该能够实现上图显示的目标。
通过展示对FSSO及其组件的熟练理解,你将能够了解如何跟踪用户登录事件,列出经过身份验证的FSSO用户,并对常见的FSSO身份验证问题进行故障排除。
在本节中,你将了解FSSO模式、其组件以及它们如何交互。
FSSO使FortiGate能够利用你网络的现有身份验证系统进行防火墙身份验证。一旦用户登录,他们就可以访问其他网络资源,而无需再次进行身份验证。两种最常见的FSSO方法是域控制器(DC)代理和轮询。
DC代理模式需要一个收集器代理。它还要求在所有Windows DC中安装DC代理。DC代理检测登录事件,并将此信息“推送”给收集器代理。收集器代理将登录事件与工作站IP地址和用户组信息一起转发到FortiGate。
轮询模式不需要安装直流代理。在轮询模式下,收集器代理经常轮询每个DC以获取最新的登录事件。轮询模式有三种类型:
● NetAPI:轮询NetSessionEnum API。
● WinSecLog:轮询所有安全事件日志。
● WMI:轮询特定安全事件日志。
轮询间隔是估计的时间,取决于服务器数量和网络延迟。
如果使用独立的收集器代理,则支持所有三种类型的轮询模式。或者,轮询可以直接从FortiGate(无代理轮询模式)执行,因此不需要独立的收集器代理。然而,作为收集器代理的FortiGate仅支持WinSecLog轮询类型。
你可以将FSSO组件视为在以下四个阶段运行:
● 第1阶段:当用户在工作站上进行身份验证并触发用户登录事件时,该阶段开始。在此阶段,FSSO检测登录事件并记录工作站名称、域和用户。
● 第2阶段:在此阶段,FSSO接收来自DC代理、NTLM、API轮询模式、Win Sec或TS/CITRIX等来源的登录信息。收集登录信息后,FortiGate以标准或高级模式运行,执行管理域(AD)查询以收集用户组成员信息。在eDirectory的情况下,FortiGate使用本机API或LDAP来收集此信息。此阶段将工作站名称解析为IP地址,并确定用户属于哪个用户组。
● 第3阶段:在此阶段,用户登录信息,包括IP地址和组列表,将发送到FortiGate。
● 第4阶段:在此阶段,FortiGate接收身份验证详细信息,并为此登录事件创建一个或多个日志条目。
上图显示了FSSO流量如何流动以及使用哪些端口。
当使用轮询模式时,轮询由FortiGate或收集器代理执行。在这两种情况下,都使用TCP端口445。
默认情况下,收集器代理和FortiGate之间的通信使用端口TCP 8000。默认情况下,DC和收集器代理之间的通信也使用UDP端口8002。
FSSO根据流量的源IP地址识别每个用户。每个活跃的FSSO用户都与一个或多个IP地址相关联。每个IP地址只与一个用户相关联。这在使用终端或Citrix服务器的网络中会产生冲突,其中多个用户共享相同的IP地址。对于这些情况,你可以安装终端服务器(TS)代理。TS代理不仅为收集器代理和FortiGate提供每个用户的源IP地址,还提供他们正在使用的源TCP/UDP端口。因此,通过将源IP地址与源端口相结合,可以识别共享同一IP地址的多个用户。TS代理和收集代理之间的通信也使用UDP端口8002。
每次收集器代理收到登录事件时,它都会检查用户是否在忽略列表中。
如果是,登录事件将被丢弃。之后,收集器代理检查用户的组信息是否仍在缓存中。
如果没有,收集器代理会执行LDAP或API查询,以从Windows AD获取组信息。一旦收集器代理知道用户组,它就会检查其中是否包含在监控组列表中。
如果没有包含任何组,则登录事件不会转发到FortiGate。如果至少包含一个组,则登录事件将转发到FortiGate。
外部收集器代理定期检查每个活跃的FSSO用户是否仍然登录。它通过根据可配置的间隔对所有已知的活动工作站进行轮询来做到这一点。
如何进行此检查取决于FSSO模式。对于WMI轮询模式,收集器代理检查WMI服务。对于所有其他模式,收集器代理通过远程注册表服务检查HKEY_USERS。
如果工作站不响应这些检查,收集器代理将启动一个计时器(死入超时间隔)。计时器过期后,工作站被设置为“未验证”状态,收集器代理假设用户已注销。
你还可以配置外部收集器代理,以定期检查活动FSSO用户的IP地址是否已更改。例如,当用户从有线网络切换到无线网络时,可能会发生这种情况。当你启用此收集器代理功能时,收集器代理会定期使用DNS服务器来解析工作站名称。
如果DNS服务器使用新的IP地址回复,收集器代理会向FortiGate发送注销事件,然后使用新的IP地址发送登录事件。
因此,每当用户更改IP地址时,立即自动更新DNS服务器是很重要的。
任何FSSO网络都有三个重要要求,大多数FSSO问题发生在不满足这些要求之一时。
收集器代理经常轮询每个活动工作站。为了使此轮询正常工作,TCP端口139和445必须在收集器代理和工作站之间打开。防火墙必须允许这种流量。此外,远程注册服务必须在工作站上启动并运行。
DNS用于获取用户的IP地址。因此,管理员必须确保每个工作站名称都使用正确和最新的IP地址在DNS服务器中注册。
在本节中,你将学习如何诊断FSSO问题并使用故障排除命令。
在对FSSO问题进行故障排除时,管理员应该采取哪些步骤?上图提供了一个通用清单。
在本课中,你将学习如何执行推荐的故障排除步骤。
在开始故障排除之前,建议你收集配置和拓扑信息。确定安装了哪个FSSO版本,网络中有多少个DC,FortiGate配置文件等。
如果出现问题,diagnose debug auth fsso list命令可以显示收集器代理正在发送到FortiGate的用户信息。
作为初始故障排除步骤的一部分,对收集器代理日志记录设置进行一些更改,以确保捕获所有所需的调试信息。首先,在日志级别字段中,选择Information。
其次,增加日志文件大小限制(MB)字段中的设置。如果日志文件限制太低,特别是在大型FSSO网络中,你可能没有时间查看相关的调试信息,因为它将被新日志事件迅速覆盖。
第三,你可以通过选择在单独的日志中记录登录事件,选择在不同的文件中记录登录事件。
如果可以重现FSSO问题,你可以使用不同的工具来跟踪从DC到收集器代理再到FortiGate的登录事件。按照以下步骤操作:
1. 执行登录。
2. 使用Windows命令检查哪个DC收到了登录:echo %logonserver%。
3. 转到该DC,并使用Windows事件查看器查找生成的登录事件。
4. 检查收集器代理日志和活动FSSO用户列表。
5. 检查组过滤器中是否至少有一个用户的组被列为受监控的。
6. 转到FortiGate并检查是否已收到登录事件。
7. 列出活跃的FSSO用户。
8. 从用户工作站生成流量,并验证它是否已添加到FortiGate用户监视器中。
通过单击收集器代理GUl上的显示服务器状态,你可以检查FortiGate和收集器代理之间的连接。该窗口显示所有活动FortiGate设备的序列号。
当FortiGate成功连接到收集器代理时,收集器代理日志会显示这些消息。
此外,你可以在FortiGate上运行FSSO实时调试时确认成功连接。
你还可以通过输入命令 diagnose debug application authd 8256,在 FortiGate 上检查 FSSO 进程调试输出。
当FortiGate和收集器代理之间的TCP会话启动时,收集器代理会向FortiGate发送心跳消息。收集器代理日志和FortiGate实时调试都显示了这种心跳交换。
错误server authentication failed,在FortiGate实时调试中中止可能表明收集器代理和FortiGate之间共享的密码不匹配。
错误connection refused可能表明FortiGate和收集器代理之间的TCP通信被防火墙或其他设备阻止。
错误no route to host可能表明收集器代理的IP地址无法从FortiGate路由到。
如果你在收集器代理GUI上单击显示已监控的DC,则可以检查收集器代理和每个DC之间的通信。该表包括从每个DC接收上次登录事件的时间。
事件查看器是一个显示所有服务器日志的Windows工具。你可以使用它来搜索登录事件日志。
每次登录事件到达时,FortiGate FSSO实时调试都会生成消息。它们包括用户的名称和IP地址,以及工作站名称和用户的组信息。
你可以通过单击显示登录用户来查看登录用户列表。状态为OK表示用户处于活动状态。当用户注销或收集器代理对工作站进行的轮询出现问题时,用户会进入未验证状态。
要从FortiGate获取活动用户列表,请使用命令 diagnose debug authd fsso list。你可以先使用命令diagnose debug authd fsso filter设置过滤器。
CLI命令diagnose debug authd fsso refresh-logons通过要求收集器代理重新发送活动用户列表来刷新FortiGate上的活动FSSO用户列表。
CLI命令diagnose debug authd fsso clear-logons刷新FortiGate上的活跃FSSO用户列表。
CLI命令diagnose debug authd fsso refresh-groups通过请求收集器代理重新发送用户组信息来刷新FortiGate上的用户组信息。
要列出受监控的用户组,请使用命令get user adgrp。
你可以从Windows命令提示符中执行命令。在诊断FSSO问题和分析服务器端的数据时,它们非常有用。
在Windows服务器上,可以使用命令dsquery user -name查询DN。你可以从LDAP服务器的命令提示符运行此命令。
当你使用wmic命令时,它应该返回当前登录到远程工作站的用户的用户名。
你可以使用命令netstat来验证端口8000是否已打开。
在本节中,你将了解FSSO无代理方法以及此模式的特定故障排除命令。
diagnose debug fsso-polling detail命令用来显示FortiGate在每个DC上进行轮询的状态和一些统计信息。
diagnose debug fsso-polling refresh-user命令用来刷新所有活动的信息
在无代理轮询模式下,FortiGate经常轮询所有工作站(就像独立的收集器代理一样),以检查哪些用户仍然登录。你可以在端口445上嗅探此流量。
有一个特定的FortiGate守护进程可以处理轮询模式。它是fssod守护进程。要启用无代理轮询模式实时调试,请使用以下命令:
diagnose debug application fssod -1
上图显示了最常见的实时调试错误和可能的原因。
在本节中,你将了解最常见的FSSO问题。
如果收集器代理没有登录信息,你该怎么办?
● 验证收集器代理是否正在监控所有DC。
● 检查收集器代理是否正在接收来自DC的登录事件。
● 测试用户帐户并检查收集器代理日志。
如果收集器代理有登录信息,但FortiGate没有,该怎么办?
● 检查FortiGate是否已连接到收集器代理。
● 在测试用户帐户时运行实时调试。
如果FSSO用户在FortiGate上被列为活动状态,但无法浏览互联网,你应该首先确认FortiGate上列出了正确的IP地址。还要检查用户的组信息、防火墙策略和收集器代理日志。
如果FortiGate随机阻止某些用户,你应该检查收集器代理服务或任何FortiGate进程是否崩溃。确认FortiGate和收集器代理之间的连接已启动且稳定。尝试重现问题,然后检查收集器代理日志。
DNS解析对FSSO操作至关重要。如果收集器代理无法解析工作站名称,用户将不会被列为活动状态,收集器代理日志将显示上图显示的错误。
FSSO身份验证的另一个常见问题发生在应用程序使用与用户帐户不同的AD帐户生成登录事件时。
在这些情况下,登录事件覆盖了工作站IP地址的用户信息,不同的用户被列为IP地址的活动状态。
收集器代理被编码为忽略匿名帐户和名称以“$”开头的帐户(即系统帐户)的任何登录事件。如果任何应用程序正在使用覆盖用户信息的帐户,解决方案是将该帐户添加到忽略用户列表中。
状态为“未验证”的活跃用户也是一个常见问题。用户注销后,该状态是正常的。然而,对于仍然登录的用户来说,这是不正常的。这意味着从收集器代理到工作站的轮询失败。在这些情况下,检查收集器代理日志。他们提供了更多关于问题原因的信息。
如果用户在IP地址更改后失去互联网接入,你应该怎么做?
当用户从有线网络返回到无线网络时,可能会发生这种情况。当工作站退出休眠模式并从DHCP服务器获取新的IP地址时,也可能发生这种情况。
第一步是检查DNS解析。当用户更改其IP地址时,DNS服务器必须更新新的IP地址信息。如果这不可能,一个变通办法是配置FSSO来宾访问。因此,IP地址已更改的用户仍然可以对一些(可能有限)访问一些网络资源。
对于工作站被分配多个IP地址的情况(例如,一个用于有线网络的地址和另一个用于无线的地址),DNS服务器在解析工作站名称时应该能够返回所有这些IP地址。然后,用户在FSSO活动用户列表中多次列出,每个IP地址出现一次。
上图显示了你在本课中涵盖的目标。
通过掌握本课中涵盖的目标,你了解了FSSO模式、最常见的FSSO问题以及如何对其进行故障排除。