/system
누군가가 읽기-쓰기 모드로 다시 마운트하려고 할 때 마운트 syscall을 차단하고 싶습니다 . 즉, 다음 실행을 허용하지 않겠다는 뜻입니다: mount -o remount,rw /system
. 커널에서 코드를 변경하려면 어디에서 찾아야 하는지 아는 사람이 있나요? 마운트와 관련된 일부 기능이 어디에 있는지 조사해 보았지만 /fs/namespace.c
확실하지 않습니다.
답변1
SELinux 또는 와 같은 것을 사용할 수 있지만 seccomp
전체 루트 권한을 사용하면 파티션을 마운트하지 않고 다른 불쾌한 작업을 수행하지 않고 파티션을 수정할 수 있으며 제한 사항을 우회하기 위해 커널 모듈을 로드할 수도 있으므로 그렇게 쉬운 일이 아닐 수 있습니다. 최소한 모든 일반적인 허점을 차단하는 포괄적인 규칙 세트가 필요합니다.
바이너리나 C 라이브러리를 수정하는 것은 mount
해결책이 아닙니다. 이미 만들어진 바이너리나 라이브러리를 거치지 않고 시스템 호출을 직접 호출하는 것이 오히려 간단하기 때문입니다.
SELinux와 일반적인 구획화 및 강화 수단을 사용하면 처음부터 루트에 침입하기가 더 어려워지며 이는 다른 이유로도 유용할 수 있습니다.
또한 해당 마운트 지점에 무엇이 있는지에 대한 질문이 있습니까? 그것이 이 시스템에만 관련된 것이라면 누군가가 그것을 수정할 수 있는지 여부가 중요합니까? 컴퓨터에 대한 전체 관리 액세스 권한을 얻으면 다른 모든 것을 엉망으로 만들고 백도어를 남겨두고 적어도 문제의 파티션을 파괴할 수 있습니다. 수정할 필요가 없을 것으로 예상하고 내용 손실을 방지하려는 경우 읽기 전용 저장소에 저장하는 것이 더 쉬울 것입니다. 그리고 백업을 하려고 합니다.
여러 시스템에서 해당 파일 시스템을 사용하는 경우 네트워크를 통해 마운트되었을 가능성이 높습니다. 이 경우 쓰기를 방지하는 것이 서버 측에서 수행되는 것이 더 좋으므로 커널이 읽기-쓰기 마운트를 시도하더라도 여전히 작동하지 않습니다.