目录遍历攻击本质是利用Web应用对路径输入缺乏校验,通过“../”等序列越权访问敏感文件;防御须结合应用层过滤与Linux文件系统权限配置,核心是让攻击者即使构造出恶意路径,也因权限不足而无法读取、写入或执行。

目录遍历攻击(Directory Traversal)本质是利用 Web 应用或服务对路径输入缺乏校验,通过 ../ 等序列越权访问系统敏感文件(如 /etc/passwd、/var/log/auth.log)。单纯靠应用层过滤不牢靠,必须结合 Linux 文件系统权限配置形成底层防御。核心思路是:让攻击者即使构造出路径,也因权限不足而读不到、写不了、执行不了。
关键目录的权限与挂载参数加固
对 Web 服务可访问的根目录(如 /var/www/html)及其父级路径,需严格控制属主、权限和挂载选项:
-
/tmp 目录必须禁用执行和提权能力:在
/etc/fstab中为/tmp添加noexec,nosuid,nodev参数,然后执行mount -o remount /tmp。这能阻止攻击者上传并执行恶意脚本。 -
/var/www 及其子目录应归属专用用户(如
www-data或nginx),权限设为750(目录)和640(文件),禁止其他用户读取或遍历;尤其要确保webroot的父目录(如/var)不被赋予过宽权限。 - 若使用独立分区存放网站数据,建议在挂载时启用
noexec和nosuid,从内核层面阻断任意代码执行可能。
敏感文件与目录的最小化访问控制
攻击者常试图通过遍历抵达系统关键路径。防御重点不是“藏起来”,而是“不让读”:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
/etc/passwd权限保持644即可(所有用户可读是设计使然),但/etc/shadow必须为600,且仅root和shadow组可访问;确认shadow组中无非必要成员。 - 用
chattr +i锁定绝对不可修改的核心文件,例如:chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow。即使 root 用户也无法删除或覆盖,有效防篡改。 - 检查
/etc/下所有配置文件(如apache2.conf、nginx.conf、my.cnf)权限是否为640或更严,属组设为对应服务组(如www-data),避免 Web 进程以过高权限运行导致配置泄露。
Web 服务进程的权限隔离
目录遍历能否成功,最终取决于 Web 服务进程(如 nginx、Apache)以什么身份运行:
- 禁止 Web 服务以
root启动。Nginx 默认使用www-data用户,Apache 常用apache或www-data;确认配置文件中User和Group指令已明确设置,且该用户无 shell(/sbin/nologin)。 - 使用
setgid目录配合正确 umask:将 Web 根目录设为特定组(如www-data),并执行chmod g+s /var/www/html,再设置全局umask 002(可通过/etc/profile或服务启动脚本),确保新创建文件自动继承组权限,便于协作又不越权。 - 对 PHP 等解释器,禁用危险函数(如
glob、realpath、file_get_contents的任意路径调用),并在php.ini中设置open_basedir限制可访问路径范围。
补充防护:内核与审计联动
权限配置是基础,还需配合内核防护与行为监控提升纵深防御能力:
- 启用内核
fs.protected_symlinks=1和fs.protected_hardlinks=1(写入/etc/sysctl.conf并sysctl -p),防止通过符号链接绕过路径限制。 - 部署
auditd规则,监控对敏感路径的异常访问,例如:-w /etc/shadow -p r -k shadow_access,一旦触发立即告警。 - 定期用
find /var/www -type f -perm -o+w或lynis audit system扫描世界可写文件,及时发现配置疏漏。

















