Linux에서 디렉터리 권한 수정을 조사하는 방법은 무엇입니까?

Linux에서 디렉터리 권한 수정을 조사하는 방법은 무엇입니까?

Ubuntu 12.04/apache 서버와 루트 권한이 있는 "/var/www/foo" 디렉터리가 있습니다.

해당 디렉토리에 대한 권한이 반복적으로 변경되고 있습니다.

질문: 어떻게 조사하고, 무엇이 권한을 변경했나요?

답변1

감사를 사용하여 이를 조사하여 확인할 수 있습니다. 우분투에서는 이 패키지를 auditd.

파일 또는 폴더 조사를 시작하려면 다음 명령을 사용하십시오.

auditctl -w /var/www/foo -p a
  • -w파일/폴더 보기를 나타냅니다.
  • -p a파일 속성 변경을 모니터링하는 것을 의미합니다.

지금 시작하세요 tail -f /var/log/audit/audit.log. 속성이 변경되면 로그 파일에 다음과 유사한 내용이 표시됩니다.

type=SYSCALL msg=audit(1429279282.410:59): arch=c000003e syscall=268 success=yes exit=0
  a0=ffffffffffffff9c a1=23f20f0 a2=1c0 a3=7fff90dd96e0 items=1 ppid=26951 pid=32041
  auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts5
  ses=4294967295 comm="chmod" exe="/bin/chmod"
type=CWD msg=audit(1429279282.410:59):  cwd="/root"
type=PATH msg=audit(1429279282.410:59): item=0 name="/var/www/foo" inode=18284 dev=00:13
  mode=040700 ouid=0 ogid=0 rdev=00:00

나는 chmod 700 /var/www/foo그것을 실행하기 위해 실행합니다.

  • 첫 번째 줄에 보시면
    • 이 작업을 수행하는 실행 파일은 다음과 같습니다.exe="/bin/chmod"
    • 프로세스 PID:pid=32041
    • 어떤 사용자인지 확인할 수도 있습니다. uid=0제 경우에는 루트입니다.
  • 세 번째 줄에는 변경된 패턴이 표시됩니다.mode=040700

답변2

과거에 권한이 변경된 이유를 어떻게 알 수 있는지 대답할 방법이 없다고 생각하지만 lsof 명령을 사용하면 특정 시간에 어떤 사용자나 프로세스가 파일을 사용하고 있는지 확인할 수 있습니다. cron에 올려서 잡을 수도 있습니다. 파일 권한이 무작위로 변경되고 그것이 무엇인지 모르는 경우 찾기 어려울 수 있습니다.

"chattr" 명령을 사용하면 파일 권한이 변경되는 것을 방지할 수 있습니다. Chattr은 적절한 chattr 명령을 먼저 실행하지 않으면 루트 사용자라도 파일을 수정할 수 없도록 파일을 잠급니다.

chattr +i 파일 이름(파일 이름 속성을 "불변"으로 설정하세요. 누구도 파일에 쓸 수 없습니다.) chattr -i 파일 이름(파일 소유권과 권한을 다시 변경할 수 있도록 불변 플래그를 제거하세요.)

답변3

시스템 이 없으면 auditctl다음 명령을 사용하여 조사를 시작할 수 있습니다.

$ ls -lc /path/to/folder

이것은 "ctime을 표시하고 이름별로 정렬"하여 폴더가 마지막으로 변경된 시기를 표시합니다. 어쩌면 이 정보를 사용하여 cron 작업에 연결하거나 변경이 수행되었을 때 로그인한 사용자를 볼 때 사용자가 트리거한 이벤트에 변경 내용을 연결할 수 있습니다.

마지막 로그인, 세션 기간, 타임스탬프가 포함된 추가 정보를 보려면 다음 명령을 사용하십시오.

$ last | more

관련 정보