프로덕션 서버의 특정 파일이 무작위로 수정되고 있는데, 이는 로그 활동과 관련이 없는 것으로 보입니다. 어떤 프로그램이 이런 일을 하는지는 알 수 없었고, 의심되는 부분도 많았습니다. 범인을 어떻게 찾을 수 있나요?
항상 동일한 파일, 동일한 경로에 있지만 다른 서버와 다른 시간에 있습니다. 이 상자는 다음에 의해 관리됩니다.인형, 그러나 파일이 수정되는 동안 꼭두각시 로그에는 활동이 표시되지 않습니다.
어떤 프로세스가 이 파일을 수정하고 있는지 찾는 데 도움이 되는 커널 후크, 도구 또는 기술은 무엇입니까?
lsof는 파일이 매우 빠르게 열리고 수정되고 닫히므로 이러한 상황에는 적합하지 않습니다. 폴링에 의존하는 솔루션(예: lsof 자주 실행)은 좋지 않습니다.
- 운영 체제: 데비안 테스트됨
- 커널: Linux, 2.6.32~3.9, 32비트 및 64비트.
답변1
auditd를 사용하고 파일을 모니터링하는 규칙을 추가할 수 있습니다.
auditctl -w /path/to/that/file -p wa
그런 다음 기록될 항목을 관찰하십시오 /var/log/audit/audit.log
.
답변2
찾고 있는 프로그램에 여전히 파일이 열려 있으면 다음 명령을 사용할 수 있습니다.
sudo lsof /path/to/file/being/modified
다음 스크립트를 사용하여 작은 루프에서 호출할 수도 있습니다 getfileusers.sh
.
#!/bin/sh
FILE=$1
while true; do
lsof "${FILE}"
done > /tmp/fileusers.log
그런 다음 호출하십시오.
sudo ./getfileusers.sh /path/to/file/being/modified
마지막으로 /tmp/fileusers.log
누가 파일을 만졌는지 확인하세요.
답변3
SystemTap은 다음을 사용하여 이를 수행할 수 있습니다.Inode 모니터링 스크립트.
답변4
실시간으로 캡처할 수 있는 경우(예: 파일에 액세스 중) lsof를 실행하여 프로세스를 찾을 수 있습니다.
$ while :; do echo foo >> bar.txt; done &
$ sudo lsof bar.txt
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 25723 terdon 1u REG 8,6 5015796 16647496 bar.txt