파일 시스템에서 데이터 숨기기

파일 시스템에서 데이터 숨기기

ls -a일부 파일을 찾을 수 없도록 숨기고 싶습니다 . 나는 '.'을 추가하는 것에 대해 말하는 것이 아닙니다. 파일 이름 앞에. 해당 파일에 액세스하기 위해 별도의 시스템 호출을 만들 수 있는지 생각하고 있었습니다. 실제로 필요한 것은 사용자로부터 일부 로그 파일을 숨기는 것입니다. 일부 파일의 MAC 데이터를 저장하고 있는데 사용자가 해당 로그 파일을 볼 수 없도록 하고 싶습니다. 현재 나는 데이터를 숨기는 한 가지 방법, 즉 '.'를 추가하는 방법만을 알고 있습니다. 파일명 앞에. 그러나 사용자는 간단한 호출만으로 파일을 볼 수 있습니다 ls -a. 그렇다면 해당 로그 데이터를 숨길 수 있는 다른 방법이 있는지 알고 싶습니다.

답변1

다른 사람들이 지적했듯이, 이것의 목적이 영구 파일에 대한 액세스를 방해하는 것이라면 이를 숨기는 것은 아마도 잘못된 접근 방식일 것입니다. 이 경우 애플리케이션에서 이를 보증하는 경우 적절한 액세스 제어 방법이나 암호화를 사용하는 것이 해결책이 될 수 있습니다. 반면에 "숨겨진" 만들기일시적인파일은 완벽하게 합법적인 사용 사례입니다.

Linux에서는 커널 버전 3.11부터open()시스템 호출은 O_TMPFILE이름 없는 임시 파일을 생성하는 데 사용할 수 있는 플래그를 지원합니다. 이 플래그를 사용하면경로명인수는 open()이름 없는 inode가 생성되는 디렉터리를 지정하는 데 사용됩니다. 그러나 의 주요 사용 사례는 O_TMPFILE이름에서 알 수 있듯이일시적인파일의 경우, 파일에 이름을 지정하지 않는 한 파일에 대한 마지막 파일 설명자가 닫히면 파일이 손실되므로 영구 저장소에는 적합하지 않습니다. 파일 이름은 다음과 같이 지정될 수 있습니다.linkat()시스템 호출( O_EXCL에 추가로 플래그가 지정 되지 않은 경우 O_TMPFILE), 이 경우 파일을 파일 시스템에 연결하는 것이 금지됩니다.

최근 추가된 O_TMPFILE기능은 임시 파일에 다음 속성을 제공하는 데 사용할 수 있다는 점에서 중요합니다.

  1. 경쟁 조건이 없는 생성.
  2. 닫으면 자동 삭제됩니다.
  3. 어떤 경로 이름으로도 접근할 수 없습니다.
  4. 심볼릭 링크 공격을 받지 않습니다.
  5. 호출자가 고유한 이름을 고안할 필요가 없습니다.

또한 이 기능을 사용하면 처음에는 보이지 않는 파일을 생성할 수 있으며, 이때 파일을 하나의 원자적 작업으로 파일 시스템에 연결하기 전에 파일에 대한 적절한 파일 시스템 속성을 조정할 수 있습니다. 이는 특정 상황을 방지하는 데 사용될 수 있습니다.TOCTOU경쟁 조건.

플래그 의 단점은 O_TMPFILE파일 시스템의 하위 집합만이 플래그를 지원한다는 것입니다. 처음에는 ext2, ext3, ext4, UDF, Minix 및 shmem 파일 시스템에서 지원이 제공되었습니다. XFS 지원은 Linux 3.15에 추가되었습니다.

답변2

어떤 분리를 하든 루트는 여전히 액세스할 수 있으므로 실제로는 안전하지 않은 모호함을 통해서만 보안을 갖게 됩니다. 다른 사용자의 액세스를 숨기려면 해당 권한을 사용할 수 있습니다. 파일이나 디렉터리에 대한 읽기 권한을 거부하면 원하는 결과를 얻을 수 있습니다.

답변3

보안 연구원 The Grugq는 "주먹넣기", "파일 시스템 삽입 및 전복 기술". 그의 프리젠테이션은 EXT3 저널 파일, 디렉토리 파일 및 "배드 블록" 파일과 같은 이상한 위치에 파일 시스템을 배치한 것처럼 읽혔습니다. 이것은 모호함을 통해 보안을 권장하는 것처럼 보이지만 다음과 같은 작업을 수행할 수 있습니까? 저것?

답변4

다른 사용자(루트 포함)가 파일을 읽지 못하도록 하려면 해당 파일을 암호화할 수 있습니다. 파일 이름도 숨기려면 가짜 이름을 지정하거나 TrueCrypt와 같은 암호화된 파일 컨테이너를 사용하세요. 이 경우 파일 시스템이 마운트되면 루트로 파일에 계속 액세스할 수 있습니다.

관련 정보