ssh-agent 그룹 소유권이 루트가 아닌 이유는 무엇입니까?

ssh-agent 그룹 소유권이 루트가 아닌 이유는 무엇입니까?

ssh-agent에 sgid 비트가 있는 이유를 이해하려고 노력하고 이 기사를 찾았습니다.ssh-agent에 sgid가 있습니다

또 다른 질문이 있습니다. 왜 ssh-agent의 그룹 소유권이 루트가 아닌 다른 사람입니까? 그 이유는 무엇입니까? 그룹 소유권이 루트인 경우에도 계속 작동합니까?

답변1

setgid root인 경우 에이전트는 root시작된 사용자보다 더 광범위한 권한을 가질 수 있는 그룹으로 실행됩니다. 이는 최소한 보안 위험이 될 수 있습니다.불필요하게 루트로 무언가를 실행하는 것은 위험 신호입니다.(그룹이라도) 특별한 주의가 필요합니다.

그룹 소유권을 로 설정합니다 nobody. 그룹에는 의미 있는 권한이나 첨부 파일이 없어야 합니다.ssh-agent사용자가 시작한 것보다 더 많은 권한을 얻지 못함. 연결된 질문에서 알 수 있듯이 실제로 다른 권한이 필요하기 때문이 아니라 처음부터 추적기를 방지하도록 설정되어 있습니다. 내부에다른 질문에서 연결된 토론 스레드, 한 개발자는 다음과 같이 언급했습니다.

이 그룹은 영향력이 거의 없는 것 같습니다. 바이너리가 anygroup으로 설정되어 있다는 사실이 중요합니다.

nobody이 편리한 그룹은 동작 자체가 아닌 setgid의 부작용만 원할 때 사용할 수 있습니다.

나는 그것이 setgid 루트와 함께 계속 작동할 것이라고 생각합니다. 방금 여기에서 시도했는데 전혀 불평하지 않았고 대략적인 테스트에서는 작동하는 것 같았습니다. 즉, 그런 형태로 바꿀 실질적인 이유가 생각나지 않습니다. 모두가 nobody그룹보다 그룹 형태로 더 잘 뛰는 것 같습니다 root.

어떤 경우에도 패키지 관리자가 설치한 파일에 대한 권한을 변경하지 않는 것이 좋습니다. 왜냐하면 패키지 관리자는 자신이 제어하는 ​​파일을 수정하는 것을 불편해하는 경향이 있기 때문입니다.

답변2

setgid를 설정하는 목적 ssh-agent은 동일한 사용자로 실행되는 프로세스라도 메모리에서 키를 덤프할 수 없도록 프로세스를 디버깅할 수 없게 만들어 보안을 향상시키는 것입니다.

ssh-agent실제로는 추가 권한이 없어야 합니다. 에 취약점이 있는 경우 ssh-agent그룹으로 설정하면 사용자에게 해당 그룹에 대한 권한이 부여됩니다. 따라서 ssh-agentsetgid를 실행하면 보안 위험이 증가합니다... 실행 중인 그룹에 ssh-agent실제로 권한이 없는 경우, 특히 파일에 대한 쓰기 액세스 권한이 없는 경우는 예외입니다.

다른 프로그램에 영향을 주지 않고 setgid 프로그램을 실행하는 가장 좋은 방법은 비공개 그룹을 사용하는 것입니다. 예를 들어, 데비안이 하는 일이 바로 ssh-agent그룹으로 실행하는 것 입니다 ssh. Fedora는 그룹을 사용하는데 nobody, 이는 더 위험하지만 어떤 파일도 그룹에 속해서는 안 되기 때문에 여전히 괜찮습니다 nobody. 이 그룹은 root많은 파일을 보유하고 있으므로 좋지 않은 생각입니다.

관련 정보