Linux Context(安全上下文) 是SELinux等强制访问控制(MAC)机制的核心组件,通过为文件、进程、端口等对象分配**用户(User)、角色(Role)、类型(Type)、级别(Level)**标签,实现细粒度的访问控制,有效限制未授权访问和恶意行为。以下是提高Linux Context安全性的关键方法:
SELinux的安全效果依赖其运行状态。通过sestatus命令检查状态,若显示“SELinux status: enabled”且“Current mode: enforcing”,则表示已启用强制模式(Enforcing)。若处于disabled或permissive(宽容模式,仅记录违规不阻止),需修改/etc/selinux/config文件,将SELINUX=enforcing,并重启系统使设置生效。强制模式是SELinux发挥安全作用的前提。
SELinux的“类型(Type)”是访问控制的核心,进程(域)与文件(类型)的类型匹配是访问允许的关键。使用ps auxZ查看进程类型(如httpd进程的类型为httpd_t),ls -lZ查看文件类型(如Web根目录应为httpd_sys_content_t)。若类型不匹配,需用semanage fcontext命令设置持久化规则(如semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"),再用restorecon -Rv应用更改,确保服务进程仅能访问其所需的文件。
避免进程拥有超出其功能所需的权限。例如,将服务运行在专有域(如httpd_t而非unconfined_t,unconfined_t权限过大易被利用);通过setsebool调整布尔值,仅开启必要的功能(如允许FTP匿名用户写入:setsebool -P allow_ftpd_anon_write 1)。最小权限原则可显著降低服务被攻破后的影响范围。
当SELinux阻止非法访问时,会生成拒绝日志(位于/var/log/audit/audit.log)。使用ausearch -m avc查看AVC(Access Vector Cache)拒绝事件,通过audit2allow工具生成自定义策略模块(如grep httpd /var/log/audit/audit.log | audit2allow -M mypol),并安装模块(semodule -i mypol.pp)。这既能解决合法访问被拦截的问题,又能避免过度放宽权限。
chcon命令可临时修改文件上下文(重启后失效),而semanage fcontext用于设置持久化规则(保存在SELinux策略数据库中)。例如,为/data/myapp目录设置持久化上下文:semanage fcontext -a -t myapp_data_t "/data/myapp(/.*)?",再用restorecon -Rv /data/myapp应用。持久化配置确保系统重启或文件移动后,上下文不会丢失。
SELinux布尔值(Boolean)是控制特定功能的开关(如ftp_home_dir控制FTP用户是否能访问家目录)。使用getsebool -a查看所有布尔值,setsebool临时修改(如setsebool ftp_home_dir on),setsebool -P永久修改(如setsebool -P ftp_home_dir on)。根据服务需求调整布尔值,既能满足功能需求,又能限制不必要的权限。
使用ausearch、aureport等工具监控SELinux活动。例如,ausearch -m avc -ts today查看当天的AVC拒绝事件,aureport -m avc生成AVC报告。定期监控可及时发现异常访问行为(如恶意进程尝试读取敏感文件),便于快速响应。
SELinux并非孤立的安全机制,需与其他措施配合使用:
chmod、chown设置文件权限(如chmod 750 /etc/shadow),作为第一层防线;firewalld或iptables限制网络流量(如仅允许HTTP服务的80端口),防止外部非法访问;systemctl disable telnet),减少攻击面。