한계

한계

아래 스크립트에 심각한 문제가 있으며 NOEXEC 및 RESTRICT로는 문제를 해결할 수 없다는 것을 알고 있습니다.

user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf

그러나 저는 이 두 가지 옵션에 대해 여전히 약간 혼란스럽습니다.

한계

많은 수의 프로그램이 셸 이스케이프 기능을 제공하므로 일반적으로 셸 이스케이프 기능을 제공하지 않는 어셈블리 집합으로 사용자를 제한하는 것은 불가능합니다.

이것이 왜 문제가 됩니까? 일반 사용자가 임의의 명령을 실행하도록 허용해서는 안 되기 때문에 일반 사용자를 쉘 이스케이프를 허용하지 않는 프로그램으로 제한하는 것은 sudoedit와 같은 것 같습니다. 이것이 sudoedit와 어떻게 다릅니까?

실행하겠다고 약속하다

noexec 기능은 SunOS, Solaris, *BSD, Linux, IRIX, Tru64 UNIX, MacOS X, HP-UX 11.x 및 AIX 5.3 이상에서 작동하는 것으로 알려져 있습니다.

시스템이 noexec를 지원할 수 있는지 확실하지 않은 경우 언제든지 noexec가 활성화되었을 때 쉘 이스케이프가 작동하는지 확인할 수 있습니다.

NOEXEC가 제대로 작동하는지 확인할 수 있는 좋은 방법이 있나요? 명령을 실행하는 것이 가장 안전한가요?

매뉴얼 페이지:http://www.sudo.ws/sudoers.man.html

답변1

한계

"쉘 이스케이프를 허용하지 않는 어셈블리에서 사용자를 제한하는 것은 일반적으로 작동하지 않습니다"라고 설명하면 표면적으로 단일 보안 작업을 수행하는 것처럼 보이지만 실제로는 사용자가 무엇이든 실행할 수 있도록 허용하는 프로그램에 일반적이라는 의미입니다. 다른 프로그램, 일반적으로 사용자에게 단일 명령에 대한 액세스 권한을 부여하면 실제로 원하는 명령을 실행할 수 있다고 가정해야 합니다.

일반적인 예는 텍스트 편집기일 수 있습니다. 사용자가 편집기에서 모든 파일(명령줄에 제공된 파일뿐만 아니라)을 열 수 있도록 허용하는 것 외에도 널리 사용되는 편집기에서는 사용자가 전체 셸을 시작할 수도 있습니다.

sudoedit 메커니즘은 특정 파일만 편집할 수 있는 편집기를 제공합니다(사용자에게 편집할 파일의 복사본을 제공하고 권한 있는 파일을 업데이트한 후에만 사용자가 직접 편집할 수 있도록 함). RESTRICT를 사용하여 사용자가 특정 파일(예: emacs)을 실행할 수 있도록 하려면 권한 있는 사용자로 실행 중인 emacs 편집기의 해당 사용자가 실제로 해당 사용자가 액세스할 수 있는 모든 파일을 편집하고 해당 사용자로 쉘을 시작할 수 있습니다.

실행하겠다고 약속하다

프로그램이 이런 방식으로 시작되면 일반 동적 라이브러리가 대체되어 새 셸 생성이 비활성화됩니다. 동적 실행 파일 less인 경우 less내부에서 셸 명령을 실행하려는 시도는 실패합니다. 특정 파일의 편집을 허용하려는 상황에서는 사용자가 sudoedit를 사용하는 것이 더 안전하고 더 나을 수 있습니다(이를 통해 자신의 편집기의 사용자 정의 설정에 액세스할 수 있기 때문입니다).

NOEXEC가 귀하의 시스템에서 실행되는지 여부를 확인하는 것과 관련하여 대상 프로그램이 실제로 동적으로 링크되어 있다면 문서에 나열된 모든 운영 체제에서 실행될 것이라고 가정합니다. 그러나 문서에서 알 수 있듯이 수동으로 확인하는 것이 좋습니다.

관련 정보