루트가 아닌 사용자 계정으로 데몬을 실행하는 것이 좋습니다? 컴퓨터를 동기화하는

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

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

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


답변

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

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

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

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

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

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

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

답변

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

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

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


답변

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


답변