Cumulus Linux 安全指南

Cumulus Linux 是一款功能强大的路由器操作系统,具有安全的默认设置,可随时使用。本文档讨论了额外的安全措施,使您能够进一步保护您的交换机,以满足企业、法规和政府标准。它侧重于三种类型的安全措施

  • 对安全性影响高,对可用性影响低
  • 对安全性和可用性都有中等影响
  • 对安全性影响低,对可用性影响高

并非所有安全措施都是相同的;某些措施可能会破坏用户体验,而不会增加大量的安全性。NVIDIA 建议您专注于具有最大益处和最少缺点的安全措施。然后,随着您的舒适度提高,扩展到包括其他安全缓解措施。

对安全性影响高,对可用性影响低

本节讨论对安全性的影响最大,而对管理和用户体验的影响最小的问题。

安全交换机硬件

保护交换机硬件至关重要,因为具有硬件物理访问权限的攻击者最终可以访问整个设备,从而允许他们更改配置、捕获通过交换机的所有流量,甚至窃取交换机本身。如果硬件中存在安全漏洞,则整个系统都会受到威胁。保护路由器免受各种攻击或错误配置非常重要。

防止拒绝服务

拒绝服务 (DOS) 攻击旨在中断服务或设备的正常使用。为了创建 DOS 攻击,攻击者向目标系统发送大量冗余和不必要的请求,以使其不堪重负,并阻止预期的用户访问服务或妨碍目标系统为应用程序提供服务。DOS 攻击通常以路由器和防火墙为目标。Cumulus Linux 配备了针对这些类型攻击的内置检查系统。启用后,交换机可以智能地分析进入系统的数据包,并丢弃符合特定条件的数据包。

要启用交换机上的自动检查,请在文本编辑器中打开 /etc/cumulus/datapath/traffic.conf 文件,并将 dos_enable 设置的值更改为 true

cumulus@switch:~$ sudo nano /etc/cumulus/datapath/traffic.conf
...
dos_enable = true

重启 switchd 服务以使更改生效。

cumulus@switch:~$ sudo systemctl restart switchd.service

重启 switchd 服务会导致所有网络端口重置,中断网络服务,此外还会重置交换机硬件配置。

要指定要启用的 DOS 检查,请打开 /usr/lib/python2.7/dist-packages/cumulus/__chip_config/bcm/datapath.conf 文件,并通过将相应的值设置为 true 来启用所需的 DOS 检查

cumulus@switch:~$ sudo nano /usr/lib/python2.7/dist-packages/cumulus/__chip_config/bcm/datapath.conf
...
# Enabling/disabling Denial of service (DOS) prevention checks
# To change the default configuration:
# enable/disable the individual DOS checks.
dos.sip_eq_dip = true
dos.smac_eq_dmac = true
dos.tcp_hdr_partial = true
dos.tcp_syn_frag = true
dos.tcp_ports_eq = true
dos.tcp_flags_syn_fin = true
dos.tcp_flags_fup_seq0 = true
dos.tcp_offset1 = true
dos.tcp_ctrl0_seq0 = true
dos.udp_ports_eq = true
dos.icmp_frag = true
dos.icmpv4_length = true
dos.icmpv6_length = true
dos.ipv6_min_frag = true

重启 switchd 服务以使更改生效。

cumulus@switch:~$ sudo systemctl restart switchd.service

重启 switchd 服务会导致所有网络端口重置,中断网络服务,此外还会重置交换机硬件配置。

配置交换机端口

网络攻击者经常通过易受攻击的交换机端口窃取信息。许多具有 VLAN 的公司使用 VLAN 1 而不是选择自定义 VLAN ID,因为 VLAN 1 是大多数网络设备上的默认 VLAN ID。由于此默认设置非常出名,因此它是攻击者查找以获得 VLAN 访问权限的首选位置。

默认情况下,路由器配置可防止 VLAN 跳跃攻击,在这种攻击中,攻击者可以尝试通过使用通用标签或使用动态 VLAN 协商协议来欺骗目标交换机发送来自其他网络的流量。如果成功,攻击者可以访问连接到交换机但攻击者无法访问的其他网络。Cumulus Linux 通过忽略与通用标签耦合的数据包请求来缓解此威胁。

