신화 또는 현실 : SELinux는 루트 사용자를 제한 할 수 있습니까? 인터넷 검색을 기반으로 강화 된

루트 사용자의 암호도 제공되는 온라인 Linux 서버가 있는지 어딘가에서 읽거나 들었습니다 ( LinuxCBT의 SELinux 과정에 있지만 확실하지는 않습니다). Linux 서버는 SELinux 규칙을 사용하여 강화되어 모든 사용자가 루트 사용자로 로그인 할 수 있지만 OS에 아무런 해를 끼치 지 않습니다.

나에게는 신화처럼 보이지만 나는 확신하고 싶다 : 루트 사용자조차도 특정 악의적 인 활동을 할 수 없도록 Linux 상자 (SELinux로 가능)를 강화 할 수 있습니까? (예 : 시스템 파일 삭제, 로그 파일 지우기, 중요한 서비스 중지 등)

이러한 리눅스 박스는 허니팟 을 구축하기위한 훌륭한 출발점이 될 것이다 .

편집 :
답변 (현재 삭제됨)과 약간의 인터넷 검색을 기반으로 강화 된 Linux 서버를 가리키는 링크가 두 개 이상 있습니다. 불행히도 두 서버가 다운되었습니다. 기록을 위해 여기에 설명을 복사하여 붙여 넣습니다.

1) http://www.coker.com.au/selinux/play.html에서 :

SE Linux 시스템에서 무료 루트 액세스!

root 로 play.coker.com.au에 데비안 플레이 머신 ssh에 액세스하려면 비밀번호는 …

이러한 머신을 성공적으로 실행하려면 많은 기술이 필요합니다. 당신이 하나를 실행해야하는지 물어봐야한다면 대답은 “아니오”입니다.

이것의 목적은 모든 필요한 보안이 Unix 권한없이 SE Linux에 의해 제공 될 수 있음을 보여주기위한 것입니다 (그러나 실제 서버에도 Unix 권한을 사용하는 것이 좋습니다). 또한 SE 시스템에 로그인하여 어떤 모습인지 확인할 수 있습니다.

SE Linux 재생 시스템에 로그인 할 때 -x 옵션을 사용하여 X11 전달을 비활성화하거나 로그인하기 전에 / etc / ssh / ssh_config 파일에서 ForwardX11 no를 설정 해야합니다. 또한 로그인하기 전에 -a 옵션을 사용하여 ssh 에이전트 전달을 비활성화하거나 / etc / ssh / ssh_config 파일에서 ForwardAgent no 를 설정 하십시오. 이 설정을 올바르게 비활성화하지 않으면 플레이 머신에 로그인하면 SSH 클라이언트를 통해 공격받을 위험이 있습니다.

이에 대해 논의하기위한 IRC 채널이 있으며 irc.freenode.net의 #selinux 입니다 .

빠른 FAQ입니다

2) http://www.osnews.com/comments/3731에서

강화 된 젠투 의 목적은 젠투를 높은 보안 성, 안정성이 높은 프로덕션 서버 환경에서 사용할 수 있도록하는 것입니다. 이 프로젝트는 젠투와 분리 된 독립형 프로젝트가 아닙니다. 강력한 보안과 안정성을 제공하는 솔루션을 젠투에 제공하는 데 중점을 둔 젠투 개발자 팀이 될 것입니다. 이 머신은 Hardened Gentoo의 SELinux 데모 머신입니다 . 기본 용도는 SELinux 통합 및 정책을 테스트하고 감사하는 것입니다.



답변

현실 : 예, SELinux는 루트 사용자를 제한 할 수 있습니다.

SELinux는 현재 Unix 사용자를 실제로 신경 쓰지 않기 때문에 가능합니다. 도메인 필드 를 포함하여 컨텍스트라는 추가 메타 데이터 만 있고 SELinux가 요청 된 조치를 승인 할 수 있는지 여부를 결정할 수 있습니다. 아니.

일반적으로 루트 사용자로 생각되는 것은 SELinux에서 unconfined_t또는 sysadm_tSELinux 도메인을 실행하는 루트 Unix 사용자로 SELinux에 매핑됩니다 . 고전적인 전능 한 전능 한 루트 사용자입니다.

그러나 제한된 사용자 user_tSELinux 도메인을 실행하는 루트 쉘 (루트 유닉스 사용자 쉘을 의미 함)을 생성하도록 시스템을 완벽하게 설정할 수 있습니다. SELinux 정책에 따라 이러한 셸은 다른 제한된 사용자 셸과 다르지 않으며 시스템에 대한 특별한 권한이 없으므로 루트 사용자를 효과적으로 제한합니다.

실험적인 관점에서 아파트는 말 그대로 그런 일을하는 것은 쓸모가 없지만, 비슷한 관행은 현실 세계에서 찾아옵니다. 전형적인 예는 데이터베이스 데몬을 중지 / 시작하거나 구성 파일을 편집 할 수 있어야하는 데이터베이스 관리자입니다. SELinux가 없으면 이러한 모든 조치를 수행하려면 사용자가 루트 권한으로 에스컬레이션해야합니다 (일반적으로 단일 권한 인 경우에도) sudo예를 들어, 공구를 통한 명령 행 .

SELinux 덕분에이 사용자에게 진정한 루트 셸을 제공 할 수 있지만 실행 unconfined_t또는 sysadm_t도메인 대신 도메인을 실행 dbadm_t합니다. 이는 제한된 사용자보다 더 많은 권한을 가지지 만 이러한 새로운 권한은 데이터베이스 서버를 관리하는 데 필요한 것으로 제한됩니다.이 사용자는 다른 서비스, 파일을 조작하거나 다른 관리 명령을 실행할 수 없습니다. 그의 일을 엄격히 요구했다.

같은 방법으로 웹 서버와 다른 서비스 관리자가 동일한 시스템에서 다른 루트 셸을 병렬로 실행할 수 있습니다. 모든 사용자는 현재 Unix 사용자가 root 인 것을 볼 수 있지만 SELinux 덕분에 각각의 다른 권한을 다른 사람에게 제한적으로 제한합니다. 그들 자신의 목적을 위해 필요합니다 .


답변

네 가능합니다. 그러나별로 유용하지는 않습니다.

이론적으로 루트 사용자가 악의적 인 목적으로 사용될 수있는 바이너리를 실행하지 못하도록하여 SELinux와 같은 것을 통해 정책을 시행 할 수 있습니다. 그러나 이것은 루트 사용자가 처음에 무언가를 할 수 없어도 SELinux 정책을 변경하거나 제거하기 위해 다른 방법을 사용할 수 있다는 문제가 있습니다. 이 문제로 인해 루트 사용자가 작업을 전혀 수행하지 못하게함으로써 매우 유용하지 않게됩니다.


답변

루트 사용자조차도 특정 악의적 인 활동을 수행 할 수 없도록 Linux 상자 (SELinux로 가능)를 강화할 수 있습니까?

이것은 저렴하게 들릴 수 있지만 쉽습니다. 사용자 루트의 uid를 0이 아닌 값으로 변경하십시오. / etc / passwd 및 / etc / shadow로 이동하여 기존 uid = 0 항목을 “root”에서 다른 것으로 수정 한 다음 uid가 0이 아니고 사용되지 않는 “root”라는 계정을 추가하십시오.

그것은없이 목적을 달성합니다. 또한 실제로 에스컬레이션 된 권한을 제공하지 않고도 누구나 “루트 액세스”권한을 가질 수 있다고 주장 하는 방법 입니다.