随着全球网络威胁形势变得越来越复杂和危险,传统的基于边界的安全模型无法有效地保护关键基础设施。鉴于Linux在服务器和关键系统中的广泛应用,组织需要一个更健壮的安全框架来应对不断演变的威胁形势。以“永不信任,始终验证”为操作原则的零信任安全模型为Linux环境提供了高级保护。
本文研究了零信任安全的原则,并提供了如何配置Linux系统以符合这些原则的实用指导。我们将介绍零信任的几个方面,包括身份验证、微分段和持续监控。
理解零信任安全模型
持续的验证
每个访问请求都使用多种因素进行验证,包括设备标识、用户标识、设备位置和行为模式。
最低权限访问
用户和设备只被授予最小的访问权限来执行其任务。该方法通常使用特权访问工作站来实现,其中管理员仅使用一台计算机执行管理任务。任务完成后,管理员将注销。在特权访问工作站环境中,工作站从不用于管理任务,服务器与管理机器和工作站是分开的。
微分段
微分段将网络划分为更小的段,以限制已入侵网络的攻击者的横向移动。
全面的监控
监控可见源,如网络流量、用户和机器日志(包括访问请求),对于检测异常和威胁至关重要。它使安全团队能够迅速对威胁作出反应。
为Linux系统配置零信任模型
在Linux环境中实现零信任模型通常包括以下步骤:
1.正确管理SSH密钥
SSH是通过远程访问管理Linux系统的基本工具。正确管理SSH密钥对于零信任安全至关重要。管理SSH密钥的最佳实践包括:
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密钥对:sudo ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
#限制SSH访问特定的IP地址:sudo nano /etc/hosts.allowsshd: 192.168.1.0/24sudo nano /etc/hosts.denysshd: ALL
图5:打开并修改主机。允许配置文件访问某个IP地址范围
图6:打开并修改hosts.deny配置文件,拒绝所有不属于允许IP地址范围的其他SSH连接
2.实现用户身份验证和基于角色的访问控制
您可以将多因素身份验证(MFA)和基于角色的访问控制(RBAC)作为零信任策略的一部分来实现。
#安装Google Authenticator:sudo apt-get install libpam-google-authenticator
#为SSH配置MFA:sudo nano /etc/pam.d/sshdauth required pam_google_authenticator.so
图8:如何修改sshd文件来为SSH配置MFA
#为指定角色创建新的sudoers文件:sudo visudo -f /etc/sudoers.d/developer#授予角色特定的权限:developer ALL=(ALL) /usr/bin/git, /usr/bin/docker
图9:在/etc目录中创建一个新的sudoers文件,并修改该文件以授予该角色特定的权限
3.设置和管理微分段和网络隔离
微分段和网络隔离是零信任体系结构的重要组成部分。如果攻击者获得了对网络的初始访问权限,它们有助于限制攻击者的横向移动。
#允许在端口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流量
#创建新的VLAN:sudo ovs-vsctl add-br br0sudo ovs-vsctl add-port br0 vlan10 tag=10 -- set interface vlan10 type=internal
#启用UFW并允许特定流量:sudo ufw enablesudo ufw allow from 192.168.1.0/24 to any port 22
图11:如何启用UFW,检查UFW服务的状态,并允许特定IP地址范围内的SSH流量通过端口22,同时阻止端口22上的所有其他流量
#在yaml中实现网络策略来控制不同pod之间的流量:apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: default-denyspec:podSelector: {}policyTypes:-Ingress-Egress
Linux的持续监控和审计实践
持续的监视和审计实践对于检测和响应安全事件至关重要。下面是一些工具和实践指导:
#安装和配置rsyslog:sudo apt install rsyslogsudo nano /etc/rsyslog.conf#转发日志到中心服务器:*.* @logserver:514
图12:修改rsyslog.conf文件,将日志转发到中心服务器
#安装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文件中
#使用wget下载并安装OSSEC:wget -U ossec <a href="https://github.com/ossec/ossec-hids/archive/master.zip"><strong>master.zipcd ossec-hids-mastersudo ./install.sh
#安装AIDE:sudo apt install aide#初始化AIDE数据库:sudo aideinit#检查更改:sudo aide --check
Input {File { path => “/var/log/syslog” start_position = > “beginning” }}
结语
在Linux环境中实现零信任安全模型可以显著提高对复杂网络威胁的防护能力。通过坚持零信任原则——例如持续验证、最小权限访问、特权访问工作站、微分段和监视——您可以创建一个有弹性且安全的环境,从而有效地应对复杂且不断演变的威胁环境。
原文标题: How To Implement Zero-Trust Security in Linux Environments ,作者:Grant Knoetze