示例:瞻博网络设备上的控制管理访问
我们的内容测试团队已验证并更新了此示例。
此示例说明如何根据一组特定的允许 IP 地址限制对瞻博网络设备的管理访问。此类功能通常称为访问控制列表 (ACL),在 Junos OS 中作为无状态防火墙过滤器实现。
要求
连接到管理网络的瞻博网络设备。为了帮助验证配置,至少应该有一个可以访问管理网络的其他设备,该设备可以启动与被测设备 (DUT) 的 SSH 或 Telnet 连接。在配置此示例之前,除了基本设备初始化(管理接口和相关静态路由、系统服务、用户登录帐户等)之外,不需要特殊配置。
概述
您可以配置防火墙过滤器来限制可以管理设备的 IP 地址。此防火墙过滤器必须包含一个术语,用于拒绝除允许管理设备的 IP 地址之外的所有流量。您必须将防火墙过滤器应用于环路接口 (lo0),以确保仅过滤管理流量,即发送到设备本身的流量。
示例拓扑
图 1 显示了此示例的拓扑。R1 设备充当分配了 172.16.0.0/24 子网的管理网络的默认网关。应用限制对 R2 设备的管理访问权限的过滤器,使其成为此示例中的 DUT。远程工作站有权管理 DUT,并已分配 10.0.0.1/32 地址。
在此示例中,您:
配置名为 manager-ip的前缀列表。此列表定义允许管理设备的 IP 地址集。在此示例中,列表包括管理子网本身 (172.16.0.0/24) 和授权远程用户的 IP 地址 (10.0.0.1/32)。
配置一个防火墙过滤器limit-mgmt-access,以拒绝除前缀列表中定义的manager-ip特定地址集之外的所有源地址。这可确保只有前缀列表中列出的 IP 地址才能管理设备。
将 limit-mgmt-access 过滤器应用于环路接口。每当寻址到本地设备的数据包到达任何接口时,环路接口都会应用过滤器 limit-mgmt-access ,将管理访问限制为仅允许的地址。
配置 IP 地址列表以限制对设备的管理访问
程序
CLI 快速配置
要快速配置此示例,请根据需要编辑以下命令,并将其粘贴到层次结构级别的 R2 设备的 [edit]
CLI 中。为完整起见,配置包括用于配置 SSH(适用于非用户)和 Telnet 系统服务的命令。它还提供管理接口和相关静态路由的配置。如果您的设备已配置此功能,则不需要这些命令。
Telnet 不支持 瞻博网络设备上的 root 登录。此示例中未配置 root 用户的 SSH 登录。您的设备应将非 root 用户配置为允许远程登录。或者,您可以将参数添加到 root-login allow
语句中 system services ssh
以允许 root 用户 使用 SSH 登录。
请务必发出 from commit
配置模式以激活更改。
应用限制设备访问的筛选器时,请考虑使用 commit confirmed
. 如果您无法在指定时间内发出另一个提交,此选项会自动回滚配置。
set system services ssh set system services telnet set interfaces fxp0 unit 0 family inet address 172.16.0.253/24 set interfaces lo0 unit 0 family inet address 192.168.255.2/32 set routing-options static route 0.0.0.0/0 next-hop 172.16.0.254 no-readvertise set policy-options prefix-list manager-ip 172.16.0.0/24 set policy-options prefix-list manager-ip 10.0.0.1/32 set firewall filter limit-mgmt-access term block_non_manager from source-address 0.0.0.0/0 set firewall filter limit-mgmt-access term block_non_manager from source-prefix-list manager-ip except set firewall filter limit-mgmt-access term block_non_manager from protocol tcp set firewall filter limit-mgmt-access term block_non_manager from destination-port ssh set firewall filter limit-mgmt-access term block_non_manager from destination-port telnet set firewall filter limit-mgmt-access term block_non_manager then log set firewall filter limit-mgmt-access term block_non_manager then discard set firewall filter limit-mgmt-access term accept_everything_else then accept set interfaces lo0 unit 0 family inet filter input limit-mgmt-access
分步过程
以下步骤要求您在配置层次结构中导航各个级别。有关操作说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。
配置管理和环路接口,并确保已启用 Telnet 和 SSH 系统服务。
[edit] user@R2# set interfaces fxp0 unit 0 family inet address 172.16.0.253/24 user@R2# set interfaces lo0 unit 0 family inet address 192.168.255.2/32 user@R2# set routing-options static route 0.0.0.0/0 next-hop 172.16.0.254 no-readvertise user@R2# set system services ssh user@R2# set system services telnet
在前缀列表中定义允许的主机地址集。此列表包括管理子网和单个授权远程管理站的前缀。
[edit policy-options] user@R2# set prefix-list manager-ip 172.16.0.0/24 user@R2# set prefix-list manager-ip 10.0.0.1/32
防火墙过滤器中引用前缀列表。使用前缀列表可以轻松更新允许访问设备的地址。这是因为只需要更新前缀列表。添加或删除允许的前缀时,不需要对防火墙过滤器本身进行编辑。
配置防火墙过滤器以拒绝来自除前缀列表中定义的 IP 地址之外 的所有 IP 地址的 Telnet 和 SSH 流量。
[edit firewall filter limit-mgmt-access] user@R2# set term block_non_manager from source-address 0.0.0.0/0 user@R2# set term block_non_manager from source-prefix-list manager-ip except user@R2# set term block_non_manager from protocol tcp user@R2# set term block_non_manager from destination-port ssh user@R2# set term block_non_manager from destination-port telnet user@R2# set term block_non_manager then discard
请注意动作修饰符的使用
except
。第一个术语在所有可能的源地址上匹配。下一个术语反转指定前缀列表中那些源地址的匹配项。结果是,仅当流量来自列表中的地址时,才会接受发往指定协议和端口的管理流量。从所有其他源前缀到相同协议和端口组合的流量将被丢弃。在此示例中,添加了日志记录操作以帮助进行筛选器调试和验证。配置默认期限以接受所有其他流量。这可确保其他服务和协议(例如 ping、BGP 或 OSPF)不受过滤器的影响。
提示:示例筛选器在设计上是宽松的。如果它明确接受先前过滤器术语未拒绝或丢弃的所有流量,则它可能表示安全威胁。您可以通过显式列出应接受的所有协议和服务来配置更强的安全过滤器,并以“拒绝所有”术语(隐式或显式)结束过滤器,以过滤所有其他流量。限制性筛选器的缺点是每次添加或删除受支持的服务时都必须对其进行编辑。
[edit firewall filter imit-mgmt-access] user@R2# set term accept_everything_else then accept
将无状态防火墙过滤器作为输入过滤器应用于环路接口。在此示例中,不过滤从本地设备发送的流量。
[edit interfaces lo0 unit 0 ] user@R2# set family inet filter input limit-mgmt-access
结果
通过从配置模式输入以下命令 show configuration
来确认您的工作。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
user@R2# show policy-options prefix-list manager-ip { 172.16.0.0/24; 10.0.0.1/32; }
user@R2# show firewall filter limit-mgmt-access { term block_non_manager { from { source-address { 0.0.0.0/0; } source-prefix-list { manager-ip except; } protocol tcp; destination-port [ ssh telnet ]; } then { log; discard; } } term accept_everything_else { then accept; } }
user@R2# show interfaces fxp0 { unit 0 { family inet { address 172.16.0.253/24; } } } lo0 { unit 0 { family inet { filter { input limit-mgmt-access; } address 192.168.255.2/32; } } }
user@R2# show routing-options static { route 0.0.0.0/0 { next-hop 172.16.0.254; no-readvertise; } }
user@R2# show system services ssh; telnet;
对工作感到满意后,请从配置模式进入 commit
。
应用限制设备访问的筛选器时,请考虑使用 commit confirmed
. 如果您无法在指定时间内发出另一个提交,此选项会自动回滚配置。
验证无状态防火墙过滤器
确认用于限制管理访问的防火墙过滤器工作正常。
验证接受的数据包
目的
验证当流量来自 172.16.0.0/24 子网或来自与远程管理站关联的 10.0.0.1 主机前缀时,防火墙过滤器是否正确允许 SSH 和 Telnet。
操作
清除路由器或交换机上的防火墙日志。
user@R2> clear firewall log
从 连接到 172.16.0.0/24 子网的主机(如 R1 设备)
ssh 172.16.0.253
使用命令启动与 DUT 的连接。默认情况下,R1 设备从用于到达目标的出口接口获取流量。因此,测试流量来自 R1 的 172.16.0.254 地址。此流量与过滤器术语不匹配, block_non_manager 因为except
与引用的前缀列表匹配的地址的操作修饰符。此流量与过滤器术语匹配, accept_everything_else 导致其被接受注:如果这是在这些设备之间的第一次 SSH 登录 user ,系统将提示您保存 SSH 主机密钥。
user@R1>ssh user@172.16.0.253 Password: Last login: Tue Sep 8 09:46:58 2020 from 10.107.199.39 --- JUNOS 20.2R1.10 Kernel 64-bit XEN JNPR-11.0-20200608.0016468_buil user@R2>
在 R2 设备上注销 CLI 以关闭 SSH 会话。
user@R2> exit logout Connection to 172.16.0.253 closed. user@R1>
注:使用命令重复
telnet
此步骤。Telnet 连接应该会成功。show firewall log
在 R2 设备上使用命令验证 R2 设备上的防火墙日志缓冲区是否不包含源地址在 172.16.0.0/24 子网中的条目。这意味着此流量的数据包标头信息 不会 记录在防火墙过滤器日志中。此示例仅记录与术语匹配 block_non_manager 的流量。user@R2> show firewall log user@R2>
意义
输出确认当来自管理网络时,SSH(和 Telnet)连接被接受。它还显示不会记录与术语不匹配 block_non_manager 的数据包。如果 SSH 或 Telnet 流量由分配了 10.0.0.1 地址的远程管理站生成,则预期会产生相同的结果。
验证记录和拒绝的数据包
目的
验证防火墙过滤器是否正确丢弃 不是 源自前缀列表中某个前缀 manager-ip 的 SSH 和 Telnet 流量。
操作
生成源自前缀列表中未指定的 manager-ip 地址的 SSH 流量。您可以从 R1 设备的环路地址获取会话,以模拟未经授权的 IP。或者,从未连接到管理子网且尚未分配 IP 地址 10.0.0.1 的任何远程设备启动连接。应丢弃此 SSH 会话的数据包,并将数据包标头信息记录在防火墙过滤器日志缓冲区中。
注:您不应期望任何错误消息或回复。连接尝试将超时。这是因为示例筛选器使用
discard
操作而不是reject
操作。user@unauthorized-remote-host ssh user@172.16.0.253 ssh: connect to host 172.16.0.253 port 22: Connection timed out
输出显示 SSH 连接不成功。这确认过滤器在从不允许的源地址发送时会正确阻止 SSH 流量。对于由任何未经授权的 IP 源地址启动的 Telnet 会话,预期结果相同。
使用该
show firewall log
命令验证 R2 设备上的防火墙日志缓冲区现在是否包含具有非授权源地址的数据包的条目。user@R2> show firewall log Log : Time Filter Action Interface Protocol Src Addr Dest Addr 11:35:46 limit-mgmt-access D fxp0.0 TCP 10.0.0.119 172.16.0.253 11:35:14 limit-mgmt-access D fxp0.0 TCP 10.0.0.119 172.16.0.253 11:34:58 limit-mgmt-access D fxp0.0 TCP 10.0.0.119 172.16.0.253
意义
输出确认来自 10.0.0.119 源地址的流量与过滤器中的 limit-mgmt-access 日志记录术语匹配。回想一下,在此示例中,只有 block_non_manager 术语具有日志操作。该 Action
列显示 以 D
指示数据包已被丢弃。过滤流量的入口接口被确认为设备上的管理端口 fxp0.0
。还会显示已过滤数据包的传输协议 TCP
和 IP 地址。请注意,此流量的源地址 10.0.0.119
未列在 manager-ip 前缀列表中。
对于此示例,这些结果确认防火墙过滤器工作正常。