특정 디렉터리 생성 방지

특정 디렉터리 생성 방지

/tmp/나는 자신을 다운로드하고 그 결과를 디렉터리 내 새로 생성된 디렉터리 에 저장하려고 시도하는 취약점의 기본 사항을 다루고 싶습니다 .

보안상의 이유로 그 안에 폴더가 생성되지 않기를 바랍니다 /tmp/. 또는 이것이 가능하지 않은 경우 특정 디렉터리에 폴더가 생성되지 않도록 하고 싶습니다 /tmp.

답변1

을 사용하면 ls -l -d /tmp/권한이 로 설정되어 있음을 알 수 있습니다 . drwxrwxrwtd, 디렉토리, rwx: 소유자, 그룹 및 기타(순서대로)에 대한 읽기, 쓰기 및 실행 권한 허용, t고정 비트, 즉 소유자만 허용합니다. 파일을 삭제합니다(권한은 있지만 그룹은 아님). 지금은 끈적끈적한 부분은 제쳐두고 액세스 가능하려면 디렉토리가 실행 가능해야 한다는 점을 언급하겠습니다.

이제 다른 사람(소유자와 그룹은 루트임)의 쓰기 권한을 제한하려면 chmod o-w /tmp/루트로 사용하십시오(즉, use sudo).

하지만: /tmp/임시 데이터가 필요할 수 있는 프로세스에 매우 중요하므로 이 폴더에 대한 권한을 전혀 제한하지 않는 것이 좋습니다!

특정 폴더로 이동하려고 하므로 가장 쉬운 방법은 폴더를 수동으로(루트로) 만든 다음 해당 권한을 제한하는 것입니다.

sudo mkdir /tmp/badfolder
sudo chmod -R o-w /tmp/badfolder/

chmod에 대한 참고 사항: -Ru, g, o: user, group, other, +-를 재귀적으로 실행하여 r, w, x 읽기, 쓰기, 실행 권한을 추가/제거합니다. 즉, 그룹 구성원이 파일에 쓸 수 있도록 허용하려면 chmod g+w file.


고쳐 쓰다:

프로세스가 루트로 실행 중인 경우 "i" 속성도 설정해야 합니다. ~에서man chattr

"i" 속성이 있는 파일은 수정할 수 없습니다. 삭제하거나 이름을 바꿀 수 없으며 파일에 대한 링크를 만들 수 없으며 파일에 데이터를 쓸 수 없습니다. 수퍼유저 또는 CAP_LINUX_IMMUTABLE 기능이 있는 프로세스만 이 속성을 설정하거나 지울 수 있습니다.

폴더가 루트에 속하지 않은 경우에도 작동합니다. 그냥 사용

chattr +i /tmp/badfolder

chattr -i /tmp/badfolder이를 삭제하고 -R재귀적으로 작업을 수행하는 데 사용됩니다 .

답변2

Fixman의 아이디어 외에도 자체 심볼릭 링크를 만들 수도 있습니다.

sudo ln -s foo /tmp

$ touch /tmp/foo/bar
touch: cannot touch ‘/tmp/foo/bar’: Too many levels of symbolic links

#Or
sudo mkdir -m 000 /tmp/foo  # create with mode 000, no permissions at all.

루트로 생성하면 루트가 아닌 악성 코드가 해당 파일을 삭제하거나 이름을 바꾸는 것을 방지할 수 있습니다.

모드 444(읽기는 하지만 쓰거나 실행하지는 않음)는 소프트웨어가 디렉토리를 나열할 수 없다고 불평하는 것을 방지합니다(귀하 ls -R /tmp또는 동등한 사람이 그렇게 하는 경우).

그러나 chattr루트킷 시도는 디렉터리가 생성되기 전보다 훨씬 적습니다.rm -rf /tmp/foo

관련 정보