12.1 操作系统安全概述
一个完整的信息安全保障体系,应该充分考虑到CIA三元组的基本原则
(1)机密性:又称隐私性(Privacy),是指数据不能被未授权的主体窃取,即避免恶意读操作。
(2)完整性:是指数据不能被未授权的主体篡改,即避免恶意写操作。
(3)可用性:是指数据能够被授权主体正常访问
12.2linux系统的安全机制
Linux系统采用多层次的安全机制来确保系统的安全性。
-
权限模型:
- Linux使用基于用户和用户组的权限模型。每个文件和目录都有对应的所有者、所属组和其他用户的权限。
- 权限分为读(r)、写(w)和执行(x)权限,并且可以分别针对文件的所有者、所属组和其他用户进行设置。
-
用户和组管理:
- 用户账户和组的管理是系统安全的基础。管理员可以创建、修改和删除用户,为用户分配适当的组,以及管理用户密码。
- 用户密码可以使用加密的哈希算法存储在密码文件中,提高密码安全性。
-
防火墙:
- Linux系统内置了防火墙工具,例如iptables或nftables,用于管理入站和出站网络流量。
- 防火墙规则可以配置以限制对特定服务和端口的访问,从而提高网络安全性。
-
SELinux(Security-Enhanced Linux):
- SELinux是一个安全子系统,为Linux系统提供了更强大的访问控制机制。它通过为每个对象分配安全上下文来强化系统的安全性。
- SELinux可以限制进程对文件、网络资源和系统调用的访问,提供了更细粒度的权限控制。
-
AppArmor:
- AppArmor是另一个用于应用程序安全的Linux安全模块。它通过定义应用程序的行为规则来限制其对系统资源的访问。
- AppArmor通过配置应用程序的访问权限,以减少潜在的攻击面。
-
PAM(Pluggable Authentication Modules):
- PAM提供了一个灵活的身份验证框架,允许系统管理员轻松地配置和修改身份验证方式。
- PAM可用于集成多种身份验证方法,包括密码、令牌、生物识别等。
-
加密和安全通信:
- Linux支持SSL/TLS协议,用于加密网络通信,例如通过HTTPS进行的安全Web访问。
- SSH(Secure Shell)提供了安全的远程访问方式,通过加密传输数据,防止中间人攻击。
-
审计和日志:
- Linux系统提供了审计工具,可以记录系统事件、用户活动和文件访问等信息。
- 日志记录对于追踪潜在的安全问题、分析异常活动和进行安全审计非常重要。
12.3linux系统的访问控制
访问控制是按照访问者的身份来限制其访问对象的一种方法。访问者又称主体,可以是用户、应用程序和进程等,资源对象为客体,可以是文件、服务和数据等。通过对用户进行身份认证,再根据不同用户授予不同权限,访问控制实现了两个目标:防止非法用户进入系统、阻止合法用户对系统资源的非法使用。
1.Linux系统访问控制概述
访问控制是按照访问者的身份来限制其访问对象的一种方法。访问控制有3种基本类型:自主访问控制(DAC)、强制访问控制(MAC)和基于角色的访问控制。
(1)自主访问控制模型(DAC)
是资源的所有者,往往也是创建者,可以规定谁有权访问他们的资源。安全性较低,不能抵御特洛伊木马的攻击。DAC可以用访问控制矩阵来表示。
(2)强制访问控制模型(MAC)
主体和客体都有一个固定的属性,系统用该安全属性来决定一个主体是否可以访问某个客体。保护敏感信息一般用MAC,需要用户提供灵活的保护,更多的考虑共享信息时,使用DAC。
总结
Linux系统安全涉及多个方面,以下是一些关键技术要点的总结:
-
文件权限管理:
- 使用
chmod
、chown
和chgrp
等命令设置文件和目录的权限。 - 了解三种基本权限:读(r)、写(w)、执行(x),以及所有者、所属组和其他用户的权限分配。
- 使用
-
访问控制列表(ACLs):
- 使用ACLs为文件和目录添加更细粒度的权限控制,允许指定特定用户或组的额外权限。
-
SELinux和AppArmor:
- SELinux和AppArmor提供了强大的安全模型,通过限制进程对系统资源的访问方式提高系统的安全性。
- 配置和了解SELinux策略和AppArmor规则,确保其与系统要求一致。
-
Firewalls和iptables:
- 使用iptables或其他防火墙工具配置网络规则,限制网络流量,确保只有授权的流量能够进入和离开系统。
-
SSH安全配置:
- 配置SSH以使用密钥身份验证,禁用密码登录。
- 限制允许SSH登录的用户和IP地址。
-
密码策略:
- 配置合适的密码策略,包括密码复杂性、定期更改密码等。
- 使用工具如PAM来实现强化的身份验证。
-
日志和监控:
- 启用系统日志,审计系统活动,定期审查日志文件。
- 使用监控工具(例如Tripwire、AIDE)监视系统文件的变化。
-
更新和漏洞管理:
- 及时应用系统更新和补丁,确保系统安全性。
- 使用漏洞扫描工具检测系统中可能存在的漏洞。
-
加密和SSL/TLS:
- 使用加密传输敏感数据,例如通过SSL/TLS保护网络通信。
- 配置适当的加密协议和密码套件。
-
用户管理:
- 限制用户权限,避免过度授权。
- 定期审查和禁用不再需要的用户帐户。
-
物理安全:
- 控制物理访问,确保服务器和网络设备受到适当的保护。
- 定期检查服务器硬件的完整性。
-
容器和虚拟化安全:
- 针对容器和虚拟化环境采取适当的安全措施,如隔离、监控和审计。
-
应急响应计划:
- 制定并测试应急响应计划,以便在发生安全事件时能够迅速响应。