问题描述:
因IIS进程依赖某个dll文件,触发安全软件告警该dll文件硬链接数超过系统限制拦截IIS进程访问,网站访问超时或提示硬链接数问题。
根据上述情况查看问题dll文件硬链接情况,检查命令如下:
fsutil hardlink list <dll 文件具体路径>
示例问题dll文件如fsutil hardlink list C:\Windows\SysWOW64\bcryptprimitives.dll
问题dll文件除保留系统补丁更新引用的硬链接,同时存在多个指向winsxs 下 PendingDeletes 目录的硬链接列表,对比其它在用服务器上述目录无多个此dll文件硬链接
C:\Windows\winsxsTemp\PendingDeletes
相关命令:
检查指定文件的文件ID
fsutil file queryFileID <文件具体路径>
Dism以及 SFC命令
因操作系统为Windows 2008 R2,不支持Dism 选项 /startcomponentcleanup
使用 dism /online /cleanup-image /spsuperseded 进行操作
使用 dism /online /cleanup-image /scannhealth 检查组件存储损坏,未发现有关问题dll文件的日志记录
SFC /SCNNOW
指定具体文件的完整性检查
sfc /VERIFYFILE= C:\Windows\SysWOW64\bcryptprimitives.dll
上述操作检查问题dll 文件正常
磁盘清理
要求安装桌面体验功能,在磁盘属性点击"磁盘清理"
注:Windows 2012以及后续版本已支持上述操作,不用安装桌面体验功能
在进行"磁盘清理"操作重启,执行检查命令未正常回收问题dll文件的缓存
PE 下使用Dism++检查补丁是否未正常安装
在离线模式下对系统镜像还原挂起操作
DISM.exe /Image:D:\SYSTEM\Offline /Cleanup-Image /RevertPendingActions
此操作重启检查仍存在问题dll的硬链接映射
通过检查 PendingDeletes 下 dll 与源路径下bcryptprimitives.dll的文件ID一致,尝试进行删除 PendingDeletes目录下有关问题dll的硬链接文件
再次进入PE进行强制删除, 重启服务器验证已正常使用
cd C:\Windows\winsxs\Temp\PendingDeletes
takeown /f *. bcryptprimitives.dll /r
icacls *. bcryptprimitives.dll /grant Administrators:(F) /t
del /q *. bcryptprimitives.dll
参考
https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/how-to-clean-up-the-winsxs-directory-and-free-up-disk-space-on/ba-p/257250
https://sspai.com/post/66834