requiretty를 비활성화해도 괜찮습니까?


39

Capistrano를 사용하여 배포 스크립트를 설정하려고 합니다 단계 cap deploy:setup스크립트에서 서버에 연결하고 디렉토리를 만드는 명령을 실행하려고합니다. 그런 다음 오류가 나타납니다.msudo: sorry, you must have a tty to run sudo

내 서버에서 requiretty를 비활성화하는 제안 된 솔루션이 있습니다. https://unix.stackexchange.com/a/49078/26271

안전한지 궁금합니다.

답변:


40

requiretty서버에 대한 보안상의 이점은 매우 제한적 입니다. 루트가 아닌 코드를 악용하는 경우 (예 : PHP 스크립트)이 requiretty옵션은 악용 코드가를 실행하여 권한을 직접 업그레이드 할 수 없음을 의미합니다 sudo.

공격자가 루트를 얻는 또 다른 방법이있을 수 있으며, 물론 공격자는 여전히 사이트를 손상시킬 수 있지만, 공격자가 루트를 얻지 못하게하면 다른 사용자로 실행중인 다른 서비스가 계속 정상적으로 실행되고 공격자가 시스템 로그를 지울 수 없습니다. 당신의없는 경우는 sudo규칙이 할 수없는 디렉토리를 작성하는 등의 위험한 아무것도 이것은 문제가되지 않습니다.

또한 requirettytty를 만드는 데 특권이 필요하지 않습니다 (예 : expect 등) . 따라서 requiretty자체적으로 전원을 끌 수도 있습니다 . 보안 상 이점이 없습니다. 사용자가 로그를 실행할 때 (로그를 호출 한 사람 sudo과 출처를 더 잘 알기 때문에) 사용자가 실행할 때 경미한 감사 가능성 이점을 제공 하지만 백그라운드 작업에서는 실행되지 않습니다.


1
사용자가 실행할 수 있다면 expect(또는 screen예를 들어) requiretty보안 관점에서 쓸모 없다는 것을 의미 합니까? (나는 당신이 그 문장에서 "
부패

@ GeorgesDupéron 그렇습니다. 누구나 tty를 만들 수 있으므로이 requiretty옵션을 사용하면 다른 사람이 sudo를 사용할 수 없습니다.
Gilles 'SO- 악마 그만'

3
requirettyssh를 통해 비밀번호를 요구하는 sudo 명령을 실행하는 경우 사용자가 일반 텍스트로 비밀번호를 유출하지 못하게 할 수 있습니다. 사용자가 ssh -t를 호출하도록 강요합니다.
Chris Betti

1
@Chris Betti-왜 ssh -t를 적용하는 것이 좋은가요?
Rop

당시 필자의 생각은이 경우 암호를 묻는 원격 sudo 명령을 실행하는 경우 콘솔을 통해 암호를 일반 텍스트로 채우는 것보다 원격 컴퓨터의 askpass 프로그램을 사용하는 것이 좋습니다. 암호를 입력 할 때 암호가 화면에 표시되는 상황을 막는 것 외에 강화 된 보안을 제공하는지 잘 모르겠습니다. Askpass 프로그램이 tty 또는 pseudo-tty 없이는 호출되지 않을 것이라고 생각했습니다.
크리스 베티
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.