在本课中,你将学习如何在FortiGate的防火墙策略上使用认证。
完成本节后,你应该能够实现上图显示的目标。
通过展示防火墙认证方法的能力,你将能够描述和识别FortiGate上支持的防火墙认证方法。
传统的防火墙通过验证源IP地址和设备来授予网络访问权限。这是不够的,可能会构成安全风险,因为防火墙无法确定谁在使用它授予访问权限的设备。
FortiGate包括用户和用户组的认证。因此,你可以跨多个设备跟踪个人。
当访问由用户或用户组控制时,用户必须通过输入有效的凭据(如用户名和密码)进行身份验证。在FortiGate验证用户后,FortiGate应用防火墙策略和配置文件来允许或拒绝访问特定网络资源。
FortiGate支持多种防火墙认证方法:
● 本地密码认证
● 基于服务器的密码认证(也称为远程密码认证)
● 双因子认证
这是一个在现有方法之上启用的认证系统——如果不首先配置其他方法之一,就无法启用它。它需要你知道的东西,如密码,以及你拥有的东西,如令牌或证书。
在本课中,你将详细了解每种防火墙认证方法。
最简单的认证方法是本地密码认证。用户帐户信息(用户名和密码)存储在FortiGate设备上。这种方法适用于单个FortiGate安装。
本地帐户在用户定义页面上创建,向导将带你完成该过程。对于本地密码认证,请选择本地用户作为用户类型,并创建用户名和密码。如果需要,你还可以将电子邮件和短信信息添加到帐户中,启用双因子认证,并将用户添加到预配置的用户组中。
创建用户后,可以将用户(或该用户所属的任何预先配置的用户组)添加到防火墙策略中,以便进行认证。本课将介绍用户组和防火墙策略。
当使用基于服务器的密码认证时,远程身份验证服务器对用户进行认证。当多个FortiGate设备需要对相同的用户或用户组进行认证时,或者当将FortiGate添加到已经包含认证服务器的网络时,此方法是可取的。
当你使用远程认证服务器对用户进行认证时,FortiGate会将用户输入的凭据发送到远程认证服务器。远程认证服务器通过指示凭据是否有效来响应。如果有效,FortiGate会咨询其配置来处理流量。请注意,是远程认证服务器(而不是FortiGate)来评估用户凭据。
当使用基于服务器的密码认证方法时,FortiGate不会在本地存储所有(或在某些配置的情况下,任何)用户信息。
你可以通过以下两种方式将FortiGate配置为使用外部认证服务器:
● 在FortiGate上创建用户帐户。使用此方法,你必须选择远程认证服务器类型(RADIUS、TACACS+或LDAP),将FortiGate指向预配置的远程认证服务器,并将用户添加到适当的组中。当你想向远程用户添加双因子认证时,通常会这样做。请记住,POP3只能通过CLI进行配置。
● 将远程认证服务器添加到用户组中。使用此方法,你必须创建一个用户组,并将预配置的远程服务器添加到组中。因此,任何在远程认证服务器上拥有帐户的用户都可以进行身份验证。如果你正在使用其他类型的远程服务器,例如LDAP服务器作为远程认证服务器,你可以控制对LDAP服务器上定义的特定LDAP组的访问。
与本地密码认证类似,你必须将预配置的用户组(其中用户是成员)添加到防火墙策略中才能进行认证。在本课的后面,你将了解用户组和防火墙策略。
轻量级目录访问协议(LDAP)是一种用于访问和维护分布式目录信息服务的应用程序协议。
LDAP协议用于维护认证数据,其中可能包括部门、人员、人员组、密码、电子邮件地址和打印机。LDAP由数据表示方案、一组定义的操作以及请求和响应网络组成。
LDAP协议包括客户端可以请求的一些操作,例如搜索、比较以及添加或删除条目。绑定是LDAP服务器对用户进行认证的操作。如果用户成功验证,绑定允许用户根据该用户的权限访问LDAP服务器。
请注意,重要的是要了解端口389上的LDAP不安全,因为它以明文方式发送密码。强烈建议使用更安全的LDAPS。
LDAP结构类似于每个分支中包含条目(对象)的树。LDAP服务器层次结构通常反映其所服务的组织的层次结构。根代表组织本身,通常定义为域组件(DC)和DNS域,如abc.com(因为名称包含一个点,所以它被写成由逗号分隔的两部分:dc=abc,dc=com)。你可以根据需要添加其他层次结构,例如组织单位(ou)、用户组(cn)、用户(uid)等。
上图显示的示例是LDAP层次结构,其中所有用户帐户条目都位于组织单位(OU)级别,略低于DC。
请求身份验证时,LDAP客户端(如FortiGate设备)必须指定可以找到用户帐户记录的层次结构部分。这被称为区分名称(DN)。在上图的示例中,DN是ou=people,dc=abc,dc=com。
认证请求还必须指定特定的用户帐户条目。虽然这通常被称为通用名称(CN),但你使用的标识符不一定是CN。在计算机网络上,使用UID(该人的用户ID)是合适的,因为这是他们在登录时将提供的信息。
在LDAP服务器页面上,你可以将FortiGate配置为指向LDAP服务器进行基于服务器的密码认证。配置在很大程度上取决于服务器的模式和安全设置。Windows Active Directory(AD)非常常见。
通用名称标识符设置是你用于查找用户名的属性名称。一些模式允许你使用属性用户RID。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(按此顺序)。.
测试连接性按钮仅测试与RADIUS服务器的连接是否成功。要测试用户的凭据是否可以成功进行身份验证,您可以使用测试用户认证信息按钮或CLI。
在每个用户组中包含选项将RADIUS服务器和所有可以对其进行身份验证的用户添加到在FortiGate上创建的每个用户组中。因此,你应该仅在非常特定的情况下启用此选项(例如,只有管理员才能对RADIUS服务器进行身份验证,并且策略从限制最小到限制最小)。
使用CLI上的 diagnose test authserver 命令来测试用户的凭据是否可以成功进行认证。在对任何防火墙策略实施认证之前,你需要确保认证成功。
服务器的响应报告成功、失败和组成员资格的详细信息。
测试RADIUS与测试LDAP大致相同。使用CLI上的 diagnose test authserver 命令来测试用户的凭据是否可以成功进行身份验证。同样,在对任何防火墙策略实施认证之前,你应该这样做以确保认证成功。
与LDAP一样,它报告成功、失败和组成员详细信息,具体取决于服务器的响应。更深入的故障排除通常需要RADIUS服务器访问。
请注意,Fortinet有一个特定于供应商的属性(VSA)字典来识别Fortinet专有的RADIUS属性。此功能允许你扩展RADIU的基本功能。
传统用户认证需要你的用户名以及你知道的东西,例如密码。这种传统认证方法的弱点在于,如果有人获得你的用户名,他们只需要你的密码即可破坏你的帐户。此外,由于人们倾向于在多个帐户上使用相同的密码(一些网站比其他网站有更多的安全漏洞),无论密码强度如何,帐户都容易受到攻击。
另一方面,双因子认证需要你知道的东西,如密码,以及你拥有的东西,如令牌或证书。由于这种方法不太重视通常易受攻击的密码,因此对攻击者来说,泄露帐户变得更加复杂。你可以使用用户和管理员帐户在FortiGate上使用双因子认证。用户(或用户所属的用户组)被添加到防火墙策略中以进行认证。请注意,你不能通过显式代理使用双因子认证。
你可以使用一次性密码(OTP)作为第二个因素。OTP比静态密码更安全,因为密码定期更改,并且仅在短时间内有效。一旦你使用了OTP,你就不能再使用它了。因此,即使它被拦截,也毫无用处。FortiGate可以通过令牌(如FortiToken 200(硬件令牌)和FortiToken Mobile(软件令牌)以及电子邮件或短信)交付OTP。要通过电子邮件或短信发送OTP,用户帐户必须包含用户联系信息。
通过电子邮件和短信发送的FortiTokens和OTP是基于时间的。例如,FortiTokens每60秒(默认)生成一个新的六位数密码。强烈建议使用NTP服务器,以确保OTP保持同步。FortiToken Mobile Push允许用户接受来自FortiToken移动应用程序的授权请求,而无需输入额外的代码。
令牌使用特定的算法来生成OTP。该算法包括:
● 种子:一个独特的、随机生成的数字,不会随着时间的推移而改变
● 时间:从准确的内部时钟获得
种子和时间都通过在令牌上生成OTP(或密码)的算法。密码的寿命很短,通常以秒为单位(FortiToken 200为60秒,其他RSA密钥生成器可能或多或少)。一旦寿命结束,就会生成一个新的密码。
当使用令牌进行双因子认证时,用户必须首先使用静态密码登录,然后使用令牌生成的密码。验证服务器(FortiGate)接收用户的凭据,并首先验证静态密码。然后,验证服务器继续验证密码。它通过使用种子和系统时间(与令牌上的密码同步)重新生成相同的密码,并将其与从用户那里收到的密码进行比较。如果静态密码有效,并且OTP匹配,则用户已成功验证。同样,令牌和验证服务器都必须使用相同的种子,并具有同步的系统时钟。因此,至关重要的是,你必须在FortiGate上正确配置日期和时间,或将其链接到NTP服务器(建议这样做)。
你可以在FortiTokens页面上将FortiToken 200或FortiToken Mobile添加到FortiGate。
硬令牌有一个序列号,该序列号向FortiGate提供初始种子值的详细信息。如果您有几个硬令牌要添加,像可以导入一个文本文件,其中每行列出一个序列号。
软令牌需要激活码。请注意,每个FortiGate(和FortiGate VM)都提供两个免费的FortiToken移动激活。你必须从Fortinet购买任何额外的代币。
你不能在多个FortiGate上注册相同的FortiToken。如果您想在多个FortiGate设备上使用相同的FortiToken进行认证,则必须使用中央验证服务器,例如FortiAuthenticator。在这种情况下,FortiTokens在FortiAuthenticator上注册并分配给用户,FortiGate使用FortiAuthenticator作为其验证服务器。
在你使用FortiGate注册FortiToken设备后,你可以将它们分配给用户作为其第二因素认证方法。要分配令牌,请编辑(或创建)用户帐户,然后选择启用双因子认证。在令牌字段中,选择要分配的注册令牌。
你学到的所有认证方法(本地密码认证、基于服务器的认证和双因子认证)使用主动认证。主动认证意味着在授予访问权限之前,系统会提示用户手动输入登录凭据。
但并非所有用户都以相同的方式进行认证。一些用户可以透明地授予访问权限,因为用户信息是在不要求用户输入登录凭据的情况下确定的。这被称为被动认证。被动认证使用基于服务器的密码认证的单点登录方法进行:FSSO、RSSO和NTLM。
防火墙策略由访问和检查规则(分隔的指令集)组成,这些规则告诉FortiGate如何处理其过滤流量的接口上的流量。在用户进行初始连接尝试后,FortiGate会检查防火墙策略,以确定是接受还是拒绝通信会话。然而,防火墙策略还包括许多其他指令,例如处理认证的指令。你可以为此目的使用防火墙策略的源。防火墙策略的源必须包括源地址(IP地址),但你也可以包括用户和用户组。通过这种方式,防火墙策略源定义中包含的任何用户或用户组都可以成功进行认证。
用户和用户组对象可以由本地防火墙帐户、外部服务器帐户、PKI用户和FSSO用户组成。
除了DNS服务外,防火墙策略还必须指定允许的协议,如HTTP、HTTPS、FTP和Telnet。如果启用认证的防火墙策略不允许至少一个用于获取用户凭据的受支持协议,则用户将无法进行认证。
所有使用主动认证的认证方法(本地密码认证、基于服务器的密码认证和双因子认证)都需要协议。主动认证会根据以下内容提示用户输入用户凭据:
● 流量的协议
● 防火墙策略
另一方面,被动认证决定了幕后的用户身份,并且不需要在策略中允许任何特定服务。
防火墙策略还会检查服务,以传输命名的协议或协议组。在成功进行用户认证之前,不允许通过防火墙策略提供任何服务(DNS除外)。DNS通常由HTTP使用,因此人们可以使用网站的域名,而不是他们的IP地址。允许DNS,因为它是一个基本协议,最有可能首先需要看到适当的身份验证协议流量。主机名解析几乎总是任何协议的要求。然而,DNS服务仍然必须在策略中定义,才能通过。
在上图显示的示例中,策略ID 1(Full_Access)允许用户在成功认证之前使用外部DNS服务器来解析主机名。如果认证失败,也允许DNS,因为用户需要能够再次尝试认证。任何包含DNS的服务都将以相同的方式运行,就像默认的ALL服务一样。
HTTP服务是TCP端口80,不包括DNS(UDP端口53)。
在上图显示的示例中,假设使用了主动认证,来自LOCAL_SUBNET的任何初始流量将不匹配策略ID 17(来宾)。策略ID 17查找IP和用户以及用户组信息(分别为LOCAL_SUBNET和来宾组),由于用户尚未进行认证,因此流量的用户组方面不匹配。由于策略匹配不完整,FortiGate继续在ID列表中搜索,看看是否有完全匹配。
接下来,FortiGate评估策略ID 18,以查看流量是否匹配。它不会因为与17不匹配的原因相同。
最后,FortiGate评估策略ID 19,以查看流量是否匹配。它符合所有标准,因此允许流量,无需认证。
当你仅使用主动认证时,如果所有可能匹配源IP的策略都启用了认证,那么用户将收到登录提示(假设他们使用可接受的登录协议)。换句话说,如果策略ID 19也启用了认证,用户将收到登录提示。
如果你使用被动认证,并且它可以成功获取用户详细信息,那么来自LOCAL_SUBNET与属于客人组的用户的流量将适用于策略ID 17,即使策略ID 19没有启用认证。
如果你同时使用主动和被动认证,并且FortiGate可以通过被动认证识别用户的凭据,则无论任何防火墙策略的顺序如何,用户都不会收到登录提示。这是因为当FortiGate可以被动识别用户是谁时,它不需要提示用户输入登录凭据。当你结合主动和被动认证方法时,主动认证旨在用作备份,仅在被动认证失败时使用。
如前所述,有三种不同的方法可以改变主动认证行为。如果你有一个主动认证防火墙策略,然后是未启用认证的直通策略,那么所有流量都将使用直通策略。这意味着用户不会被要求进行认证。默认情况下,所有流量都会通过包罗万象的策略,而无需进行认证。你可以通过在所有防火墙策略上启用认证来更改此行为。当你启用认证时,在将流量放置在出口接口上之前,所有系统都必须进行认证。
或者,你只能在CLI上更改按需授权选项。有两种选择:
● Implicitly:默认选项。如果策略失败,它将不会触发认证。
● Always:为启用了主动认证的策略触发认证提示,无论失败策略如何。在这种情况下,在认证成功之前,不允许流量。
如果你想让所有用户连接到特定的接口,那么最好在接口级别启用强制门户认证。这样,所有设备在被允许访问任何资源之前都必须进行认证。
认证超时对安全目的很有用。它最大限度地降低了某人使用合法身份验证用户的IP的风险。它还确保用户不会进行认证,然后无限期地留在内存中。如果用户永远留在内存中,最终会导致内存耗尽。
超时行为有三种选择:
● idle-timeout:这查看来自主机IP的数据包。如果主机设备在配置的时间范围内没有生成数据包,则用户将注销。
● hard-timeout:时间是绝对价值。无论用户的行为如何,计时器在用户认证后立即启动,并在配置值后过期。
● new-session:即使在现有通信通道上生成流量,如果在配置的超时值内没有通过防火墙从主机设备创建新会话,则认证也会过期。
选择最适合你环境认证需求的超时类型。
你可以使用仪表板>防火墙用户监控器页面监控通过防火墙策略进行认证的用户。它显示用户、用户组、持续时间、IP地址、流量和认证方法。
它不包括管理员,因为他们没有通过允许流量的防火墙策略进行认证。他们直接在FortiGate上登录。
此页面还允许你同时断开用户或多个用户的连接。
答案:B
答案:B
答案:B
上图显示了你在本课中涵盖的目标。
通过掌握本课中涵盖的目标,你学会了如何在FortiGate的防火墙策略上使用认证。