내가 담당하는 시스템에 X를 설치하고 싶습니다. 예를 들어, 로컬 연결만 사용하여 실행할 계획입니다 startx -- -nolisten tcp
(현재로서는 이것이 기본값인 것으로 알고 있습니다).
비교적 오래된 보안 참고사항X Windows 보안 집중 강좌, 이는 디스플레이가 본질적으로 안전하지 않음을 의미합니다.
디스플레이를 실행하기 위해 "xhost -"를 사용하여 액세스 제어를 활성화하면 XOpenDisplay가 포트 번호 6000을 통한 시도를 방지할 수 있습니다. 하지만 도청자가 이 보호 기능을 우회할 수 있는 방법이 있습니다. 그가 당신의 호스트에 로그인할 수 있다면, 그는 로컬호스트의 디스플레이에 연결할 수 있습니다. ...물론 침입자는 시스템에 계정이 있어야 하며 특정 X 서버를 실행하는 호스트에 로그인할 수 있어야 합니다. 다수의 X 터미널이 있는 사이트에서는 X 디스플레이가 접근 권한을 가진 사람으로부터 안전하지 않다는 의미입니다. 호스트 시스템에서 프로세스를 실행할 수 있으면 해당 X 디스플레이에 연결할 수 있습니다.
여기서 의미하는 바는 네이티브 X 디스플레이에 기본적인 보안조차 제공할 수 있는 방법이 없다는 것입니다.
정말? 그렇지 않은 경우 이러한 일이 발생하지 않도록 고려해야 할 구성 설정이 있습니까?
답변1
당신이 읽고 있는 문서는 지난 세기의 문서입니다. 나는 이번 세기에 쿠키를 사용하지 않은 시스템을 사용한 기억이 없습니다(문서의 섹션 8에 명시되어 있음). 쿠키의 경우, X 서버에 연결할 때 응용 프로그램이 가장 먼저 해야 할 일은 "쿠키"를 제공하는 것입니다. 이 쿠키는 서버가 시작될 때 무작위로 생성되고 사용자만 읽을 수 있는 파일에 저장되는 비밀번호입니다. 응용프로그램은 쿠키 파일의 위치를 알고 있습니다. 이는 환경 변수의 값( XAUTHORITY
기본값은 ) 이기 때문입니다 ~/.Xauthority
. 프로세스가 쿠키를 읽을 수 있다면 이는 해당 프로세스가 귀하의 계정에 있는 개인 파일에 액세스할 수 있음을 의미하므로 X 서버의 보안은 다음과 같습니다. 논란의 여지가 있는 문제입니다.
이것이 기본 설정이므로 X 서버를 보호하기 위해 명시적인 단계를 수행할 필요가 없습니다.
다음과 같은 몇 가지 행동은 삼가해야 합니다.
- 분명히 쿠키 파일의 내용을 공개하지 마십시오.
- 도청자가 없을 것이라고 확신하는 신뢰할 수 있는 네트워크에 있지 않는 한 X 서버에 연결하기 위해 TCP를 사용하지 마십시오. (루프백 인터페이스는 훌륭합니다.) 누군가 TCP 연결을 스누핑하면 쿠키가 표시됩니다. 대신 SSH를 사용하고 X11 연결을 전달하도록 지시하십시오(
ForwardX11 yes
구성 파일의ssh -X
명령줄에서). - 컴퓨터 A(X 서버 실행)에서 컴퓨터 B로 SSH를 실행할 때 X11 전달이 활성화되면 원격 컴퓨터에서 사용자 계정으로 실행되는 응용 프로그램이 로컬 X 서버에 액세스할 수 있습니다. X 서버는 애플리케이션이 실행 중인 시스템을 기반으로 격리를 수행하지 않습니다. 이는 원격 관리자를 신뢰해야 함을 의미합니다.
애플리케이션이 X 서버에 접근할 수 있으면 귀하의 계정에 접근할 수 있는 것으로 간주됩니다. 일부 앱은 가장 확실한 키 입력 모니터링 및 삽입 기능을 비활성화하지만 일부 기능은 비활성화할 수 없습니다. X는 스크린샷 앱, 키보드 매크로 앱 및 신뢰할 수 없는 일부 임의 앱을 구분하지 않습니다. 신뢰할 수 없는 GUI 애플리케이션을 실행하려면 가상 머신에서 실행하거나(VM에 표시) 별도의 계정에서 실행하고 별도의 X 서버에 표시되도록 하세요.X 둥지.