루트가 아닌 사용자 계정으로 데몬을 실행하는 것이 좋습니다?


13

NTP를 사용하여 네트워크 시간을 변경하고 두 대의 컴퓨터를 동기화하는 응용 프로그램을 개발했습니다. rootLinux에서는 시간과 날짜를 변경할 수 있기 때문에 로 실행됩니다 (추측).

이제 사용자로 실행하고 싶습니다. 그러나 나는 시간에 접근해야한다.

  • 루트가 아닌 사용자 계정으로 데몬을 실행하는 것이 좋습니다?
  • 응용 프로그램에 다음 과 같은 기능을 제공해야 CAP_SYS_TIME합니까?
  • 보안 취약점이 발생하지 않습니까?
  • 더 좋은 방법이 있습니까?

일반적으로 NTP 데몬은 ntp최소한 Linux 시스템에서 사용자 계정 으로 실행되므로이 ​​변경을 수행 할 필요가 없습니다. 어떤 NTP 패키지를 설치 했습니까?

6
루트가 아닌 계정으로 데몬을 실행하는 것을 "루트 권한 삭제"라고하며 데몬에서 보안 취약점의 잠재적 손상을 제한하기 때문에 일반적으로 알려진 모범 사례입니다.

1
" 권한 분리 "에 대해서는 Wikipedia를 참조하십시오 .
Kusalananda

소스에서 NTP를 컴파일했습니다. NTP 그룹이 없습니다
Anonymous12223

@xhaltar NTP 그룹과 사용자를 만들 수 있습니다. 서비스 시작 방법 (사용자, 그룹 등)을 구성하려면 서비스 초기화 스크립트를 작성 / 편집하거나 시스템 단위를 작성 / 구성 할 수 있습니다.
Pl4nk

답변:


15

루트가 아닌 사용자 계정으로 데몬을 실행하는 것이 좋습니다?

예, 이것은 일반적입니다. 예를 들어 Apache는 루트로 시작한 다음 새 프로세스를 www-data (기본적으로) 로 분기 합니다.
앞에서 언급했듯이 프로그램이 해킹 된 경우 (예 : 코드 삽입) 공격자는 루트 액세스 권한을 얻지 못하지만이 특정 사용자에게 부여 된 권한으로 제한됩니다.

"CAP_SYS_TIME"과 같은 "기능"을 제공해야합니까?

setuid 사용을 피하고 권한을이 특정 기능으로 제한하기 때문에 좋은 생각 입니다.

"좋은 방법"으로 간주 될 다른 방법을 사용해야합니까?

예를 들어 보안을 강화할 수 있습니다.

  • 쉘없이 권한없는 사용자로 서비스를 실행하십시오.
  • chroot 를 사용 하여 홈 디렉토리에서 사용자를 잠그십시오.

주의 : Chroot는 루트이고 Linux에서 실행중인 경우 보안을 제공하지 않습니다. 루트 사용자는 chroot에 디렉토리를 만들고, chroot의 루트 디렉토리를 열고, chroot를 새 디렉토리로, chdir을 실제 루트로, chroot를 실제 루트로 되돌릴 수 있습니다. BSD는 디렉토리 fd를 chroot로 가져 가지 못하게하여이를 수정합니다.
Kevin

@Kevin 루트 인 경우 chroot 외부에서 프로세스를 ptrace 할 수 있으며이를 우회하는 다른 방법이 많이 있습니다. 단순한 chroot는 루트를 유지할 수 없습니다.
Gilles 'SO- 악의

//, emp.jar.st는 실제로 보안상의 이유로 사용자를 생성합니다. 아주 좋은 연습입니다.
Nathan Basanese 2016 년

USER 인 경우 USER를 특정 디렉토리에 잠글 수 있습니까? "/ opt"와 같은 (예 :)?
Anonymous12223

@xhaltar USER디렉토리에서 실행되는 프로세스를 잠 그려면 chroot루트 사용자로 실행하십시오. 그러나 먼저 jail (디렉토리)을 작성하고 초기화해야합니다 . 즉, 프로세스에 필요한 라이브러리 및 바이너리를이 감옥에 배치 한 다음을 호출해야 chroot <path/to/jail> <command>합니다. 필요한 예제가 포함 된 유용한 자습서가 여기에 있습니다.
Pl4nk

13
  • "좋은 방법"으로 간주 될 다른 방법을 사용해야합니까?

강력하고 반박 할만한 이유가 없다면 GNU / Linux 배포판과 함께 제공되는 NTP 패키지를 사용해야합니다. 표준 NTP 데몬은 성숙하기까지 몇 년이 걸렸으며 네트워크 또는 GPS 시계와 동기화되도록 시스템 시계 속도를 늦추거나 빠르게하는 등의 정교한 기능을 제공합니다. 동기화 시계에 맞게 조정되었으므로 해당 용도에 가장 적합한 도구 일 가능성 높습니다 .

ntpd(이 게시물을 쓰는 현재) 최신 업데이트로 판단하여 여전히 유지 관리 됩니다 . 더 많은 기능이 필요한 경우 개발자에게 직접 연락하여 그에 대한 의견을 신뢰하십시오.


5

당신이 프로그램이있는 경우 요구 기능을 수행 할 수 있음을 X를 (예를 들어, 시계를 조작), 당신은 그것을 기능을 수행 할 수있는 권한 / 전원 줄 수있는 X 그것을 알파벳의 전체 캔을주는 것보다 더와 아무것도를, 수프. 이것을 최소 권한원칙 이라고합니다 . 프로그램에 버그가있는 경우 일반적인 프로그래밍 오류 또는 악용 가능한 보안 취약점을 고려하십시오. "루트"로 실행중인 경우 모든 사람의 파일을 제거하거나 공격자에게 보낼 수 있습니다. 프로그램이 할 수 있는 유일한 일이 시계를 조작하는 것 (그리고 잠겨있는 디렉토리의 파일을 조작하는 것과 같은 권한이없는 기능)이라면, 프로그램이 악의적 인 경우 발생할 수있는 최악의 상황입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.