답변:
실습은 응용 프로그램 당 하나의 사용자와 그룹을 만드는 것이 아니라 서비스별로 만드는 것입니다. 즉, 로컬 사용자가 실행하는 프로그램은 루트 이외의 사용자로 설치할 필요가 없습니다. 그것은 데몬 , 백그라운드에서 실행되는 프로그램이며 네트워크 또는 다른 통신 수단을 통해 오는 요청을 실행하는 전용 사용자로 실행되어야합니다.
데몬은 전용 사용자로 실행되므로 (버그로 인해 공격자에 의해 트리거 될 수있는) 오작동이 발생할 경우 피해가 제한됩니다. 데몬의 데이터 파일 만 영향을받습니다 (공격자가 로컬 루트 구멍을 찾지 못한 경우) 발생할 수 있습니다). 예를 들어, 데이터베이스 데몬 mysqld
은 전용 사용자 및 그룹으로 실행되며 mysql:mysql
데이터베이스 ( /var/lib/mysql/*
) 의 데이터 파일은에 속해 mysql:mysql
있습니다.
데몬 실행 파일과 데몬이 사용하지만 수정해서는 안되는 기타 정적 데이터 및 구성 파일은 전용 사용자에게 속하지 않아야합니다. root:root
대부분의 프로그램 및 구성 파일과 같이 가 소유해야 합니다. mysqld
과정에는 비즈니스 덮어 쓰기가 없습니다 /usr/sbin/mysqld
또는 /etc/mysql/my.cnf
이 파일이에 속하지 있어야하므로, mysql
설정 또는 사용자가 쓸 수 mysql
사용자 또는 mysql
그룹. 데몬과 관리자 만 일부 파일을 읽을 수 있어야하는 경우 사용자 루트와 전용 그룹이 소유하고 모드는 0640 ( rw-r-----
) 이어야합니다 .
소유 할 수없는 특수 범주의 실행 파일 root:root
은 사용자가 호출하지만 추가 권한으로 실행해야하는 프로그램입니다. 이러한 실행 파일은 루트로 (적어도 부분적으로) 실행해야하는 경우 setuid 루트 여야합니다 . 실행 파일에는 모드 4755 ( rwsr-xr-x
) 가 있어야합니다 . 프로그램에 루트 권한이 아닌 추가 권한이 필요한 경우 프로그램을 setgid하여 추가 권한이 사용자가 아닌 그룹을 통과하도록해야합니다. 실행 파일은 모드 2755 ( rwxr-sr-x
) 를 갖습니다 . 그 이유는 두 가지입니다.
좋은 습관으로 여겨지는 이유는 시스템의 다른 사용자가 특정 응용 프로그램의 데이터 및 구성 파일을 재정의하는 것을 방지하기위한 것입니다.
예를 들어 mysql
/ mysql
데이터베이스를 손상에서 응용 프로그램 API를 사용하지 않는 MySQL의 데이터베이스 파일을 방지 누구의 저장의 소유자 인. 또한 사용자 mysql
에게는 일반적으로 실제 셸이 없으므로 아무도 해당 사용자로 로그인 할 수 없습니다.
/usr/bin/at
소유daemon/daemon
at
데몬이 아닙니다. 개인 파일을 통해 데몬 daemon
과 통신 할 수 있도록 setuid atd
입니다.
새로 설치된 데몬에 대한 새 그룹 / 사용자를 만들면 보안이 향상됩니다. 서버 프로세스가 그러한 사용자에서 실행되면 해당 사용자의 액세스 권한으로 제한됩니다. 이에 비해 루트로 실행하면 모든 작업을 수행 할 수 있습니다.
이 차이는 데몬이 잘못 구성되었거나 보안 관련 버그가있는 경우 중요합니다.
질문의 두 번째 부분, 즉 /usr/local
소유권 에 관한 부분이 무엇을 의미하는지 잘 모르겠습니다 . 일반적으로 X
보안상의 이유로 데몬을 실행 하는 동일한 사용자 도 바이너리를 가진 디렉토리를 소유 한다는 것은 이해가되지 않습니다 (이 경우 익스플로잇시 변경 될 수 있기 때문에). 그러나 데몬이 작동하는 데이터 파일이있는 디렉토리에 액세스 할 수 있어야합니다. X
이를 구성하는 가장 쉬운 방법 X
은 데이터 디렉토리 / 파일의 소유자 를 만드는 것 입니다.
자체 특수 사용자로 데몬을 실행하는 것은 보안 기술 중 하나 일 뿐이며, 일종의 '루팅'또는 필수 액세스 제어 (MAC) 시스템 (예 : SELinux)을 사용하는 것도 있습니다.
이것은 보안 고려 사항입니다. 데몬 응용 프로그램에 침입 한 사람이 수행 할 수있는 손상을 제한합니다. 사용자 응용 프로그램은 일반적으로와 같은 표준 사용자 ID가 소유합니다 root
.
웹 서버, 메일 서버 및 데이터베이스가 모두 동일한 사용자로 실행되면 쉽게 손상시킬 수 있습니다. 이들 중 하나에 시스템 액세스를 허용하는 버그 또는 구성이 잘못된 경우 해당 액세스를 사용하여 세 응용 프로그램 모두에 액세스 할 수 있습니다.
권장 사항에 따라 모두 별도의 계정이있는 경우 손상된 응용 프로그램에만 액세스 할 수 있습니다. 다른 공개 구성 세부 사항을 읽을 수는 있지만 변경할 수는 없습니다.
많은 데몬은 사용자가 파일을 업로드 및 다운로드하고 다른 데몬의 구성에서 원하지 않는 일을 수행 할 수있게합니다. 각 응용 프로그램에 고유 한 사용자 ID와 그룹이 있으면 데몬을 보호하는 것이 더 간단합니다.
데몬 별 그룹이 있으면 파일과 디렉토리에 대한 읽기 전용 보안 액세스 권한을 데몬에 안전하게 부여 할 수 있습니다. 파일 또는 디렉토리가 다른 사용자가 소유하지만 데몬 그룹에 속하는 경우 일반적으로 읽기 전용으로 액세스 할 수 있습니다. 찾기와 같은 도구를 사용하여 액세스 권한을 쉽게 확인하고 수정할 수 있습니다.