在本节课中,你将学习如何在FortiGate的防火墙策略上使用身份验证。
这节课你将学习上图显示的主题。
通过演示防火墙身份验证方法的能力,你将能够描述和识别FortiGate上支持的防火墙身份验证方法。
传统防火墙通过验证源IP地址和设备来授予网络访问权限。这是不够的,可能会造成安全风险,因为防火墙无法确定谁正在使用它授予访问权的设备。
FortiGate包括用户认证和用户组认证。因此,你可以跨多个设备跟踪个人。
当访问由用户或用户组控制时,用户必须通过输入有效凭证(例如用户名和密码)进行身份验证。在FortiGate验证用户后,FortiGate应用防火墙策略和配置文件来允许或拒绝对特定网络资源的访问。
FortiGate支持多种防火墙认证方法:
● 本地密码认证
● 基于服务器的密码验证(也称为远程密码验证)
● 双因子认证
这是一个在现有方法之上启用的身份验证系统,如果不首先配置其他方法之一,则无法启用该系统。它需要一些你知道的东西,比如密码,以及一些你拥有的东西,比如令牌或证书。
在本节课中,你将详细了解防火墙身份验证的每种方法。
最简单的认证方法是本地密码认证。用户帐号信息(用户名和密码)保存在FortiGate设备本地。此方法适用于单个FortiGate安装。
本地帐户是在用户定义页面上创建的,向导将引导你完成整个过程。使用本地密码认证时,用户类型选择本地用户,并创建用户名和密码。如果需要,还可以向帐户中添加电子邮件和短信信息,启用双因子认证,并将用户添加到预先配置的用户组中。
创建用户后,可以将用户(或任何预先配置的用户组,其中用户是成员)添加到防火墙策略中,以便进行身份验证。本节课将学习用户组和防火墙策略。
采用基于服务器的密码认证时,由远程认证服务器对用户进行认证。当多个FortiGate设备需要对相同的用户或用户组进行身份验证时,或者当将FortiGate添加到已经包含身份验证服务器的网络中时,这种方法是可取的。
当你使用远程认证服务器对用户进行身份验证时,FortiGate将用户输入的凭据发送到远程认证服务器。远程认证服务器通过指示凭据是否有效来响应。如果有效,FortiGate会查询它的配置来处理流量。注意,评估用户凭证的是远程认证服务器,而不是FortiGate。
当使用基于服务器的密码认证方法时,FortiGate不会在本地存储所有(或在某些配置的情况下,不存储任何)用户信息。
FortiGate支持许多远程身份验证服务器,包括POP3、RADIUS、LDAP和TACACS+。
POP3是唯一需要电子邮件地址作为登录凭证的服务器。所有其他远程认证服务器都使用用户名。一些POP3服务器要求完整的电子邮件和域名(user@example.com),其他只要求后缀,还有一些接受两种格式。这个要求是由服务器的配置决定的,而不是FortiGate上的设置。只能通过命令行配置POP3鉴权。注意,你可以将LDAP配置为使用电子邮件而不是用户名进行验证。
可以通过以下两种方式配置FortiGate使用外部认证服务器:
● 在FortiGate上创建用户帐户。使用这种方法,你必须选择远程认证服务器类型(RADIUS、TACACS+或LDAP),将FortiGate指向预先配置的远程认证服务器,并将用户添加到适当的组。当你希望向远程用户添加双因子认证时,通常会这样做。记住,POP3只能通过CLl进行配置。
● 将远程认证服务器加入用户组。该方法需要创建用户组,并将预先配置的远程服务器添加到用户组中。因此,任何在远程认证服务器上拥有帐户的用户都可以进行身份验证。如果使用其他类型的远程服务器(例如LDAP服务器)作为远程认证服务器,则可以控制对LDAP服务器上定义的特定LDAP组的访问。
与本地密码认证类似,然后必须将预配置的用户组(用户是其中的成员)添加到防火墙策略中才能进行身份验证。你将在本课稍后学习用户组和防火墙策略。
轻量级目录访问协议(LDAP)是一种用于访问和维护分布式目录信息服务的应用协议。
LDAP协议用于维护认证数据,包括部门、人员、组、密码、电子邮件地址和打印机。LDAP由一个数据表示方案、一组已定义的操作和一个请求-响应网络组成。
LDAP协议包括客户端可以请求的许多操作,例如搜索、比较以及添加或删除条目。绑定是LDAP服务器对用户进行认证的操作。如果用户成功通过身份验证,绑定将允许该用户基于该用户的权限访问LDAP服务器。
在LDAP服务器页面中,可以配置FortiGate指向LDAP服务器,进行基于服务器的密码验证。配置很大程度上取决于服务器的模式和安全设置。Windows Active Directory (AD)非常常见。
Common Name标识符设置是用于查找用户名的属性名。有些模式允许使用属性userid。AD通常使用sAMAccountName或cn,但也可以使用其他。
Distinguished Name设置标识用户所在树的顶部,通常是dc值;但是,它可以是一个特定的容器或ou。你必须使用正确的X.500或LDAP格式。
绑定类型取决于LDAP服务器的安全设置。如果你正在跨多个域进行搜索,并且需要授权执行LDAP查询的用户(例如,LDAP管理员)的凭据,则必须使用设置常规(以指定常规绑定)。
如果你希望在FortiGate和远程LDAP服务器之间建立安全连接,请启用安全连接,并包括LDAP服务器协议(LDAPS或STARTTLS)以及验证服务器证书的CA证书。LDAPS使用636端口进行通信。
测试连接性按钮仅测试与LDAP服务器的连接是否成功。要测试用户的凭据是否可以成功验证,可以使用测试用户认证信息按钮或使用CLI。
RADIUS与LDAP有很大不同,因为不需要考虑目录树结构。RADIUS是提供认证、授权和记帐(AAA)服务的标准协议。
当用户进行认证时,客户端(FortiGate)向RADIUS服务器发送ACCESS-REQUEST报文。来自服务器的回复是以下之一:
● ACCESS-ACCEPT,这意味着用户凭证是正常的
● ACCESS-REJECT,这意味着凭证是错误的
● ACCESS-CHALLENGE,这意味着服务器正在请求辅助密码ID、令牌或证书。这通常是使用双因子认证时来自服务器的应答。
并非所有RADIUS客户端都支持RADIUS挑战方法。
通过RADIUS服务器页面,可以配置FortiGate指向RADIUS服务器,进行基于服务器的密码认证。
主服务器IP/名称是RADIUS服务器的IP地址或FQDN。
主服务器秘钥设置是在RADIUS服务器上设置的秘钥,以便允许从此客户端进行远程查询。在主服务器发生故障时,可以定义备份服务器(具有单独的秘钥)。请注意,FortiGate必须作为RADIUS服务器的客户端在RADIUS服务器上列出,否则服务器将不会回复由FortiGate完成的查询。
认证方法是指RADIUS服务器支持的认证协议。可选参数包括chap、pap、mschap和mschap2。如果选择默认,FortiGate将依次使用pap、mschap2和chap。
与LDAP配置不同,上图所示示例中使用的测试连接性按钮可以测试实际的用户凭据,但是,与LDAP一样,你也可以使用CLl进行测试。
在每个用户组中包含选项将RADIUS服务器和可以对其进行身份验证的所有用户添加到在FortiGate上创建的每个用户组中。因此,你应该仅在非常特定的场景中启用此选项(例如,只有管理员可以根据RADIUS服务器进行身份验证,并且策略从限制最小到限制最大)。
在CLI界面下使用diagnostic test authserver命令测试用户的证书是否可以认证成功。在对任何防火墙策略实施身份验证之前,你希望确保身份验证成功。
来自服务器的响应报告成功、失败和组成员详细信息。
测试RADIUS与测试LDAP非常相似。在CLI界面下使用diagnostic test authserver命令测试用户的证书是否可以认证成功。同样,你应该这样做以确保在任何防火墙策略上实现身份验证之前成功进行身份验证。
与LDAP一样,它根据服务器的响应报告成功、失败和组成员详细信息。更深层次的故障排除通常需要RADIUS服务器访问。
注意,Fortinet有一个特定于供应商的属性(VSA)字典来标识Fortinet专有的RADIUS属性。这个功能允许你扩展RADIUS的基本功能。Fortinet VSA字典可从Fortinet知识库(kb.fortinet.com)获取。
传统的用户身份验证需要你的用户名加上一些你知道的东西,比如密码。这种传统身份验证方法的缺点是,如果有人获得了你的用户名,他们只需要你的密码就可以窃取你的帐户。此外,由于人们倾向于在多个账户上使用相同的密码(一些网站比其他网站有更多的安全漏洞),无论密码强度如何,账户都很容易受到攻击。
另一方面,双因子认证需要一些你知道的东西,比如密码,以及一些你拥有的东西,比如令牌或证书。由于这种方法不太重视经常易受攻击的密码,因此对攻击者来说,破坏帐户变得更加复杂。在FortiGate上,用户和管理员帐户都可以使用双重身份验证。将用户(或用户所属的用户组)添加到防火墙策略中进行身份验证。注意,不能对显式代理使用双因子认证。
你可以使用一次性密码(OTP)作为第二个因素。OTP比静态密码更安全,因为密码定期更改,有效期很短。一旦你使用了OTP,你就不能再使用它。所以,即使被拦截,也毫无用处。FortiGate可以通过令牌(例如FortiToken 200(硬件令牌)和FortiToken Mobile(软件令牌)),以及通过电子邮件或短信传递OTP。通过电子邮件或短信发送OTP时,用户帐户必须包含用户联系信息。
通过电子邮件和短信传递的FortiToken和OTP是基于时间的。例如,FortiToken每60秒(默认情况下)生成一个新的6位密码。建议配置NTP服务器,保证NTP服务器之间保持同步。FortiToken Mobile Push允许用户接受来自FortiToken移动应用程序的授权请求,而不需要输入额外的代码。
Token使用特定的算法来生成OTP。算法包括:
● 种子:一个唯一的、随机生成的数字,不会随着时间而改变
● 时间:从一个精确的内部时钟获得
种子和时间都要经过一个算法,该算法在token上生成OTP(或密码)。密码的生命周期很短,通常以秒为单位(FortiToken 200为60秒,其他RSA密钥生成器可能更长或更短)。一旦生命周期结束,一个新的密码就会生成。
当使用token进行双因子认证时,用户必须首先使用静态密码和token生成的密码登录。验证服务器(FortiGate)接收用户的凭据并首先验证静态密码。然后,验证服务器继续验证密码。它通过使用种子和系统时间(与令牌上的时间同步)重新生成相同的密码,并将其与从用户接收到的密码进行比较。如果静态密码有效,且OTP匹配,则用户认证成功。同样,token和验证服务器必须使用相同的种子并具有同步的系统时钟。因此,在FortiGate上正确配置日期和时间,或将其链接到NTP服务器(推荐)是至关重要的。
你可以在FortiToken页面中添加FortiToken 200或FortiToken Mobile到FortiGate。
硬件token有一个序列号,为FortiGate提供关于初始种子值的详细信息。如果要添加几个硬件token,可以导入一个文本文件,其中每行列出一个序列号。
软件token需要激活码。请注意,每个FortiGate(和FortiGate VM)提供两个免费的FortiToken Mobile激活。你必须从Fortinet购买任何额外token。
同一个FortiToken不能在多个FortiGate上注册。如果希望在多个FortiGate设备上使用相同的FortiToken进行身份验证,则必须使用中央验证服务器,例如FortiAuthenticator。在这种情况下,FortiToken被注册并分配给FortiAuthenticator上的用户,FortiGate使用FortiAuthenticator作为其验证服务器。
在向FortiGate注册了FortiToken设备之后,可以将它们分配给用户作为他们的第二因素身份验证方法。要分配token,请编辑(或创建)用户帐户并选择启用双因子认证。在Token下拉列表中,选择要分配的注册token。
你了解的所有认证方法(本地密码认证、基于服务器的认证和双因子认证)都使用主动认证。主动认证意味着在授予访问权限之前,会提示用户手动输入其登录凭据。
但并非所有用户都以相同的方式进行身份验证。可以透明地授予一些用户访问权限,因为用户信息是在不要求用户输入登录凭证的情况下确定的。这就是所谓的被动认证。被动认证使用基于服务器的密码认证的单点登录方法:FSSO、RSSO和NTLM。
答案:A
答案:B
答案:B
干得漂亮!你已经了解了防火墙身份验证的基础知识。现在,你将了解用户组。
通过演示用户组方面的能力,你将能够配置用户组以有效地管理防火墙策略。
FortiGate允许管理员为用户分配组。通常,组被用来更有效地管理具有某种共享关系的个人。你可能希望按业务领域(如财务或HR)或按员工类型(如承包商或客人)对员工进行分组。
创建用户组后,可以将用户组添加到防火墙策略中。这允许你控制对网络资源的访问,因为策略决策是在整个组上做出的。在FortiGate设备上可以定义本地用户组和远端用户组。用户组类型有四种:
● 防火墙
● 来宾
● Fortinet单点登录(FSSO)
● RADIUS单点登录(RSSO)
FortiGate上的防火墙用户组不需要匹配外部服务器(如LDAP服务器)上可能已经存在的任何类型的组。防火墙用户组的存在只是为了方便防火墙策略的配置。
大多数身份验证类型都可以选择基于单个用户(而不仅仅是用户组)做出决策。
来宾用户组与防火墙用户组不同,因为它们只包含临时来宾用户帐户(整个帐户,而不仅仅是密码)。Guest用户组是无线网络中最常用的用户组。客户帐户在预定时间后过期。
管理员可以手动创建来宾帐户,也可以使用随机生成的用户ID和密码一次性创建多个客户帐户。这减少了管理员处理大型事件的工作量。创建后,你可以将帐户添加到来宾用户组,并将该组与防火墙策略关联。
你可以创建仅有权创建和管理来宾用户帐户的来宾管理管理员。
你可以在用户组页面配置用户组。必须指定用户组类型,并将用户加入到组中。
根据所创建的组,需要不同的配置。例如,对于防火墙用户组,其成员可以包括本地用户、PKI对端用户和来自一个或多个远程认证服务器的用户。如果你的远程认证服务器是LDAP服务器,你可以选择要添加到LDAP服务器上定义的用户组的特定LDAP组。注意,你也可以选择RADIUS组,但这需要在你的RADIUS服务器和FortiGate上进行额外的配置(请参阅kb.fortinet.com上的Fortinet知识库)。
如果你希望以相同的方式对待特定用户,例如,如果你希望为整个培训部门提供对相同网络资源的访问,则用户组可以简化配置。如果要区别对待所有用户,则需要将所有用户分别添加到防火墙策略中。
答案:A
答案:B
干得漂亮!你已经了解了用户组的基本知识。现在,你将了解如何使用防火墙策略进行身份验证。
通过演示防火墙策略的能力,你将能够配置防火墙策略来对特定用户和用户组强制进行身份验证。
防火墙策略由访问规则和检查规则(分隔的指令集)组成,这些规则告诉FortiGate如何处理被过滤的接口上的流量。
当用户进行首次连接尝试后,FortiGate会检查防火墙策略,以确定是否接受或拒绝通信会话。然而,防火墙策略还包括许多其他指令,例如处理身份验证的指令。为此,你可以使用防火墙策略的源。防火墙策略的源必须包含源地址(IP地址),也可以包含用户和用户组。通过这种方式,防火墙策略的源定义中包含的任何用户或用户组都可以成功进行身份验证。
用户和用户组对象可以包括本地防火墙帐户、外部服务器帐户、PKI用户和Fortinet单点登录用户。
防火墙策略还检查服务,以便传输指定的协议或协议组。在用户认证成功之前,不允许任何业务(DNS除外)通过防火墙策略。DNS通常被HTTP使用,这样人们就可以使用域名作为网站,而不是IP地址。允许使用DNS,因为它是一种基本协议,最初很可能需要它来查看正确的身份验证协议流量。主机名解析几乎总是任何协议的必要条件。但是,DNS服务仍然必须在策略中定义为允许的,以便它能够通过。
在上图所示的示例中,策略序列1 (Full_Access)允许用户在成功验证之前使用外部DNS服务器来解析主机名。如果身份验证不成功,也允许使用DNS,因为用户需要能够再次尝试身份验证。任何包含DNS的服务都将以相同的方式运行,如默认的ALL服务。
HTTP服务是TCP端口号80,不包括DNS (UDP端口号53)。
除了DNS服务,防火墙策略还需要指定允许的协议,如HTTP、HTTPS、FTP、Telnet等。如果启用了身份验证的防火墙策略不允许用于获取用户凭据的至少一种受支持的协议,则用户将无法进行身份验证。
所有使用主动认证的身份验证方法(本地密码认证、基于服务器的密码认证和双因子认证)都需要协议。主动认证根据以下方式提示用户输入用户凭据:
● 流量的协议
● 防火墙策略
另一方面,被动认证在幕后确定用户身份,并且不要求策略中允许任何特定的服务。
在上图所示的示例中,假设使用了主动认证,来自LOCAL_SUBNET的任何初始流量都不会匹配策略序列17 (Guest)。策略序列17同时查找IP和用户以及用户组信息(分别为LOCAL_SUBNET和Guest-group),由于用户尚未进行身份验证,因此流量的用户组方面不匹配。由于策略匹配不完整,FortiGate将继续在序列列表中搜索,以查看是否有完整的匹配。
接下来,FortiGate评估策略序列18以查看流量是否匹配。因为同样的原因,它不会匹配18。
最后,FortiGate评估策略序列19,看看流量是否匹配。它匹配所有的标准,因此流量被允许而不需要验证。
当你只使用活动认证时,如果所有可能匹配源IP的策略都启用了身份验证,那么用户将收到登录提示(假设他们使用可接受的登录协议)。换句话说,如果策略序列19也启用了身份验证,用户将收到登录提示。
如果使用被动认证,并且可以成功获取用户详细信息,那么来自LOCAL_SUBNET的用户属于Guest-group的流量将应用到策略序列17,即使策略序列19没有启用身份验证。
如果同时使用主动和被动认证,并且FortiGate可以通过被动认证识别用户的凭据,那么无论任何防火墙策略的顺序如何,用户都不会收到登录提示。这是因为当FortiGate可以被动地识别用户时,它就不需要提示用户输入登录凭据。当你将主动和被动认证方法结合使用时,主动认证是被用作备份,仅在被动认证失败时使用。
如前所述,有三种不同的方法可以更改主动认证行为。如果你有一个活动身份验证防火墙策略,后面跟着一个没有启用身份验证的直通策略,那么所有流量都将使用该直通策略。这意味着不要求用户进行身份验证。默认情况下,所有流量都通过catch-all策略,不进行认证。你可以通过在所有防火墙策略上启用身份验证来改变这种行为。启用认证功能后,所有系统在流量通过出接口前都必须进行认证。
或者,仅在CLI中,你可以将auth-on-demand选项更改为always。如果防火墙策略启用了活动身份验证,这将指示FortiGate触发身份验证请求。在这种情况下,流量将被允许通过,直到认证成功。
如果希望所有用户都连接到特定的接口,那么最好在接口级别启用专属门户身份验证。这样,所有设备在被允许访问任何资源之前都必须进行身份验证。
认证超时对于安全性很有用。它最大限度地降低了有人使用合法身份验证用户的IP的风险。它还确保用户不进行身份验证,然后无限期地保留在内存中。如果用户永远停留在内存中,最终会导致内存耗尽。
超时行为有三个选项:
● 空闲:查看来自主机IP的报文。如果在配置的时间内主机设备无报文产生,则注销用户。
● 硬:时间是一个绝对值。无论用户的行为如何,只要用户通过认证,定时器就开始计时,并在配置的值之后到期。
● 新建会话:即使流量是在现有的通信通道上产生的,如果在配置的超时值内主机设备没有通过防火墙新建会话,认证将过期。
选择最适合你的环境的认证需求的超时类型。
你可以使用仪表板>用户&设备>防火墙用户页面监控通过防火墙策略进行身份验证的用户。显示用户、用户组、时长、IP地址、流量、认证方式等信息。
它不包括管理员,因为他们不通过允许流量的防火墙策略进行身份验证。他们直接登录了FortiGate。
此页面还允许你同时断开一个用户或多个用户的连接。
答案:A
答案:B
答案:B
恭喜你!你已经完成了这节课。现在,你将回顾你在这一课中所学到的目标。
通过掌握本课所涵盖的目标,你学习了如何在FortiGate的防火墙策略上使用身份验证。