当前位置:网站首页 >  攻略

Linux服务器存储安全加固与权限控制实操手册

时间:2026年05月31日 15:15:23 来源:易频IT社区

一、核心文件系统权限与敏感目录加固

存储安全的第一道防线是文件系统权限。默认的Linux安装往往权限过于宽松,我们需要收紧关键系统文件的访问控制,并消除潜在的提权风险。

1. 锁定关键系统文件权限

系统配置文件和用户数据文件必须仅允许root用户写入,防止普通用户或恶意脚本篡改。配置如下命令直接生效:

  • 加固系统引导配置:确保grub配置不可被轻易修改,防止内核级参数被篡改。
    chown root:root /boot/grub2/grub.cfg
    chmod og-rwx /boot/grub2/grub.cfg
  • 加固用户与密码文件:防止非授权读取shadow文件。
    chmod 644 /etc/passwd
    chmod 600 /etc/shadow
    chmod 644 /etc/group
    chmod 600 /etc/gshadow
  • 限制重要系统目录:如/etc目录,禁止非root用户有任何写入权限。
    chmod 755 /etc
    chmod 750 /etc/rc.d/init.d/

2. 清除危险的SUID和SGID位

SUID/SGID允许普通用户以文件所有者(通常是root)身份执行程序,这是提权漏洞的高发区。我们需要扫描并移除不必要的SUID/SGID位。

执行以下命令查找系统中所有携带SUID或SGID的文件:

 查找SUID文件
find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;
查找SGID文件
find / -perm -2000 -type f -exec ls -la {} 2>/dev/null \;

对于非必须的二进制文件(如mount、ping、su等核心命令除外),建议直接移除特殊权限。例如,如果系统中安装了python且带有SUID位,必须立即移除:

chmod a-s /usr/bin/python
chmod a-s /usr/bin/vim
chmod a-s /usr/bin/less

二、磁盘全盘加密实战(LUKS)

对于存储敏感数据的服务器,静态数据加密是必须的。如果物理硬盘被盗或服务器被非法拆解,没有密钥的人无法读取数据。我们使用LUKS(Linux Unified Key Setup)对数据盘进行加密。

1. 安装加密工具

在CentOS/RHEL或Ubuntu/Debian上执行:

 CentOS/RHEL
yum install -y cryptsetup
Ubuntu/Debian
apt-get update && apt-get install -y cryptsetup

2. 分区与加密格式化

假设有一块新数据盘 /dev/sdb,我们将对其进行加密。注意:此操作会清空磁盘数据,请确认盘符正确。

 1. 对磁盘进行加密初始化(YES必须大写)
cryptsetup luksFormat /dev/sdb
执行后会提示:
WARNING!
========
This will overwrite data on /dev/sdb irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: (输入高强度密码)
Verify passphrase: (再次输入)

3. 映射加密设备与挂载

加密后的磁盘不能直接挂载,需要先打开映射:

 打开加密设备,映射名称为 secure_data
cryptsetup luksOpen /dev/sdb secure_data
输入刚才设置的密码
此时会在 /dev/mapper/ 下生成 secure_data 设备
对其格式化为 ext4 文件系统
mkfs.ext4 /dev/mapper/secure_data
创建挂载点并挂载
mkdir -p /data
mount /dev/mapper/secure_data /data

4. 配置开机自动挂载

为了实现开机自动挂载加密盘,我们需要将密钥信息写入配置文件(注意:这要求服务器启动时有人工交互输入密码,或者配置Keyfile,此处演示最安全的交互式配置基础)。

编辑 /etc/crypttab 文件:

cat >> /etc/crypttab << EOF
secure_data /dev/sdb none luks
EOF

编辑 /etc/fstab 文件:

cat >> /etc/fstab << EOF
/dev/mapper/secure_data /data ext4 defaults 0 2
EOF

注意:配置完成后,系统重启时会停在启动界面要求输入LUKS密码,输入正确后 /data 才会自动挂载。

三、挂载选项安全加固

通过配置 /etc/fstab,我们可以限制特定分区的行为,例如禁止执行二进制文件、禁止设备文件访问等,从而防止攻击者在可写目录(如/tmp)植入恶意程序并执行。

1. 加固 /tmp 分区

/tmp目录通常是所有用户可写的,极易被利用。我们需要添加 noexec(禁止执行)、nosuid(禁止SUID)、nodev(禁止设备文件)选项。

首先备份fstab:

Linux服务器存储安全加固与权限控制实操手册

cp /etc/fstab /etc/fstab.bak

编辑 /etc/fstab,找到包含 /tmp 的行。如果/tmp是独立分区,修改挂载选项如下:

UUID=xxxx-xxxx  /tmp  ext4  defaults,nosuid,nodev,noexec  0  0

验证操作:修改后执行以下命令生效并验证:

mount -o remount /tmp

尝试在/tmp下执行脚本,应提示权限拒绝:

cp /bin/ls /tmp/test_ls
/tmp/test_ls
预期结果:bash: /tmp/test_ls: Permission denied

2. 加固用户可写目录

对于 /home/var/tmp 等用户可写目录,同样建议应用 nosuidnodev 选项:

 /etc/fstab 示例
/dev/mapper/vg0-home /home ext4 defaults,nosuid,nodev 0 0

四、文件完整性监控(AIDE)部署

如果攻击者获取了root权限,他们可能会修改系统二进制文件(如ls, ps, sshd)以隐藏后门。AIDE(Advanced Intrusion Detection Environment)通过快照对比,能发现这些文件被篡改的迹象。

1. 安装AIDE

 CentOS/RHEL
yum install -y aide
Ubuntu/Debian
apt-get install -y aide

2. 初始化数据库

首先需要生成系统当前的“指纹”数据库。修改配置文件 /etc/aide.conf,根据需要调整监控的目录(默认配置通常已足够)。

执行初始化:

aide --init

生成的数据库通常位于 /var/lib/aide/aide.db.new.gz。我们需要将其重命名为正式数据库:

mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

3. 执行检测与验证

当怀疑系统被入侵或定期检查时,运行检测:

aide --check

输出结果会详细列出文件变动情况: added: 新增的文件 removed: 删除的文件 changed: 修改的文件(包括权限、内容、哈希值变化)

如果核心系统文件(如/bin/ls)出现在changed列表中,说明系统已被严重破坏,需立即启动应急响应流程。

五、关键操作审计日志配置

仅仅加固权限是不够的,必须记录谁在什么时候修改了什么。Linux Auditd系统提供了内核级别的审计日志。

1. 安装并启动Auditd

 CentOS/RHEL (通常默认安装)
systemctl start auditd
systemctl enable auditd
Ubuntu/Debian
apt-get install -y auditd
systemctl start auditd

2. 监控关键文件的写入与属性修改

我们需要监控 /etc/passwd/etc/shadow/etc/sudoers 等文件的变更。

编辑 /etc/audit/audit.rules,添加以下规则:

 监控密码文件的写入、属性修改、删除操作
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
监控系统 cron 任务计划变更
-w /etc/crontab -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
监控重要系统目录的权限修改
-w /etc -p wa -k etc_config

规则解释: -w: 监控的路径 -p: 监控的操作类型,w=写入,a=属性修改 -k: 给日志打标签,方便检索

3. 重启服务并查看日志

 重载规则使配置生效
augenrules --load
systemctl restart auditd

当有人修改了 /etc/passwd 后,使用 ausearch 查看日志:

ausearch -k identity -i

输出将包含操作的时间戳、执行命令的用户UID、具体的操作类型以及成功与否的状态。这是追踪存储数据被篡改的最直接证据。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图