이전 항목: 기본 파일 규칙

다음 항목: setuid/setgid 프로그램 자동 정의


setuid 및 setgid 프로그램 보호

setuid(사용자 ID 설정) 프로그램은 UNIX에서 가장 많이 사용되는 프로그램입니다. setuid 프로그램을 호출하는 프로세스는 자동으로 setuid 프로그램 소유자의 ID를 얻습니다. setuid 프로그램의 소유자가 루트인 경우 일반 사용자는 setuid 프로그램을 실행하면 자동으로 슈퍼 사용자가 됩니다. setuid 프로그램이 시작되면 이 프로세스는 슈퍼 사용자가 권한을 갖는 모든 작업을 수행합니다. setuid 프로그램이 필요한 작업만 수행하도록 하십시오. setuid 프로그램 내의 백 도어 또는 셸은 사용자에게 시스템의 모든 것에 대한 액세스를 허용합니다.

CA ControlMinder은 PROGRAM 클래스를 사용하여 setuid 및 setgid 프로그램을 보호합니다. 설치 시 CA ControlMinder은 기본적으로 모든 프로그램 실행을 허용합니다. 데이터베이스에서 트러스트된 프로그램을 정의한 후 CA ControlMinder의 동작을 변경하여 setuid 또는 setgid 프로그램이 트러스트된 프로그램으로 정의되지 않은 경우에는 해당 프로그램을 실행하지 못하도록 할 수 있습니다. 예를 들어 /bin/ps(프로세스 상태 프로그램)를 setgid 프로그램으로 실행할 수 있게 하려면 다음과 같은 selang 명령을 사용하십시오.

newres PROGRAM /bin/ps defaccess(EXEC)

CA ControlMinder은 /bin/ps 프로그램을 트러스트된 프로그램으로 등록합니다. 그런 다음 해당 CRC, inode 수, 크기, 장치 번호, 소유자, 그룹, 사용 권한 비트, 마지막으로 수정한 시간 및 데이터베이스의 PROGRAM 클래스에 있는 레코드의 기타 디지털 서명(옵션)을 계산하고 저장합니다.

Watchdog은 프로그램의 CRC, 크기, inode 및 기타 특징을 정기적으로 확인합니다. 이러한 값이 변경되면 Watchdog은 트러스트된 프로그램 목록에서 프로그램을 제거하고 이러한 프로그램에 대한 액세스를 거부하도록 seosd에 요청합니다. 이렇게 하면 setuid 프로그램을 수정하거나 이동하여 프로그램을 잘못 사용하는 일은 없습니다. 예제 newres 명령에서 사용 권한은 데이터베이스에 정의되지 않은 사용자를 포함하여 모든 사용자가 /bin/ps 명령을 실행할 수 있게 합니다.

언트러스트된 setuid 프로그램은 UNIX 기반 운영 체제의 가장 위험한 보안 허점일 수 있습니다. 보안 관리자는 트러스트된 프로그램의 액세스 규칙을 사용함으로써 테스트와 점검을 통해 무결성이 확인된 트러스트된 프로그램에만 setuid를 사용하도록 제한할 수 있습니다. 하지만 모든 사용자가 트러스트된 실행 파일을 자동으로 시작할 수는 없습니다. 액세스 규칙으로 setuid 프로그램에 액세스가 허용된 사용자와 그룹을 명시적으로 지정해야 합니다. 예를 들어 다음과 같은 selang 명령 세트는 /bin/su의 실행을 시스템 부서 사용자(sysdept 그룹)에게만 권한을 부여합니다.

newres PROGRAM /bin/su defaccess(NONE)
authorize PROGRAM /bin/su gid(sysdept) access (EXEC)

별표(*)를 사용하여 데이터베이스에 정의된 모든 사용자를 지정합니다. 예를 들어 CA ControlMinder에 정의된 모든 사용자가 su 명령을 수행하도록 허용하려면 다음 명령을 입력합니다.

authorize PROGRAM /bin/su uid(*) access(EXEC)

이 설명은 setgid 실행 파일에도 적용됩니다.

nr 및 er 명령을 사용하여PROGRAM 클래스에서 setuid 및 setgid 프로그램을 등록할 수 있습니다. 비슷한 방법으로 setuid 및 setgid가 아닌 중요한 프로그램을 PROGRAM 클래스에 등록할 수 있습니다. 권한 없는 사용자가 이러한 프로그램을 업그레이드할 수 없도록 이러한 프로그램에 대한 파일 규칙을 정의합니다. 프로그램 실행이 언트러스트된 경우(프로그램이 업그레이드 이후 다시 트러스트되지 않고 실행된 경우) 프로그램 실행을 허용하려면 blockrun 속성을 no로 설정합니다.

blockrun 속성 값을 yes로 설정하려면 다음 editres/newres 명령을 사용합니다.

er program /bin/p blockrun

blockrun 속성 값을 no로 설정하려면 다음 editres/newres 명령을 사용합니다.

er program /bin/p blockrun-

기본적으로, PROGRAM 클래스에 등록된 모든 프로그램의 경우 blockrun 속성은 yes로 설정됩니다. eos.ini 파일에서 SetBlockRun 토큰을 사용하여 이 속성을 변경할 수 있습니다. 자세한 내용은 seos.ini 파일을 참조하십시오.

참고: CA ControlMinder은 FILE 클래스가 아닌 PROGRAM 클래스를 사용하여 setuid 및 setgid 프로그램을 보호합니다.