분리 된 화면 세션에서 루트 쉘을 실행하는 것이 안전합니까?


20

분리 된 스크린 세션 내에서 루트 쉘을 실행하는 보안에 대해 궁금합니다. 나는 일반적으로 이것을하지 않습니다.

루트가 아닌 사용자 계정이 손상 될 가능성 (비밀번호 노출, ssh 키 손상 등)을 제외하고, 분리해야하는 암호로 보호 된 화면 세션에 대한 다른 입력 벡터가 있습니까? 세션이 비활성으로 간주됩니까?


나는 그것을 모르기 때문에 대답이 아니지만, 나는 당신이 말한 것처럼 행동하는 것과 직장을 떠나는 것 사이에 어떤 차이가 있다고 생각하지 않습니다 sudo.
phunehehe

7
@phunehehe 작업이 완료되면 sudo실제 루트 셸이 열려있는 동안 비활성화 되기 때문에 차이 가 있습니다.
Michael

답변:


5

"루트가 아닌 사용자 계정이 손상 될 가능성을 제외하고"는 다소 클 수 있기 때문에 보안 문제라고 생각합니다.

그러나 그 이상의 위험이 증가합니다. 예를 들어, 당신은 지금 이론적 자신을 하나의 화면 소켓 디렉토리의 권한을 변경할 수있는 악용 최대 연 ( /var/run/screen내 시스템에, 그러나 때때로 /tmp사용된다). 이 악용은 이제 루트를 얻는 경로를 가지게되며 그렇지 않은 경우도 있습니다.

sudo당신이하지 않고 각 명령에 사용하도록 스스로 훈련 할 수 있다면 다른 장점이 있습니다 sudo su -. 원격으로 로깅하지 않는 한 의미있는 보안을 향상 시키지는 않지만 수행 작업을 추적하는 작업을 기록합니다. 또한 모든 권한이 부여 된 세션으로 전환하지 않고 각 명령에 대해 의도적 인 에스컬레이션을 요구하여 사고를 예방합니다.


1
그러한 익스플로잇은 현재 알려져 있지 않지만 루트 쉘을 화면에 열어 두지 않을 것 입니다. 사용자 계정에 대한 위험은 충분합니다. 감사.
Michael

-1 파일 권한을 변경할 수있는 익스플로잇이있는 경우 실행중인 화면을 해킹 할 필요가 없습니다. 나는 시스템으로 원하는 것을 할 수 있습니다.
Let_Me_Be

@Let_Me_Be — 익스플로잇으로 변경할 수 있는 파일 권한 에 따라 다릅니다 . 특정 계층 구조에서는 몇 가지 특정 작업 만 수행 할 수 있습니다. 그것은 지금까지 가져온 것이 아닙니다.
mattdm

화면 자체는 공격 표면이 넓습니다. 나는 모든 공격을 보여주지 는 않지만 명확한 약점이 있습니다.
Gilles 'SO- 악의를 멈춰라'

내가 틀렸다면 나를 수정하지만 화면 응용 프로그램은 셸 세션 (시스템 콘솔에서 직접 또는 ssh 세션을 통해)으로 인터페이스됩니다. 내가 아는 한 네트워킹 프로토콜이 아닙니다. 따라서 ssh 세션이나 터미널 세션만큼 안전합니다. 일부가 ssh 세션 또는 실제 머신에 액세스 할 수있는 경우 모든 베팅이 해제됩니다. 사용자 계정에서 모든 종류의 명령 줄에 액세스 할 수있는 충분한 액세스 권한이있는 경우 어쨌든 컴퓨터 보안을 버릴 수 있습니다.
동기화되지 않음

10

화면 세션에 루트 셸이 있고 (분리 또는 암호로 보호되거나 screen실행 되지 않음) 실행 파일이 setxid가 아닌 경우 권한을 얻은 공격자는 해당 셸에서 명령을 실행할 수 있습니다. 다른 것이 없으면 화면 프로세스 를 찾아서 할 수 있습니다 .

screen이 setuid 또는 setgid이고 세션이 분리되어 암호로 보호 된 경우 원칙적으로 해당 쉘에서 명령을 실행하려면 화면 암호가 필요합니다. 이 원칙을 지키면 계정 만 손상된 사람은 트로이 목마를 설치하고 암호를 입력 할 때까지 기다려야합니다. 그러나 공격 표면 (즉, 버그 또는 구성 오류로 인해 문제가 발생할 수있는 곳의 수)은 불편합니다. 기본 시스템 보안 기능 외에도 다음을 신뢰합니다.

  • 암호를 확인하려면 화면을 확인하십시오.
  • 다른 방법으로 세션에 액세스하지 못하게하는 화면.
  • OS 액세스 제어 메커니즘을 올바르게 사용하는 화면 (예 : 파이프에 대한 권한)
  • 커널 ptrace 보안 점검을 올바르게 수행합니다 (이 취약점은 빈번한 취약점입니다).
  • 어리석은 짓을하지 않는 셸.
  • 당신을 물지 않는 다른 기능.

"당신을 물지 않는 다른 기능": 예, 모호합니다. 그러나 항상 보안 문제입니다. 당신은 이것을 단지 평범한 소망의 생각으로 무시하고 싶을 수도 있지만, 정말로 모든 것을 생각 했습니까? 예를 들어…

터미널 장치에 쓸 수있는 한 해당 쉘의 입력에 데이터를 주입 할 수 있습니다. 내 컴퓨터의 화면 기본 구성에서 :

printf '\ekfoo\017bar\e\\' >/dev/pts/33
printf '\e[21t' >/dev/pts/33

이것은 ␛]lfoobar␛l쉘의 입력 스트림에 삽입 됩니다. \ek응용 프로그램 (또는 터미널 장치에 쓸 수있는 모든 것)이 창 제목을 설정하고 ( 화면 설명서"이름 지정 창"섹션 참조 ) \e[21t터미널이 응용 프로그램의 표준 입력에 제목을보고하게하는 제어 순서입니다 ( screen은이 순서를 문서화하지는 않지만 그것을 구현합니다; xterm control sequence listCSI Ps ; Ps ; Ps ; t 에서 찾을 수 있습니다 . 실제로 적어도 screen 4.0.3에서는 모든 제어 문자가보고 된 제목에서 제거되므로 쉘은 읽습니다. ( 편집 명령에 구속되지 않는다고 가정 ) 개행 문자가 없으므로 공격자는 실제로 그런 식으로 명령을 실행할 수는 없지만 다음과 같은 명령을 입력 할 수 있습니다.lfoobar␛]chmod u+s /bin/sh 많은 공간과 가능성이있는 프롬프트가 뒤 따릅니다.

Screen은 여러 가지 유사한 위험한 제어 시퀀스를 구현하지만 취약점의 잠재력이 무엇인지 모르겠습니다. 그러나 지금까지 스크린 세션 암호로 제공되는 보호 기능이 그다지 크지 않다는 것을 알 수 있습니다. sudo와 같은 전용 보안 도구는 취약점이 적습니다.


+1 우수 답변. 시간을내어 설명해 주셔서 감사합니다.
Michael

1

화면으로 생성 된 파이프는 소유자 만 액세스 할 수 있으므로 보안 문제가되어서는 안됩니다.


5
당신은 아마도 "해야한다"는 문장의 첫 부분에서 "are"를 사용했습니다. 가정하는 습관을 들이지 마십시오.
Shadur

1
어? 화면에서 생성 된 파이프는 소유자 만 액세스 할 수 있습니다 (수동으로 chmod하지 않은 경우).
Let_Me_Be
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.