必须运行sudo ldconfig才能使/etc/ld.so.conf修改生效,否则系统仍用旧缓存;路径需写入/etc/ld.so.conf.d/下的.conf文件,库须符合libxxx.so.x命名且含有效soname。

排查 ld.so.conf 及其相关配置是否被篡改,关键不是只看文件内容,而是验证“谁在控制动态链接器行为”——因为攻击者常不直接改主配置,而是通过包含机制、软链接或环境变量绕过检查。
先确认当前生效的库搜索路径
运行以下命令,查看系统实际加载共享库时使用的完整路径列表:
ldconfig -v 2>/dev/null | grep "^/"
这个输出反映的是 ldconfig 当前缓存的真实路径(不含注释和空行),比单纯读 /etc/ld.so.conf 更可靠。如果看到异常路径如 /usr/local/lib/malware 或用户家目录下的路径,就要重点核查。
检查 ld.so.conf 主配置及其包含链
ld.so.conf 通常本身很短,真正危险的是它 include 的子配置。按顺序检查:
- 查看主文件:cat /etc/ld.so.conf,注意是否有
include行(如include /etc/ld.so.conf.d/*.conf) - 列出所有被包含的文件:ls -l /etc/ld.so.conf.d/,检查文件属主是否为 root、权限是否为 644、修改时间是否可疑(比如凌晨2点)
- 逐个查看子配置:grep -v '^#' /etc/ld.so.conf.d/*.conf 2>/dev/null | grep -v '^$',剔除注释和空行后看实际路径
警惕软链接与隐藏文件
攻击者可能用软链接把配置指向恶意位置,或在 .conf 文件名前后加不可见字符欺骗肉眼:
- 检查软链接:ls -l /etc/ld.so.conf /etc/ld.so.conf.d/,若发现指向
/tmp、/dev/shm或非标准路径,立即隔离 - 检查隐藏文件:find /etc/ld.so.conf.d/ -name ".*" -ls,有些后门会创建
.malware.conf这类带点开头的文件,ls *.conf默认不显示 - 用十六进制查看确认无非法字符:xxd /etc/ld.so.conf.d/evil.conf | head -5
验证配置是否真被用于加载
光看文件没用,要确认恶意路径是否已写入运行时缓存:
- 查看当前缓存内容:cat /etc/ld.so.cache | strings | grep -E "(lib|\.so)" | head -10(
strings可提取可读路径) - 对比缓存生成时间与配置修改时间:stat /etc/ld.so.cache /etc/ld.so.conf,若缓存更新时间远早于配置修改时间,说明改动未生效;若缓存更新了但路径异常,说明攻击者已成功执行过
ldconfig - 临时禁用可疑路径测试:sudo mv /etc/ld.so.conf.d/xxx.conf /tmp/ && sudo ldconfig,再运行
ldconfig -v | grep xxx确认路径消失
恢复与加固建议
确认问题后,不要直接编辑——先备份再操作:
- 备份原始配置:sudo cp -a /etc/ld.so.conf{,.bak} && sudo cp -a /etc/ld.so.conf.d{,.bak}
- 清空可疑子配置,或重装 glibc 相关包重建默认配置:sudo yum reinstall glibc(RHEL/CentOS)或 sudo apt install --reinstall libc6(Debian/Ubuntu)
- 加固:将
/etc/ld.so.conf.d/设为只读(sudo chmod 755 /etc/ld.so.conf.d && sudo chown root:root /etc/ld.so.conf.d),并用 aide 监控该目录变化