为了保护您的端口,请确保未将接入端口分配给 VLAN 1 或任何未使用的 VLAN ID。以下示例显示了如何将交换机端口 1 到 48 配置为 VLAN 99 的接入端口

cumulus@switch:~$ net add bridge bridge ports swp1-48
cumulus@switch:~$ net add interface swp1-48 bridge access 99
cumulus@switch:~$ net commit

确保没有 trunk 端口使用 VLAN 1,并在向端口分配和从中移除 VLAN 时要仔细考虑。在此示例中,Cumulus Linux 添加 swp3 作为 trunk 端口,并将其分配给 VLAN 100 和 200。

cumulus@switch:~$ net add interface swp3 bridge vids 100,200
cumulus@switch:~$ net commit

自定义控制层面策略

Cumulus Linux 在 /etc/cumulus/acl/policy.d/ 目录中具有默认的控制层面安全策略。您可以在此处查看默认规则的完整列表。

最佳实践规定:

  • 所有 ACL 丢弃都将被记录
  • 配置需要使用 iptables
  • 任何带有 LOG 操作的行都必须紧随带有 DROP 操作的同一行

请务必使用 cl-acltool 将更改应用于默认控制层面策略,以便它们在硬件中正确加速。

以下命令安装 /etc/cumulus/acl/policy.d/ 目录中的所有 ACL 和控制层面策略规则

cumulus@switch:~$ sudo cl-acltool -i

您可以使用以下命令验证 cl-acltool 是否应用了规则

cumulus@switch:~$ sudo cl-acltool -L all

在 NGINX 中禁用不安全的 SSL 和 TLS 协议版本

此过程仅适用于 Cumulus Linux 5.3 及更早版本,这些版本支持 Cumulus HTTP API。Cumulus Linux 5.4 及更高版本支持 NVUE API,并包含正确的 TLS 配置。您可以使用 sudo systemctl stop nginx.servicesudo systemctl disable nginx.service 命令停止并禁用 nginx.service

Cumulus Linux 包含 NGINX 的软件包,NGINX 是一款开源 Web 服务器,通过 HTTPS 支持 Cumulus Linux RESTful HTTP API。默认情况下,NGINX 已启用并在 localhost(127.0.0.1 端口 8080)上侦听。

为了向后兼容,NGINX 本机支持过时且易受攻击的 SSLv3 和 TLSv1 协议。为了防止使用这些协议的潜在漏洞,您必须禁用它们。在文本编辑器中打开 /etc/nginx/nginx.conf 文件,并编辑 ssl_protocols 行以仅允许 TLSv1.1 和 TLSv1.2 协议

cumulus@switch:~$ sudo nano /etc/nginx/nginx.conf
...
ssl_protocols TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE

重启 nginx 服务以使设置生效

cumulus@switch:~$ sudo systemctl restart nginx.service

如果您不使用 Cumulus HTTP API,则可以卸载 NGINX 以完全消除 TLS 攻击媒介

cumulus@switch:~$ sudo apt-get remove python-cumulus-restapi nginx-common
cumulus@switch:~$ sudo apt-get autoremove

管理安全

启用管理 VRF

管理虚拟路由表和转发 (VRF) 将带外管理网络流量与带内数据层面网络分开。管理 VRF 通过将管理路由表与主路由表分离来提高网络安全性。它还可以保护管理网络免受针对主网络的路由基础设施的干扰或攻击,这可能会阻止您管理路由器或交换机。

要利用管理 VRF,请将接口 eth0 连接到带外管理网络。默认情况下,Cumulus Linux 4.0 及更高版本中启用了管理 VRF。对于早期版本的 Cumulus Linux,请使用以下命令配置管理 VRF,并将 eth0 配置为该 VRF 的成员

cumulus@switch:~$ net add vrf mgmt
cumulus@switch:~$ net commit

有关使用管理 VRF 的更多信息,例如在特定 VRF 中运行服务,请参阅 [管理 VRF 文档 >}})。

请务必在每个 VRF 中启用所有网络服务,包括

  • 流量流报告
  • syslog
  • SNMP
  • DNS
  • NTP

自定义管理 ACL

管理访问控制列表 (ACL) 是 Cumulus Linux 的主要用户权限列表。在安装过程中尽快查看和自定义管理 ACL,以帮助防止用户错误或恶意行为,方法是限制管理用户的能力。由于存在许多独特的需求和环境,管理 ACL 是高度可自定义的;重要的是您要更改默认设置。

