LSM 속성/상한 구현의 유틸리티나 사용법을 보는 데 문제가 있습니다.
나는 내 우려 사항과 질문을 표현하기 위해 몇 가지 유사 코드 조각을 함께 모았습니다. (p 3)의 다이어그램에 따라 모델링됩니다. https://www.kernel.org/doc/ols/2002/ols2002-pages-604-617.pdf
커널 액세스 확인(대략) 및 LSM 호출:
DAC
op:__? // ? what operation would pass a DAC check yet not the LSM hook ?
file:___
perms: u.. g.. o..
euid:100
egid:500
OK ----> LSM hook ( args )
1) I don't know the args here,
2) Regardless of the args I can't make out what operation would pass a DAC check
and be restricted here and why?
? read file ? allready handled by DAC
? network device ? allready handled by DAC, it's a file.
? execution ? x bit , allready handled
? executing a specific function ? no function call references here
? executing a specific syscall ? would be handled on exec on the target (read, write etc..)
?
**What exactly can the LSM hook accomplish here that DAC hasn't allready addressed ??**
Answers are welcome.
sp
나는 코더가 setuid 루트를 사용하지 않고 일부 CAP 속성을 사용하여 보다 안전한 권한 상승을 위해 이 작업을 수행하도록 하는 것에 대한 토론을 읽었지만 개인적으로 동작 변경에 의존하거나 권한 확인을 후킹하는 전문가는 아닙니다. 기계 보안 내가 실행 중인 코드의 무결성을 고려하면 나 혼자인 것 같습니다.
또한 이는 LSM의 의도가 아니라는 내용도 읽었습니다.여기
설계 문제는 해결되지만 현재 DAC 권한 확인의 정확한 목적은 여전히 불분명합니다. 후크가 있는 이유는 설명하지만 DAC보다 더 중요한 작업을 수행하기 위해 후크를 효과적으로 사용하는 방법은 설명하지 않습니다.
답변1
이 기능은 setuid와 유사한 권한 에스컬레이션 계층이지만 더 세분화되어 있습니다. 예를 들어 프로그램은 CAP_NET_RAW 권한을 얻기 위해 전체 루트 수준 액세스가 필요하지 않습니다. 이는 "필요한 최소한의 권한"과 서버 제어 측면에서 큰 진전이므로좋아요, 그러나 필수 액세스 제어는 아닙니다. 권한 상승입니다.
SELinux는 태그 개념과 태그 간 권한을 연구합니다. 따라서 httpd
프로세스에 "웹 서버" 레이블을 지정하고 웹 트리의 모든 파일에 "웹 파일" 레이블을 지정한 다음 "웹 서버 레이블이 있는 프로세스는 웹 파일만 읽을 수 있습니다."를 부여 할 수 있습니다.
이 레이블 구성은 기존 파일 시스템 권한 및 ACL 권한 위에 구성됩니다. 파일이 누구나 읽을 수 있는 경우에도 SELinux는부정적인그것에 액세스하십시오. 프로세스에 대한 액세스 권한을 부여하려면 DAC(파일 시스템 권한) 및 MAC(SELinux) 권한을 전달해야 합니다.
비즈니스 관점에서 볼 때 eTrust Access Control(또는 Control Minder 또는 지금은 무엇이라고 부르든, 원래는검색 엔진 최적화 시스템)은 또 다른 MAC 계층입니다. 이는 콘텐츠를 제어하기 위해 태그를 사용하지 않지만 경로로 정의된 규칙을 허용하고 해당 규칙이 규칙에 사용되는 경우 프로그램을 체크섬합니다. 이는 SELinux 태그보다 더 유연합니다(그리고 크로스 플랫폼입니다(예: Solaris, AIX, HPUX)). 다시 말하지만, 이는 파일 시스템 DAC 계층 위에 위치하며 양 당사자가 요청을 승인해야 합니다.