Linux 安全与存储管理指南
1. SELinux 如何保护资源?
SELinux(安全增强型 Linux) 是系统的“超级保安”,通过以下方式保护资源:
-
强制访问控制(MAC):为每个进程、文件、端口等分配唯一“标签”(上下文),即使黑客突破普通权限,SELinux 也会根据标签限制非法操作。
-
最小权限原则:默认拒绝所有操作,只有明确允许的规则才能放行。
通俗比喻:
-
普通权限(DAC):你家的门锁,钥匙在你手里,但可能被偷。
-
SELinux(MAC):小区保安,即使小偷拿到钥匙,保安也会检查身份证,阻止陌生人进入。
2. SELinux 的工作模式
模式 | 行为 | 适用场景 |
---|---|---|
Enforcing | 强制执行所有安全策略,拒绝非法操作。 | 生产环境(安全第一) |
Permissive | 仅记录违规行为,不阻止操作。 | 调试阶段(观察问题) |
Disabled | 完全关闭 SELinux。 | 极端兼容性需求(不推荐) |
查看当前模式:
getenforce # 输出:Enforcing、Permissive 或 Disabled
临时切换模式:
sudo setenforce 0 # 设为 Permissive
sudo setenforce 1 # 设为 Enforcing
3. DAC 与 MAC 的区别
-
DAC(自主访问控制):
-
规则:用户自主管理文件权限(如
rwx
)。 -
示例:
chmod 755 file.sh
设置文件权限。 -
风险:root 用户权限过大,易被滥用。
-
-
MAC(强制访问控制):
-
规则:系统强制定义进程和资源的访问关系。
-
示例:即使你是 root,SELinux 也可阻止 Apache 访问非授权目录。
-
核心区别:DAC 是“自愿锁门”,MAC 是“强制安检”。
4. SELinux 文件上下文
上下文(Context):SELinux 为每个文件、目录、进程分配的标签,格式为:
user:role:type:level
-
关键字段:
type
(类型),决定访问权限(如httpd_sys_content_t
表示 Web 内容文件)。
查看文件上下文:
ls -Z /var/www/html # 输出:system_u:object_r:httpd_sys_content_t index.html
5. 设置默认 SELinux 模式
-
编辑配置文件
/etc/selinux/config
:SELINUX=enforcing # 可选值:enforcing、permissive、disabled
-
重启系统生效。
6. 文件复制/移动时的上下文变化
-
复制(
cp
):新文件继承目标目录的默认上下文。 -
移动(
mv
):保留原文件的上下文。
修复上下文不匹配:
restorecon -Rv /path/to/file # 恢复默认上下文
7. 修改 SELinux 上下文
-
临时修改:
chcon -t httpd_sys_content_t /path/to/file # 修改类型
-
永久修改(需更新策略或使用
semanage
):semanage fcontext -a -t httpd_sys_content_t "/custom/web(/.*)?" restorecon -Rv /custom/web
8. SELinux 故障排除服务
-
日志工具:
-
auditd
:记录 SELinux 拒绝事件到/var/log/audit/audit.log
。 -
sealert
:分析日志并给出建议。
-
使用示例:
sealert -a /var/log/audit/audit.log # 生成可读的报告
存储分区与挂载
9. 使用分区划分存储的好处
-
数据隔离:系统崩溃时,避免所有数据丢失。
-
性能优化:不同分区使用不同文件系统(如 SSD 用
ext4
,机械硬盘用xfs
)。 -
安全控制:为敏感数据单独挂载并设置权限。
-
多系统支持:在同一磁盘安装多个操作系统。
10. MBR 与 GPT 分区
特性 | MBR | GPT |
---|---|---|
最大磁盘容量 | 2TB | 几乎无限制(支持 EB 级) |
分区数量 | 4 个主分区(或 3 主 + 1 扩展) | 128 个主分区(默认) |
兼容性 | 兼容旧系统(如 BIOS 启动) | 需 UEFI 支持 |
备份机制 | 无 | 分区表头尾部备份,更安全 |
选择建议:新硬件选 GPT,旧硬件或兼容 BIOS 启动选 MBR。
11. parted
的作用与 mklabel
子命令
-
parted
:强大的分区工具,支持 GPT/MBR,可调整分区大小。 -
mklabel
:创建分区表(即选择 MBR 或 GPT)。
示例:将磁盘 /dev/sda
初始化为 GPT:
sudo parted /dev/sda
(parted) mklabel gpt
12. 开机自动挂载文件系统
-
编辑
/etc/fstab
文件,添加挂载条目:UUID=xxxx-xxxx /mount/path ext4 defaults 0 0
-
字段解释:
-
UUID
:磁盘分区的唯一标识(用blkid
查看)。 -
挂载点
:如/mnt/data
。 -
文件系统类型
:如ext4
、xfs
。 -
挂载选项
:defaults
包含读写、执行等权限。 -
备份标记
:0
表示不备份。 -
检查顺序
:0
表示不检查。
-
-
-
测试配置:
sudo mount -a # 挂载所有 fstab 中的条目
注意:使用 UUID 而非设备名(如 /dev/sda1
),避免磁盘顺序变化导致错误。