1. 认证及账号管理
Shadow套件:/etc/passwd和/etc/shadow分离,确保/etc/shadow只有root用户可读写访问
PAM认证机制:通过动态链接库和api,将系统提供的服务和该服务的认证方式分开,灵活添加与更改,
2. 权限管理
最小化权限原则,防止root被滥用。
管理系统时,如需使用root,禁止直接使用root登录。
应对允许使用su到root的用户进行明确授权,非授权用户不能切换到root。
3. 文件权限
系统中禁止有无主文件存在。
除有明确需求,应删除文件setuid和setgid。
应为系统用户设置缺省的umask。
使用特殊属性位粘滞位Sticky位对共享目录权限进行控制(chmod)。
利用扩展的文件属性位Append only保护系统命令行历史日志文件,防止内容被篡改(chattr)。
创建临时文件时,使用每个用户特定的临时目录。
目录上设置粘滞位(t粘滞且可执行,T仅粘滞)
除所有者外,无法重命名文件,无法删除文件,也叫限制删除标志。
文件设置粘滞位(一些Unix系统,其他特性不可移植,不建议使用)
防止文件权限判断被绕过(TOCTOU):
access与open函数调用之间会有很短的时间,当在这个期间创建一个符号链接指向敏感文件,那么将会open敏感文件,如果程序被setuid到一个特权用户,那么该漏洞将会暴露敏感信息给攻击者。
4. 访问控制、记录和审计
自主访问控制DAC、强制访问控制MAC。
使用POSIX ACL 进行更细粒度的访问控制,通过setfacl/getfacl文件系统为用户和所属组分配访问权限。
Linux系统建议开启selinux,作为应急的安全访问控制手段。
使用Auditd组件对系统中重要的目录和文件进行审计。
使用inotify监控机制,以文件系统事件进行安全监控。
5. 文件系统保护,完整性保护
对文件系统进行保护
使用fstab对日志存储或外接的分区进行访问控制。
对于系统中的重要目录必须根据存储目的不同进行分区隔离。
禁用自动工具对移动存储设备挂载。
对存有重要信息的文件目录或分区进行加密。
日志保护
应将操作系统日志发送到外部服务器单独存储,防止日志被篡改(/etc/syslog-ng/syslog-ng.conf配置)。
Linux完整性度量架构IMA工具对系统文件的完整性进行检查(需内核在2.6.30版本以上且开启该功能)。
6. 网络防护
使用sysctl工具增强网络防护能力(ICMP重定向消息)。
使用iptables对系统不使用的端口进行限制。
远程访问需使用SSH代替telnet。
系统中不应安装不安全的传统网络服务。
iptables -A INPUT -p tcp --dport XXX -j DROP.
iptables -A INPUT -p udp --dport XXX -j DROP.
7. 漏洞攻击防护
对系统和程序进行地址随机化和数据执行保护(缓冲区溢出)
使用Linux自带的ASLR功能(地址空间布局随机化)增强漏洞攻击防护能力。
系统必须使用DEP防护手段提升漏洞攻击防护能力。
使用栈保护机制。
对core dump功能的使用进行限制。
使用ulimit工具限制用户可以打开的文件个数(/etc/security/limits.conf,soft nofile 32768,hard nofile 65536)。
限制所有用户除root外进程数(hard noproc 200)。
增强系统内核安全的保护手段还包括
使用Grsecurity增强Linux系统安全防护能力。
使用PaX增强系统攻击防护能力。
8. 安全隔离和容器
容器可提供轻量级的虚拟化,以便隔离进程和资源。
对CPU、内存、存储器等资源设置系统限制。
9. 硬件和引导安全
应对bootloader开启引导装载密码。
关闭SysRq键(使得具有物理访问的用户能够访问计算机中危险的系统级命令)的使用。