리눅스에서의 파일 감사 : 삭제를 위해 디렉토리 트리를 감시하는 방법?


9

서버에서 포럼 스크립트를 실행 중이며 적은 수의 첨부 파일이 손실되기 시작합니다. 무엇을 삭제하고 언제 무엇을 찾고 싶습니다. Linux 감사 (auditctl)를 설정하여 디렉토리 삭제 (첨부 파일이 다중 레벨 디렉토리 트리에 저장 됨)에서 파일 삭제를 감시하도록하려면 어떻게해야합니까?

이를 위해 다른 도구를 사용해야합니까?

답변:


8

이것은 이전 질문에 쓴 답변입니다.

일반적으로 24/7에 대해 lsof를 실행하지 않고 프로세스 / 사용자 / 파일이 수행하는 작업을 알고 싶다면 auditctl을 사용하십시오.

최근의 커널 감사 제어가 있다고 가정하면 간단한 조작이어야합니다. (이것은 Red Hat을 적절히 실행하고 있다면 데비안 푸에 있습니다.)

# apt-get install auditd

실행 중인지 확인하십시오 (/etc/init.d/auditd 상태).

auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>

32 비트 아치를 실행중인 경우 b64를 b32로 바꾸십시오. open은 모든 시스템 호출 또는 'all'이라는 단어로 바꿀 수 있습니다.

자세한 내용은 auditctl 맨 페이지를 참조하십시오.

이 방법을 사용하여 '연결 해제'시스템 호출을 감시하도록 요청할 수 있습니다.

-w 매개 변수는 파일 / 디렉토리를 보는 데 유용하지만 매뉴얼 페이지에서 설명 할 때주의해야 할 점이 있습니다.

-w path 경로에 파일 시스템 오브젝트에 대한 감시를 삽입하십시오. 최상위 디렉토리에는 시계를 삽입 할 수 없습니다. 이것은 커널에 의해 금지되어 있습니다. 와일드 카드도 지원되지 않으며 경고가 생성됩니다. 시계가 작동하는 방식은 내부에서 inode를 추적하는 것입니다. 즉, 디렉토리에 감시를두면 파일 이벤트 인 것처럼 보이지만 실제로는 메타 데이터 업데이트 일뿐입니다. 이렇게하면 몇 가지 이벤트를 놓칠 수 있습니다. 디렉토리의 모든 파일을 감시해야하는 경우 각 파일에 개별 감시를 배치하는 것이 좋습니다. syscall 감사 규칙과 달리 시계는 커널에 전송 된 규칙 수에 따라 성능에 영향을 미치지 않습니다.


(CGI 모드에서 PHP를 실행하고 있습니다. 항상 새로운 프로세스입니다. 또한 단일 프로세스를 보지 않고 파일 시스템의 특정 부분이
바뀌는

예, 편집을 참조하십시오. 파일 시스템 디렉토리를 볼 수는 있지만주의 사항이나 파일이있는 매개 변수가 있습니다.
Aaron Tate

약 1000 개의 폴더와 약 50k의 파일이 있습니다. 그래서 이것은 작동하지 않습니다 ... :(
Vladislav Rastrusny

일반적으로주의 사항을 알고있는 한, 감시하려는 폴더가 포함 된 최상위 디렉토리에 시계를 배치하면됩니다.
Aaron Tate

동일한 작업을 수행해야합니다 (삭제 된 폴더를보고 PID / 프로세스 이름을 찾을 수 있도록)하지만 작동하지 않는 것 같습니다 (적어도 3.x 커널에서는). "auditctl -a entry, always -F arch = b64 -S unlink -w / path / to / dir"을 실행하여 삭제를 추적하면 "watch 옵션에 syscall을 지정할 수 없습니다"라는 메시지가 나타납니다. 누구든지 아이디어가 있습니까?
IBBoard


0

몇 가지 아이디어. strace응용 프로그램의 기능을 확인하는 데 사용할 수 있지만 로그 로그가 생성되어 시스템 속도가 느려질 수 있습니다.

또 다른 아이디어는 사용하는 것입니다 inotifywait다음, lsof/fuser그것을 사용 상황을 확인하기 위해 파일에. 가능한 한 정확한 정보를 얻기 위해이 스크립트를 우선 순위가 높은 (가능한 경우) 실행 해보십시오. unlink이벤트가 전달되기 전에 파일이 사라지기 때문에 호출을 잡을 수 없습니다 .


난 못해 시간이 지나면 삭제 된 파일을 찾기 때문에 strace를 실행할 프로세스를 모르겠습니다. PHP가 CGI로 실행 중이고 ID가 다른 PHP 프로세스가 많기 때문에 inotifywait도 작동하지 않습니다.
Vladislav Rastrusny

inotify는 실행중인 프로세스가 아니라 파일 시스템을 모니터링하는 데 사용됩니다. strace의 경우 하위 -f를 따르려면 플래그로 마스터 상위 프로세스를 추적해야합니다 .
Dan Andreatta

0

fenix의 감사 권고는 이상적으로 보이지만 AIDE 와 같은 파일 시스템 IDS가 도움 이 될 수 있습니다. 불행히도, 당신이 격리하려는 것에 충분히 세분화되지는 않을 것입니다.

나는 종종 당신이 묘사 한 것과 같은 문제에 대한 해결책으로 스크립트를 작성합니다. 권장 솔루션으로 원하는 것을 달성 할 수 없으면 직접 무언가를 작성하십시오. 종종 그렇게 복잡하지 않습니다.


파일 변경 사항을 찾기위한 것 같습니다. 실시간 모니터링이 아닙니다.
Vladislav Rastrusny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.