Permission denied
사용자가 파일에 액세스하려고 시도한 후 알림을 받을 때 로그/추적하는 방법을 알아내려고 합니다 . 규칙을 추가하면 이 작업을 수행할 수 있다는 것을 읽었습니다 /etc/audit/audit.rules
.
내가 본 유일한 조언예상대로 작동하지 않는 것 같습니다. 아니면 적어도 내가 원하는 효과는 없었습니다. 아마도 쓰여진 대로 작동할 것입니다. 규칙은
-a always,exit -F arch=b64 -S open -F success!=0
실제로 위에 링크된 제안에는 아치 옵션이 포함되어 있지 않습니다. 뭔가를 추가해야 해요.
미행하는 동안 /var/log/audit/audit.log
나는 말한 모든 것을 보았습니다 success=yes
. 여기에는 창을 클릭하고 포커스를 변경하거나 창 기능 간을 변경하기 위해 키 조합을 입력하는 경우가 포함됩니다. Permission denied
포함 항목이나 열려고 하는 특정 파일과 관련된 내용은 아무것도 표시되지 않지만 success=no
해당 파일에 대한 권한이 없다는 것을 알고 있습니다.
success=no
내가 분명히 말할 수 있는 것은 in을 grep할 때 /var/log/audit/audit.log
아무것도 반환되지 않는다는 것입니다.
규칙은 무엇이어야 합니까? 아니면 더 나은 점은 이것이 실제로 가능합니까? 위의 해결 방법이 잘못된 것인가요?
답변1
success!=1
저는 이 도구를 사용해 본 결과 audit.log
표시가 표시되는 것을 발견했습니다 success=no
. 0이 아닌 종료 코드는 일반적으로 일종의 오류를 나타내지만 !=1
다른 오류 종료 코드를 포함하여 무엇이든 될 수 있기 때문에 이는 직관적이지 않은 것 같습니다. 그리고 성공( 0
). 그러나 흥미롭게도 이러한 내용은 나타나지 않았습니다.
또 다른 문제는 어떤 파일 액세스가 실패했는지 표시하지 않는다는 것입니다. 대신 실패한 종료 코드가 반환되었을 때 실행된 명령만 나열됩니다. 내 경우에는 달리고 있었다 cat /etc/shadow
. 그래서 보는 것보다
type=SYSCALL msg=audit(1438754257.463:11451): arch=c000003e syscall=2 success=no exit=-13 a0=7ffea511f35f a1=0 a2=1ffffffffffe0000 a3=0 items=1 ppid=1650 pid=5489 auid=1000 uid=1000 gid=100 euid=1000 suid=1000 fsuid=1000 egid=100 sgid=100 fsgid=100 tty=pts0 ses=1 comm="cat" exe="/usr/bin/cat" key="access"
type=CWD msg=audit(1438754257.463:11451): cwd="/home/msnyder"
type=PATH msg=audit(1438754257.463:11451): item=0 name="/etc/shadow" inode=1131047 dev=00:20 mode=0100640 ouid=0 ogid=15 rdev=00:00 nametype=NORMAL
나만 볼게
type=SYSCALL msg=audit(1438752096.223:4952): arch=c000003e syscall=2 success=yes exit=3 a0=7f77d575c057 a1=80000 a2=1 a3=22 items=1 ppid=1650 pid=4873 auid=1000 uid=1000 gid=100 euid=1000 suid=1000 fsuid=1000 egid=100 sgid=100 fsgid=100 tty=pts0 ses=1 comm="cat" exe="/usr/bin/cat" key=(null)
type=CWD msg=audit(1438752096.223:4952): cwd="/home/msnyder"
그런 다음 맨페이지를 살펴보았습니다 audit.rules
.유레카!대답은 항상 거기에 있었습니다.
-a always,exit -F arch=b64 -S open,openat -F exit=-EACCES -F key=access
-a always,exit -F arch=b64 -S open,openat -F exit=-EPERM -F key=access
이 두 가지 규칙을 결합하면 문제가 해결됩니다. 실패한 파일 액세스뿐만 아니라 액세스를 시도한 파일도 기록합니다. 그러면 파일 이름을 포함하는 위의 처음 3개 로그 항목이 생성됩니다.