译者 | 晶颜
审校 | 重楼
随着全球网络威胁形势变得越来越复杂和危险,传统的基于边界的安全模型无法有效地保护关键基础设施。鉴于Linux在服务器和关键系统中的广泛应用,组织需要一个更健壮的安全框架来应对不断演变的威胁形势。以“永不信任,始终验证”为操作原则的零信任安全模型为Linux环境提供了高级保护。
本文研究了零信任安全的原则,并提供了如何配置Linux系统以符合这些原则的实用指导。我们将介绍零信任的几个方面,包括身份验证、微分段和持续监控。
理解零信任安全模型
零信任安全模型代表了传统安全方法的范式转变。零信任不再假设网络内的一切都是安全的,而是假设网络内外都存在威胁。因此,无论其来源如何,每个访问请求都将得到验证。让我们来探索零信任的一些核心原则。
持续的验证
每个访问请求都使用多种因素进行验证,包括设备标识、用户标识、设备位置和行为模式。
最低权限访问
用户和设备只被授予最小的访问权限来执行其任务。该方法通常使用特权访问工作站来实现,其中管理员仅使用一台计算机执行管理任务。任务完成后,管理员将注销。在特权访问工作站环境中,工作站从不用于管理任务,服务器与管理机器和工作站是分开的。
微分段
微分段将网络划分为更小的段,以限制已入侵网络的攻击者的横向移动。
全面的监控
监控可见源,如网络流量、用户和机器日志(包括访问请求),对于检测异常和威胁至关重要。它使安全团队能够迅速对威胁作出反应。
为Linux系统配置零信任模型
在Linux环境中实现零信任模型通常包括以下步骤:
- 正确管理SSH(secure shell)密钥
- 实现用户身份验证和基于角色的访问控制
- 设置和管理微分段和网络隔离
1.正确管理SSH密钥
SSH是通过远程访问管理Linux系统的基本工具。正确管理SSH密钥对于零信任安全至关重要。管理SSH密钥的最佳实践包括:
- 关闭密码身份验证:基于密码的身份验证容易受到暴力破解和字典攻击。相反地,应该实现基于SSH密钥的身份验证。如果没有安装sshd,可以使用以下命令安装:
sudo apt install openssh-server
#打开SSH配置文件:
sudo nano /etc/ssh/sshd_config
#禁用密码认证:
PasswordAuthentication no
#重启SSH服务:
sudo systemctl restart sshd
图1:如何在/etc/目录中找到ssh_config文件
图2:如何通过修改Nano中的ssh_config文件来关闭密码身份验证。使用Ctrl + O将数据写入磁盘,并使用Ctrl + X退出Nano
图3:如何重启sshd服务并使用systemctl检查其状态
- 使用强且唯一的SSH密钥:为每个用户生成并使用强SSH密钥对。确保所有SSH密钥都是唯一的。
#生成SSH密钥对:
sudo ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
图4:如何生成4096位SSH密钥对
- 部署SSH密钥管理工具:使用SSH -keygen等工具管理SSH密钥,实现密钥自动轮换。
- 限制SSH访问:限制SSH访问单个IP地址。使用跳板主机(jump host)来最小化攻击面。
#限制SSH访问特定的IP地址:
sudo nano /etc/hosts.allow
sshd: 192.168.1.0/24
sudo nano /etc/hosts.deny
sshd: ALL
图5:打开并修改主机。允许配置文件访问某个IP地址范围
图6:打开并修改hosts.deny配置文件,拒绝所有不属于允许IP地址范围的其他SSH连接
2.实现用户身份验证和基于角色的访问控制
您可以将多因素身份验证(MFA)和基于角色的访问控制(RBAC)作为零信任策略的一部分来实现。
- 多因素身份验证:MFA为Linux系统增加了一层安全性。您可以使用Google Authenticator或Duo Security等工具实现MFA。使用以下命令安装Google Authenticator:
#安装Google Authenticator:
sudo apt-get install libpam-google-authenticator
图7:如何使用APT安装Google Authenticator
#为SSH配置MFA:
sudo nano /etc/pam.d/sshd
auth required pam_google_authenticator.so
图8:如何修改sshd文件来为SSH配置MFA
- 基于角色的访问控制:实现RBAC,确保用户只访问必要的资源。您可以使用sudo和PolicyKit等工具来完成此操作。
#为指定角色创建新的sudoers文件:
sudo visudo -f /etc/sudoers.d/developer
#授予角色特定的权限:
developer ALL=(ALL) /usr/bin/git, /usr/bin/docker
图9:在/etc目录中创建一个新的sudoers文件,并修改该文件以授予该角色特定的权限
3.设置和管理微分段和网络隔离
微分段和网络隔离是零信任体系结构的重要组成部分。如果攻击者获得了对网络的初始访问权限,它们有助于限制攻击者的横向移动。
- 为网络分段配置iptables:iptables是Linux中配置网络包过滤规则的强大工具。您可以配置iptables以允许来自特定IP范围的传入SSH流量。
#允许在端口22(SSH)上来自特定IP范围的传入流量:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
#阻止端口22上的所有其他传入流量:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
图10:iptables允许来自特定IP地址范围的SSH流量
- 实现VLANS:通过VLANS(虚拟局域网)对网络流量进行逻辑划分。Open vSwitch等工具可以帮助管理Linux环境中的VLANS。
#创建新的VLAN:
sudo ovs-vsctl add-br br0
sudo ovs-vsctl add-port br0 vlan10 tag=10 -- set interface vlan10 type=internal
- 使用防火墙和安全组:像UFW(Uncomplicated Firewall)这样的工具可以简化防火墙的管理。
#启用UFW并允许特定流量:
sudo ufw enable
sudo ufw allow from 192.168.1.0/24 to any port 22
图11:如何启用UFW,检查UFW服务的状态,并允许特定IP地址范围内的SSH流量通过端口22,同时阻止端口22上的所有其他流量
- 实现容器安全性:像Kubernetes这样的容器编排工具可以在容器化环境中管理微分段。然后,您可以通过网络策略来控制不同pod之间的流量。
#在yaml中实现网络策略来控制不同pod之间的流量:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {}
policyTypes:
-Ingress
-Egress
Linux的持续监控和审计实践
持续的监视和审计实践对于检测和响应安全事件至关重要。下面是一些工具和实践指导:
- 使用syslog进行集中日志记录:可以在Linux系统中使用syslog进行集中日志记录。rsyslog、syslog-ng和ELK堆栈(Elasticsearch、Logstash和Kibana)等工具可以帮助进行日志聚合和分析。日志为安全团队提供了关键的可见性。
#安装和配置rsyslog:
sudo apt install rsyslog
sudo nano /etc/rsyslog.conf
#转发日志到中心服务器:
*.* @logserver:514
图12:修改rsyslog.conf文件,将日志转发到中心服务器
- Auditd:Auditd是一个功能强大的工具,用于监视和记录系统调用和其他用户活动。通过配置审计规则,可以对系统中的特定事件进行跟踪。
#安装Auditd:
Sudo apt install auditd
#配置审计规则:
Sudo nano /etc/audit/audit.rules
#监控/etc/passwd修改的规则示例:
-w /etc/passwd -p wa -k passwd changes
#重启Auditd:
Sudo systemctl restart auditd
图13:配置auditd.rules将更改记录到/etc/passwd文件中
- 入侵检测系统(IDS):部署OSSEC、Snort或Suricata等IDS工具来检测网络上和主机级别的可疑活动。
#使用wget下载并安装OSSEC:
wget -U ossec <a href="https://github.com/ossec/ossec-hids/archive/master.zip"><strong>https://github.com/ossec/ossec-hids/archive/master.zip</strong></a>
unzip master.zip
cd ossec-hids-master
sudo ./install.sh
- 文件完整性监视(FIM):通过FIM检测对关键系统文件的未经授权的修改。您可以使用诸如Tripwire和AIDE之类的开源工具来实现FIM。
#安装AIDE:
sudo apt install aide
#初始化AIDE数据库:
sudo aideinit
#检查更改:
sudo aide --check
- 安全信息/事件和事件监控/管理(SIEM):SIEM技术有助于日志分析。它们允许对多来源的日志进行聚合、关联和分析。优秀的开源和免费增值SIEM工具包括Splunk、ELK堆栈和IBM的QRadar。
示例:配置Logstash将日志转发给Elasticsearch
Input {
File {
path => “/var/log/syslog”
start_position = > “beginning”
}
}
结语
在Linux环境中实现零信任安全模型可以显著提高对复杂网络威胁的防护能力。通过坚持零信任原则——例如持续验证、最小权限访问、特权访问工作站、微分段和监视——您可以创建一个有弹性且安全的环境,从而有效地应对复杂且不断演变的威胁环境。
原文标题:How To Implement Zero-Trust Security in Linux Environments,作者:Grant Knoetze