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.