使用以下准则作为构建管理 ACL 的起点。这些准则引用了示例 IP 地址和端口,这些地址和端口在下一节的防火墙规则中详细介绍。

  • 仅允许管理网络 (192.168.200.0/24) 的入站 SSH。
  • 允许管理网络上 DHCP 客户端的 UDP 端口(UDP 端口 67 和 68)。
  • 仅允许来自特定管理站 (192.168.200.1) 的 SNMP 轮询。
  • 仅允许来自内部网络时间服务器 (192.168.200.1) 的 NTP。
  • 仅允许来自配置的 DNS 服务器 (192.168.200.1) 的 DNS。
  • 允许来自 eth0 上管理网络的 TACACS(TCP 端口 49)。
  • 允许备份接口 eth0 上的 MLAG 流量(UDP 端口 5342)。
  • 仅允许出站 syslog 到已知的日志记录站(UDP 端口 514)。
  • 仅允许出站流到已知的流收集器(UDP 端口 6343)。
  • 允许 NetQ 代理到 NetQ 服务器的出站连接(TCP 端口 31980)。
  • 阻止管理网络上的中转流量(允许进入交换机或从交换机流出)。
  • 允许通过数据层面交换机端口转发到本地子网和从本地子网转发的流量。

创建 iptables 规则以限制两个方向的流量流 — 入站出站。以下示例显示了配置了管理 IP 地址 192.168.200.29 的交换机。

要创建示例 iptables 防火墙规则,请创建 /etc/cumulus/acl/policy.d/50management-acl.rules 文件,然后将以下内容添加到该文件

cumulus@switch:~$ sudo nano /etc/cumulus/acl/policy.d/50management-acl.rules
[iptables]
INGRESS_INTF = swp+
-A INPUT -i eth0 -p udp --dport 68 -j ACCEPT
-A INPUT -i eth0 -s 192.168.200.0/24 -d 192.168.200.29 -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -s 192.168.200.10 -d 192.168.200.29 -p udp --dport 161 -j ACCEPT
-A INPUT -i eth0 -s 192.168.200.1 -d 192.168.200.29 -p udp --dport 123 -j ACCEPT
-A INPUT -i eth0 -s 192.168.200.1 -d 192.168.200.29 -p udp --dport 53 -j ACCEPT
-A INPUT -i eth0 -s 192.168.200.0/24 -d 192.168.200.29 -p udp --dport 5342 -j ACCEPT
-A INPUT -i eth0 -s 192.168.200.0/24 -d 192.168.200.29 -p udp --sport 5342 -j ACCEPT
-A INPUT -i eth0 -j LOG
-A INPUT -i eth0 -j DROP
-A OUTPUT -o eth0 -p udp --dport 67 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.0/24 -p tcp --sport 22 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.0/24 -p udp --sport 5342 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.0/24 -p udp --dport 5342 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.1 -p udp --dport 161 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.1 -p udp --dport 123 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.1 -p udp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.1 -p udp --dport 514 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.1 -p udp --dport 6343 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.200.29 -d 192.168.200.250 -p tcp --dport 31980 -j ACCEPT
-A OUTPUT -o eth0 -j LOG
-A OUTPUT -o eth0 -j DROP
-A INPUT --in-interface $INGRESS_INTF -s 10.0.0.0/8 -d 10.0.0.0/8 -j ACCEPT
-A INPUT --in-interface $INGRESS_INTF -j LOG
-A INPUT --in-interface $INGRESS_INTF -j DROP

此 ACL 在您使用 cl-acltool -i 命令应用它之前不会生效,如上文所述。

用户安全

锁定 root 帐户

保护对 root 帐户的访问对于安全系统至关重要。用户不应具有对 root 帐户的直接访问权限。这有助于防止某人意外地对系统进行通用更改。默认情况下,Cumulus Linux 会锁定 root 帐户。

要验证 root 帐户状态,请运行以下命令

cumulus@switch:~$ sudo passwd -S root

在命令输出中,L(紧跟在单词 root 之后)表示 Cumulus Linux 锁定了该帐户

cumulus@switch:~$ sudo passwd -S root
root L 08/07/2019 0 99999 7 -1

P(紧跟在单词 root 之后)表示该帐户锁定

