Linux文件锁定及权限修改(linux文件安全防护指南)
在Linux系统中,为了防止文件被篡改或非法访问,可以使用chattr命令来锁定文件,使其不可变。这样,即使root用户也无法修改或删除这些文件,直到你决定解锁它们。以下是如何使用chattr命令来锁定和解锁文件的步骤:
1、锁定文件:使用chattr命令加上+i参数来锁定文件。这将使文件不可变,无法被修改、删除或重命名。
sudo chattr +i /www/1.html #处理单个文件find "/www" -type f -exec sudo chattr +i {} \; #处理所有文件
2、检查文件属性:使用lsattr命令来查看文件的当前属性,确认文件已被锁定。
lsattr /www/1.html
3、解锁文件:当您需要对文件进行修改时,可以使用chattr命令加上-i参数来解锁文件。
sudo chattr -i /www/1.html #处理单个文件find "/www" -type f -exec sudo chattr -i {} \; #处理所有文件
请注意,chattr命令只适用于ext2、ext3或ext4文件系统,并且不能用于/、/dev、/tmp、/var等特殊目录。
此外,锁定文件是一种安全措施,但它不能防止所有的攻击,例如,如果攻击者有物理访问权限或者能够绕过文件系统限制,他们可能仍然能够修改文件。因此,确保系统的其他安全措施(如防火墙、安全更新和入侵检测系统)也得到妥善配置和维护是非常重要的。
也可以结合chmodACL chattr处理所有用户组、所有目录、所有文件,为方便执行,我们把命令写到脚本里:
!!!注意,以下为高风险操作,操作前请务必了解代码原理!!!
锁定(新建文件suoding.sh放入代码,执行bash suoding.sh,无法执行需要chmod +x命令增加执行权限):
#!/bin/bash
# 定义目录路径
DIR="/www/"
# 开始时间
START_TIME=$(date +%s)
# 为目录中的所有文件设置不可变属性
find "$DIR" -type f -print0 | xargs -0 -P 4 -I {} chattr +i {};
# 等待所有后台进程完成
wait
# 设置目录的权限,使得所有用户(包括所有者和root)只有读取权限
find "$DIR" -type d -exec sudo chmod 544 {} \;
# sudo chmod -R 444 "$DIR" # 设置目录和文件的权限
# sudo setfacl -R -m u::r--,g::r--,o::r-- "$DIR" #也可用ACL单独控制,使得所有用户只有读取权限
# 等待所有后台进程完成
wait
# 结束时间
END_TIME=$(date +%s)
# 计算并打印所用时间
ELAPSED_TIME=$((END_TIME - START_TIME))
echo "Elapsed time: $ELAPSED_TIME seconds"
# 打印完成信息
echo "Files in '$DIR' have been secured with chattr, chmod, and setfacl."
解除:(新建文件jiechu.sh放入代码,执行bash jiechu.sh,无法执行需要chmod +x命令增加执行权限):
#!/bin/bash
# 定义目录路径
DIR="/www/"
# 开始时间
START_TIME=$(date +%s)
# 解锁目录中的所有文件
find "$DIR" -type f -print0 | xargs -0 -P 4 -I {} chattr -i {};
# 等待所有后台进程完成
wait
# 设置目录的权限,使得所有者和root有读写执行权限,其他用户组保持只读
find "$DIR" -type d -exec sudo chmod 755 {} \;
# sudo chmod -R 755 "$DIR" # 设置目录和文件的权限
# sudo setfacl -R -m u::rwx,g::r--,o::r-- "$DIR" # 也可用ACL单独控制,允许所有者和root有读写执行权限,其他用户组保持只读
# 等待所有后台进程完成
wait
# 结束时间
END_TIME=$(date +%s)
# 计算并打印所用时间
ELAPSED_TIME=$((END_TIME - START_TIME))
echo "Elapsed time: $ELAPSED_TIME seconds"
# 打印完成信息
echo "Files in '$DIR' have been secured with chattr, chmod, and setfacl."
方法汇总:
1、使用chmod命令来限制文件的读写执行权限。
2、flock主要用于控制文件的并发访问,通过锁定文件描述符来实现。它适用于需要防止多个进程同时修改文件的场景。
3、chattr主要用于修改文件的元数据属性,例如设置文件为只读或不可修改。它适用于需要保护文件免受意外修改或删除的场景。
4、使用chown命令更改文件的所有者,以及chgrp命令更改文件的所属组。
5、使用ACLs(访问控制列表)ACLs提供比传统Unix权限更细粒度的控制。
6、AppArmor或SELinux这些是Linux的安全模块,可以提供基于策略的安全控制。
7、文件系统挂载选项在挂载文件系统时,可以使用noexec、nodev、nosuid等选项来增加安全性,限制执行文件或使用设备文件。
8、使用版本控制系统对于代码或配置文件,可以使用版本控制系统(如git)来跟踪更改。如果文件被篡改,可以从版本库中恢复。
9、Linux还支持文件锁机制,用于控制多个进程对同一文件的并发访问。虽然这主要用于避免数据不一致或损坏,但在一定程度上也可以防止文件被恶意篡改。
10、许多Linux发行版支持文件系统加密,如dm-crypt/LUKS(Linux Unified Key Setup)。
11、利用SELinux或AppArmor等强制访问控制(MAC)系统。
12、直接购买第三方防护软件,如护卫神。
监测和检查:
1、使用工具如auditd、inotify-tools等监控关键文件的变化,一旦发现异常变动即可立即采取行动。
2、定期检查文件完整性使用工具如Tripwire可以建立文件的完整性数据库,定期检查文件是否被篡改。
3、如果是cms可以针对核心文件监测修改和新增情况。
页:
[1]