일부 응용 프로그램에 대해 그룹과 사용자를 만드는 것이 권장되는 이유는 무엇입니까?


12

대부분의 경우 소스에서 프로그램을 설치할 때 새 사용자 및 새 그룹을 /usr/local/<myapp>작성하고 최근에 작성된 사용자 및 그룹 소유권을 부여 하는 것이 좋습니다 .

  • 그러한 실천이 왜 좋은 습관으로 여겨지 는가?

  • 무엇을 개선합니까?

예 : MySQL 데이터베이스 서버의 mysql user / mysql 그룹

답변:


11

실습은 응용 프로그램 당 하나의 사용자와 그룹을 만드는 것이 아니라 서비스별로 만드는 것입니다. 즉, 로컬 사용자가 실행하는 프로그램은 루트 이외의 사용자로 설치할 필요가 없습니다. 그것은 데몬 , 백그라운드에서 실행되는 프로그램이며 네트워크 또는 다른 통신 수단을 통해 오는 요청을 실행하는 전용 사용자로 실행되어야합니다.

데몬은 전용 사용자로 실행되므로 (버그로 인해 공격자에 의해 트리거 될 수있는) 오작동이 발생할 경우 피해가 제한됩니다. 데몬의 데이터 파일 만 영향을받습니다 (공격자가 로컬 루트 구멍을 찾지 못한 경우) 발생할 수 있습니다). 예를 들어, 데이터베이스 데몬 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) 를 갖습니다 . 그 이유는 두 가지입니다.

  • 사용자가 취약점을 악용 할 경우 프로그램이 사용하는 데이터 파일을 수정할 수는 있지만 트로이 목마 를 실행 파일에 삽입 하여 프로그램을 실행하는 다른 사용자를 공격 할 수 없도록 실행 파일 자체를 수정해서는 안됩니다. .
  • 실행 파일의 데이터 파일은 그룹에 속합니다. setuid 프로그램은 실제 사용자 (프로그램을 호출 한 사용자)와 사용자 및 실제 사용자 (프로그램이 실행중인 사용자)와 상호 작용하여 개인 데이터 파일에 액세스해야합니다 (그 이유) 추가 권한을 갖기 위해). setgid 프로그램은 또한 그룹에서만 액세스 할 수있는 사용자 별 데이터를 분리 할 수 ​​있습니다 (예 : 루트 및 프로그램 그룹에서만 액세스 할 수있는 디렉토리에 사용자가 소유 한 파일 저장).

3

일반적으로 응용 프로그램은 아니지만 이것이 적용되는 데몬입니다. 그 이유는 데몬이 root 대신 권한이없는 사용자로 실행될 수 있기 때문에 보안 취약점이 있고 손상된 경우 사용자가 액세스 할 수있는 영역에만 수행 할 수있는 손상이 포함됩니다.


1

좋은 습관으로 여겨지는 이유는 시스템의 다른 사용자가 특정 응용 프로그램의 데이터 및 구성 파일을 재정의하는 것을 방지하기위한 것입니다.

예를 들어 mysql/ mysql데이터베이스를 손상에서 응용 프로그램 API를 사용하지 않는 MySQL의 데이터베이스 파일을 방지 누구의 저장의 소유자 인. 또한 사용자 mysql에게는 일반적으로 실제 셸이 없으므로 아무도 해당 사용자로 로그인 할 수 없습니다.


중요한 점을 놓쳤습니다. 즉, 응용 프로그램이 실행되는 사용자 및 그룹이 중요하며 실행 파일 및 기타 정적 파일은 루트가 소유해야합니다.
Gilles 'SO- 악마 그만해'

@Gilles 루트가 소유 할 수 있으며 배포를 통해 설치된 대부분의 응용 프로그램은 필요하지만 반드시 그럴 필요는 없습니다. 사실 우분투의 /usr/bin/at소유daemon/daemon
Karlson

1
at데몬이 아닙니다. 개인 파일을 통해 데몬 daemon과 통신 할 수 있도록 setuid atd입니다.
Gilles 'SO- 악의를 그만두십시오'

1

새로 설치된 데몬에 대한 새 그룹 / 사용자를 만들면 보안이 향상됩니다. 서버 프로세스가 그러한 사용자에서 실행되면 해당 사용자의 액세스 권한으로 제한됩니다. 이에 비해 루트로 실행하면 모든 작업을 수행 할 수 있습니다.

이 차이는 데몬이 잘못 구성되었거나 보안 관련 버그가있는 경우 중요합니다.

질문의 두 번째 부분, 즉 /usr/local소유권 에 관한 부분이 무엇을 의미하는지 잘 모르겠습니다 . 일반적으로 X보안상의 이유로 데몬을 실행 하는 동일한 사용자 도 바이너리를 가진 디렉토리를 소유 한다는 것은 이해가되지 않습니다 (이 경우 익스플로잇시 변경 될 수 있기 때문에). 그러나 데몬이 작동하는 데이터 파일이있는 디렉토리에 액세스 할 수 있어야합니다. X이를 구성하는 가장 쉬운 방법 X은 데이터 디렉토리 / 파일의 소유자 를 만드는 것 입니다.

자체 특수 사용자로 데몬을 실행하는 것은 보안 기술 중 하나 일 뿐이며, 일종의 '루팅'또는 필수 액세스 제어 (MAC) 시스템 (예 : SELinux)을 사용하는 것도 있습니다.


1

이것은 보안 고려 사항입니다. 데몬 응용 프로그램에 침입 한 사람이 수행 할 수있는 손상을 제한합니다. 사용자 응용 프로그램은 일반적으로와 같은 표준 사용자 ID가 소유합니다 root.

웹 서버, 메일 서버 및 데이터베이스가 모두 동일한 사용자로 실행되면 쉽게 손상시킬 수 있습니다. 이들 중 하나에 시스템 액세스를 허용하는 버그 또는 구성이 잘못된 경우 해당 액세스를 사용하여 세 응용 프로그램 모두에 액세스 할 수 있습니다.

권장 사항에 따라 모두 별도의 계정이있는 경우 손상된 응용 프로그램에만 액세스 할 수 있습니다. 다른 공개 구성 세부 사항을 읽을 수는 있지만 변경할 수는 없습니다.

많은 데몬은 사용자가 파일을 업로드 및 다운로드하고 다른 데몬의 구성에서 원하지 않는 일을 수행 할 수있게합니다. 각 응용 프로그램에 고유 한 사용자 ID와 그룹이 있으면 데몬을 보호하는 것이 더 간단합니다.

데몬 별 그룹이 있으면 파일과 디렉토리에 대한 읽기 전용 보안 액세스 권한을 데몬에 안전하게 부여 할 수 있습니다. 파일 또는 디렉토리가 다른 사용자가 소유하지만 데몬 그룹에 속하는 경우 일반적으로 읽기 전용으로 액세스 할 수 있습니다. 찾기와 같은 도구를 사용하여 액세스 권한을 쉽게 확인하고 수정할 수 있습니다.


중요한 점을 놓쳤습니다. 즉, 응용 프로그램이 실행되는 사용자 및 그룹이 중요하며 실행 파일 및 기타 정적 파일은 루트가 소유해야합니다.
Gilles 'SO- 악마 그만해'

@Gilles : 그에 따라 주목하고 편집했습니다.
BillThor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.