저는 두 대의 컴퓨터를 동기화하기 위해 NTP를 사용하여 네트워크 시간을 변경하는 응용 프로그램을 개발했습니다. root
후자만이 Linux에서 시간과 날짜를 변경할 수 있기 때문에 다음 과 같이 실행됩니다 .
이제 사용자로 실행하고 싶습니다. 하지만 시간이 좀 필요해요.
- 루트가 아닌 사용자 계정으로 데몬을 실행하는 것이 좋은 습관입니까?
- 지원서에 a를 줄 수 있나요?능력예를 들어
CAP_SYS_TIME
? - 보안 취약점이 발생하지 않을까요?
- 더 좋은 방법이 있나요?
답변1
루트가 아닌 사용자 계정으로 데몬을 실행하는 것이 좋은 습관입니까?
예, 이것은 매우 흔한 일입니다. 예를 들어 Apache는 루트로 시작한 다음 새 프로세스를 분기합니다.www-데이터(기본적으로).
앞서 언급했듯이 프로그램이 해킹된 경우(예: 코드 삽입) 공격자는 루트 액세스 권한을 얻을 수 없지만 해당 특정 사용자에게 부여한 권한으로 제한됩니다.
"CAP_SYS_TIME"과 같은 "기능"을 부여해야 합니까?
사용을 피하는 것이 좋습니다.사용자 ID 설정, 이 특정 기능에 대한 권한을 제한합니다.
"모범 사례"로 간주되는 다른 방법을 사용해야 합니까?
다음을 통해 보안을 강화할 수 있습니다.
- 셸이 필요하지 않은 권한 없는 사용자로 서비스를 실행합니다.
- 사용chroot사용자를 홈 디렉터리에 잠급니다.
답변2
- "모범 사례"로 간주되는 다른 방법을 사용해야 합니까?
강력하고 반박할 수 없는 이유가 없다면 GNU/Linux 배포판과 함께 제공되는 NTP 패키지만 사용해야 합니다. 표준 NTP 데몬은 성숙하는 데 수년이 걸렸으며 시스템 시계를 네트워크 또는 GPS 시계와 동기화하기 위해 속도를 늦추거나 높이는 등의 정교한 기능을 갖추고 있습니다. 시계를 동기화하도록 설계되었으므로 가능합니다.예이 목적을 위한 최고의 도구입니다.
ntpd
아직도 유지되고 있고,최근 업데이트로 판단해 보면(이 글을 쓰는 시점에서). 더 많은 기능이 필요하다면 개발자에게 직접 연락하여 그들의 말을 받아들이는 것이 좋습니다.
답변3
기능을 수행할 수 있어야 하는 프로그램이 있는 경우엑스 (예: 시계 조작) 기능을 수행할 수 있는 권한/권한을 부여할 수 있습니다.엑스알파벳 수프 한 캔을 통째로 주는 것보다 더 좋은 것은 없습니다. 이것은 ... 불리운다최소 권한의 원칙. 프로그램에 버그(일반적인 프로그래밍 오류 또는 악용 가능한 보안 허점)가 있으면 어떻게 됩니까? "루트"로 실행하면 모든 사람의 파일을 삭제하거나 공격자에게 보낼 수 있습니다. 프로그램이 하는 유일한 일이 있다면할수있다시계를 조작하는 것입니다(잠긴 디렉터리의 파일을 조작하는 등의 권한 없는 기능도 포함). 프로그램이 제어할 수 없는 경우 최악의 시나리오입니다.