cumulus@switch:~$ sudo passwd -S root
root P 09/10/2019 0 99999 7 -1

要锁定 root 帐户,请运行以下命令

cumulus@switch:~$ sudo passwd -l root

强化 sudo 访问

sudo 命令允许您在 Linux 中使用超级用户的安全权限执行程序。务必强制执行 sudo 规则以避免滥用。默认情况下,Cumulus Linux 会在您使用 sudo 使用权限执行命令后,缓存 sudo 凭据一段时间。

为了提高安全性,请配置 Cumulus Linux 以要求使用 sudo 命令输入超级用户密码。运行 visudo 命令以编辑默认设置,并将 timestamp_timeout 选项更改为 0

cumulus@switch:~$ sudo visudo
...
Defaults        env_reset,timestamp_timeout=0

确保 /etc/sudoers 文件或 /etc/sudoers.d 目录中的文件中没有出现 NOPASSWD!authenticate

cumulus@switch:~$  sudo grep NOPASSWD /etc/sudoers
cumulus@switch:~$  sudo grep NOPASSWD /etc/sudoers.d/*
cumulus@switch:~$  sudo grep \!authenticate /etc/sudoers.d/*
cumulus@switch:~$  sudo grep \!authenticate /etc/sudoers

限制用户会话

限制用户可以同时运行的会话数量非常重要,以避免单个用户或帐户进行矛盾的更改。最佳实践是将限制设置为 10。

/etc/security/limits.conf 文件的顶部添加以下行

cumulus@switch:~$ sudo nano /etc/security/limits.conf
hard maxlogins 10

将以下行添加到 /etc/profile.d/autologout.sh 脚本以将不活动超时设置为 10 分钟(600 秒)。如果该文件不存在,请创建该文件

cumulus@switch:~$ sudo nano /etc/profile.d/autologout.sh
TMOUT=600
readonly TMOUT
export TMOUT

将以下行添加到 /etc/profile 文件以设置控制台超时

cumulus@switch:~$ sudo nano /etc/profile.d/autologout.sh
export TMOUT=600

远程访问安全

安全外壳 (SSH) 是一种用于通过不安全网络进行安全远程登录和其他安全网络服务的协议。它最常用于允许管理员安全地访问远程系统,例如 Linux。

默认情况下,Cumulus Linux 包括以下 SSH 安全设置

  • SSH 协议版本 2 已开启。
  • 不允许空密码。
  • 不允许用户环境。
  • 已启用打印上次登录。
  • 已启用严格模式。
  • 已启用用户权限分离。
  • 交互用户的连接加密。

SSH 公钥文件受权限模式 0644 保护

cumulus@switch:~$ ls -l /etc/ssh/*.pub
-rw-r--r-- 1 root root 602 Apr 29  2017 /etc/ssh/ssh_host_dsa_key.pub
-rw-r--r-- 1 root root 174 Apr 29  2017 /etc/ssh/ssh_host_ecdsa_key.pub
-rw-r--r-- 1 root root  94 Apr 29  2017 /etc/ssh/ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 394 Apr 29  2017 /etc/ssh/ssh_host_rsa_key.pub

验证 /etc/ssh 下的 SSH 私有主机密钥文件是否设置为仅对您的用户帐户具有读/写权限

cumulus@switch:~$ ls -alL /etc/ssh/ssh_host*key
-rw------- 1 root root  668 Apr 29  2017 /etc/ssh/ssh_host_dsa_key
-rw------- 1 root root  227 Apr 29  2017 /etc/ssh/ssh_host_ecdsa_key
-rw------- 1 root root  399 Apr 29  2017 /etc/ssh/ssh_host_ed25519_key
-rw------- 1 root root 1679 Apr 29  2017 /etc/ssh/ssh_host_rsa_key

为了进一步保护 SSH,请考虑在 /etc/ssh/sshd_config 文件中启用或查看以下选项

  • 确保 SSH 仅在 eth0 或管理 VRF 接口上侦听。配置 ListenAddress 选项。
  • 禁用 root SSH 登录访问。配置 PermitRootLogin no 选项。
  • 查看默认 SSH 加密策略。
  • 查看已启用的密码。
  • 查看消息身份验证码。
  • 查看 HostKeyAlgorithms。
  • 查看 KexAlgorithms。
  • 启用 SSH 会话超时。配置 ClientAliveIntervalClientAliveCountMax 选项。
  • 使用基于密钥的身份验证。
  • 禁用 SSH 压缩。

有关 sshd 中选项的更多信息,请阅读 man 手册页

安全网络协议

启用 NTP 身份验证

网络时间协议 (NTP) 将计算机客户端和/或服务器之间的时间与另一个时间源或服务器同步。时间同步对于身份验证和日志管理至关重要。为了缓解涉及伪造时间同步的攻击,请将您的 Cumulus Linux 交换机连接到经过身份验证的 NTP 服务器。

将身份验证密钥添加到 /etc/ntp.keys 文件

cumulus@switch:~$ sudo nano /etc/ntp.keys
#
# PLEASE DO NOT USE THE DEFAULT VALUES HERE.
#
#65535  M  akey
#1      M  pass
1  M  cumulus123

将密钥添加到文件后,至少添加两个服务器及其关联的可信密钥到 /etc/ntp.conf 文件

cumulus@switch:~$ sudo nano /etc/ntp.conf
server 192.168.0.254 key 1
keys /etc/ntp.keys
trustedkey 1
controlkey 1
requestkey 1

要配置时间同步至少每 24 小时发生一次,请在 /etc/ntp.conf 文件中添加或更正以下行。将以下行中的 [source] 替换为权威时间源

cumulus@switch:~$ sudo nano /etc/ntp.conf
maxpoll = 17
server [source] iburst

重启 NTP 以使更改生效

cumulus@switch:~$ sudo systemctl restart ntp@mgmt.service

安全路由协议

开放最短路径优先 (OSPF) 和边界网关协议 (BGP) 是动态路由协议,允许路由器相互协商以确定通过网络发送流量的最佳路径。在此协商期间,路由器会了解连接到其他路由器的网络。然后,路由器使用此信息来确定在网络上何处发送流量。

如果不加以保护,攻击者可能会利用 OSPF 或 BGP 等动态路由协议将数据包重新路由到恶意系统而不是其预期目的地。为了帮助缓解此威胁,请在这些协议上启用身份验证。

配置 OSPF 身份验证需要两个 NCLU 命令:一个用于添加密钥,第二个用于在接口上启用身份验证(命令示例中为 swp1)

cumulus@switch:~$ net add interface swp1 ospf message-digest-key 1 md5 thisisthekey
cumulus@switch:~$ net add interface swp1 ospf authentication message-digest
cumulus@switch:~$ net commit

有关更多信息,请阅读 Cumulus Linux 用户指南的 OSPF 章节

要为现有 BGP 邻居配置 BGP 身份验证,您只需要一个密码

cumulus@switch:~$ net add bgp neighbor 1.1.1.1 password BGPPWD
cumulus@switch:~$ net commit

有关更多信息,请阅读 Cumulus Linux 用户指南的 BGP 章节

删除文件传输服务

小型文件传输协议 (TFTP) 是文件传输协议 (FTP) 的简单且未经身份验证的替代方案,通常用于更新网络设备的配置。本质上,TFTP 不包含任何对用户进行身份验证的方法。如果在您的组织内不强制使用 TFTP,请禁用或卸载它。

要卸载 TFTP 服务

cumulus@switch:~$ sudo apt-get remove atftp atftpd
cumulus@switch:~$ sudo apt-get remove tftpd-hpa

要卸载 FTP 服务

cumulus@switch:~$ sudo apt-get remove vsftpd

要验证 TFTP 和 FTP 软件包的移除情况

cumulus@switch:~$ sudo dpkg -l | grep *ftp*

对安全性中等影响,对可用性中等影响

本节讨论对安全性和管理及用户体验具有相似影响的项目。

硬件安全

配置 802.1X

802.1X 是一项流行的技术,因为它对物理连接到交换机的设备进行身份验证。它还可以在这些设备通过身份验证后为其分配不同级别的网络访问权限。此技术有许多用例,并且每种配置差异很大。有关更多详细信息,请参阅 Cumulus Linux 用户指南中的 802.1X 接口章节。

以下示例是构建的基础。这是一个基本的 802.1X 配置

  1. 运行以下命令

    cumulus@switch:~$ net add dot1x radius server-ip 192.168.200.254 vrf mgmt
    cumulus@switch:~$ net add dot1x radius client-source-ip 192.168.200.29
    cumulus@switch:~$ net add dot1x radius shared-secret supersecret
    cumulus@switch:~$ net add dot1x send-eap-request-id
    cumulus@switch:~$ net add dot1x dynamic-vlan
    cumulus@switch:~$ net commit
    
  2. 在文本编辑器中打开 hostapd.conf 文件,并将文件中的最后两个值从 1 更改为 0

    cumulus@switch:~$ sudo nano hostapd.conf
    ...
    radius_das_require_event_timestamp=0
    radius_das_require_message_authenticator=0
    
  3. 重启 hostapd.service

    cumulus@switch:~$ sudo systemctl restart hostapd.service
    
  4. 在交换机端口上启用 802.1X(在此示例中为 swp1 到 swp4)

    cumulus@switch:~$ net add interface swp1-4 dot1x
    
  5. 配置 802.1X 重新身份验证周期

    cumulus@switch:~$ net add dot1x eap-reauth-period 3600
    
  6. 配置最大站点数

    cumulus@switch:~$ net add dot1x max-number-stations 1
    cumulus@switch:~$ net commit
    

禁用 USB 端口

Cumulus Linux 交换机带有多个 USB 端口,作为外部硬件的一部分。USB 驱动器在许多行业中都很常见,因此那些想要危害交换机的人很容易访问。虽然禁用 USB 端口是任何交换机的最佳实践,但如果 Cumulus Linux 设置在公共区域,则尤其重要。

管理安全

设置密码策略

用户密码是闯入任何系统的最简单方法。黑客窃取密码后,他们可以访问用户拥有的任何内容,并且可以在不引起太多怀疑的情况下获取信息。因此,许多公司都强制执行特定的用户密码要求。

Cumulus Linux 的默认密码要求是强大的加密哈希 (SHA-512)。/etc/pam.d 文件中不存在带有 nullok 的帐户。

密码配置应与 NIST 密码复杂性指南保持一致,但公司可以为用户设置自己的个性化要求。

删除不必要的服务

仍然安装的不必要服务可能会导致打开的套接字成为目标攻击媒介。这些服务可能会被意外滥用,并可能导致故障。重要的是卸载任何未使用的程序或服务。

启用紧急用户帐户

如果您的组织依赖于 TACACS 或 RADIUS 等中央身份验证系统,请考虑在身份验证系统不可用时启用紧急管理帐户以访问 Cumulus Linux。创建紧急管理员帐户时,将其有效期设置为永不过期。

运行以下命令以将紧急管理员帐户的密码策略设置为永不过期。将 [Emergency_Administrator] 替换为正确的紧急管理员帐户。您可以使用标准用户创建工作流程创建紧急管理员用户帐户。

cumulus@switch:~$ sudo chage -I -1 -M 99999 [Emergency_Administrator]

配置登录横幅

为了突出显示交换机上实施的安全性和限制,请为所有用户启用登录横幅,以便他们在登录时看到您的消息。正确披露登录时的安全策略可以帮助排除对不当使用设备的法律辩护。请咨询您组织中的法律代表,以获取登录横幅消息的正确措辞。

要为所有 SSH 登录会话启用登录横幅

  1. 编辑 /etc/issue.net 文件,并添加经您组织安全策略批准的登录横幅文本

    cumulus@switch:~$ sudo nano /etc/issue.net
    You are accessing an Information System (IS) that is provided for authorized use only.
    
  2. 编辑 /etc/ssh/sshd_config 文件以启用登录横幅

    cumulus@switch:~$ sudo nano /etc/ssh/sshd_config
    ...
    Banner /etc/issue.net
    
  3. 重启 ssh 服务

    cumulus@switch:~$ sudo systemctl restart ssh@mgmt.service
    

配置系统审计

配置您的系统以记录管理事件。定期审核这些日志,以确保您的系统安全策略按预期工作,并检测任何未经授权尝试访问您系统的行为。审核系统在排除问题时也很有帮助。通过查看特定的日志事件,您可以识别一致的问题。

默认情况下,Cumulus Linux 启用了许多审计日志。确保所需的总体审计日志记录级别符合您的组织安全策略,以及其跟踪系统性能信息的需求。

要查看默认配置

cumulus@switch:~$ sudo grep log_file /etc/audit/auditd.conf
log_file = /var/log/audit/audit.log
max_log_file = 6
max_log_file_action = ROTATE

要查看审计日志的大小

cumulus@switch:~$ df /var/log/audit/ -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda4       5.8G  931M  4.6G  17% /var/log

安全网络协议

防止源路由

源路由是一种常见的安全威胁,它允许攻击者向您的网络发送数据包,然后使用返回的信息闯入您的网络。如果您的组织没有有意使用源路由,请禁用它。

要禁用 IPv4 源路由数据包,请使用以下命令设置当前行为

cumulus@switch:~$ sudo sysctl -w net.ipv4.conf.default.accept_source_route=0

检查默认(启动)设置

cumulus@switch:~$ sudo sysctl net.ipv4.conf.default.accept_source_route

如果默认值不是 0,请在 /etc/sysctl.conf 文件中添加或更新以下行,以便设置在重启后仍然存在

cumulus@switch:~$ sudo nano /etc/sysctl.conf
...
net.ipv4.conf.default.accept_source_route=0

或者,您可以在 /etc/sysctl.d 目录中创建一个新文件,然后将 net.ipv4.conf.default.accept_source_route = 0 行添加到该文件。

防止 ICMP 重定向

Internet 控制消息协议 (ICMP) 是一种很好的故障排除工具,但如果您的路由器自动接受 ICMP 重定向消息,则可能会构成安全威胁。攻击者可以利用这一点,通过发送无法识别的重定向来捕获您的流量或创建 DOS 攻击。

要防止系统接受 IPv4 ICMP 重定向消息,请使用以下命令设置运行时配置。运行时配置在您重启交换机时不会持久存在。

cumulus@switch:~$ sudo sysctl -w net.ipv4.conf.default.accept_redirects=0

检查默认(启动)设置

cumulus@switch:~$ sudo sysctl net.ipv4.conf.default.accept_redirects

如果默认值不是 0,您可以使设置在重启后仍然存在。在 /etc/sysctl.conf 文件中添加或更新以下行

cumulus@switch:~$ sudo nano /etc/sysctl.conf
...
net.ipv4.conf.default.accept_redirects = 0

或者,您可以在 /etc/sysctl.d 目录中创建一个新文件,并添加 net.ipv4.conf.default.accept_redirects =0 行。

要防止系统发送 IPv4 ICMP 重定向消息,请使用以下命令设置运行时配置。运行时配置在您重启交换机时不会持久存在。

cumulus@switch:~$ sudo sysctl -w net.ipv4.conf.default.send_redirects=0
cumulus@switch:~$ sudo sysctl -w net.ipv4.conf.all.send_redirects=0

检查默认(启动)设置

cumulus@switch:~$ sudo sysctl net.ipv4.conf.default.send_redirects
net.ipv4.conf.default.send_redirects = 1

cumulus@switch:~$ sudo sysctl net.ipv4.conf.all.send_redirects
net.ipv4.conf.all.send_redirects = 1

如果默认值不是 0,您可以使设置在重启后仍然存在。在 /etc/sysctl.conf 文件中添加或更新以下行

cumulus@switch:~$ sudo nano /etc/sysctl.conf
...
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0

或者,您可以在 /etc/sysctl.d 目录中创建一个新文件,并添加 net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.all.send_redirects = 0 行。

对安全性影响低,对可用性影响高

本节讨论对安全性影响低但有可能严重破坏用户体验的项目。

密码保护引导加载程序

引导加载程序是一个程序,它在交换机运行或重启时启动操作系统。向引导加载程序添加密码不会显着提高系统的安全性,但可能会导致意外中断。

考虑以下示例。如果您将交换机配置为具有引导加载程序密码,然后在交换机上远程工作并进行需要重启的更改,则当系统开始启动时,它会停止并等待引导加载程序密码,除非您在物理上位于交换机处,否则您无法输入该密码。交换机不会快速重启,而是保持离线状态,直到有人可以在交换机上输入引导加载程序密码并允许它启动操作系统并将交换机恢复联机状态。

Debian 软件包

最容易配置的服务之一是 Debian 软件包管理器,它控制安装在交换机上的软件和更新。例如,您可能会认为在新的更新完成后配置软件包管理器以删除所有过时的软件包是一个好主意。虽然它可以释放更多磁盘空间,但如果软件故障导致系统故障或停止通信,它也会阻止您快速回滚到以前的版本。