쉘 스크립트만 실행할 수 있는 제한된 사용자를 설정하는 방법은 무엇입니까?

쉘 스크립트만 실행할 수 있는 제한된 사용자를 설정하는 방법은 무엇입니까?

SLES12와 같은 SSH를 통해 Linux 시스템에 로그인할 수 있고 SSH 로그인 후에 나타나는 쉘 스크립트만 실행할 수 있는 로컬 사용자를 생성하는 방법은 무엇입니까?

따라서 다른 사용자를 속여 777 파일을 읽거나 다른 명령을 실행하도록 할 수 없습니다.

쉘 스크립트는 내가 처리할 수 있는 sudo를 통해 명령을 실행하는 작은 메뉴 기반 항목입니다. 유일한 문제는 사용자의 제한입니다. 실제로 로그인 시 메뉴 기반 스크립트가 자동으로 표시되어야 하지만 그렇게 할 수 없어야 합니다. 예를 들어 "ssh user@linuxmachine "somecmd""를 통해 명령을 실행합니다.

답변1

command=서버측 파일의 플래그를 사용하여 이를 강제 할 수 있습니다 . authorized_keys에서 man sshd:

command="command"

이 키가 인증에 사용될 때마다 명령이 실행되도록 지정합니다. 사용자가 제공한 명령이 있는 경우 무시됩니다. 클라이언트가 pty를 요청하면 명령은 pty에서 실행되고, 그렇지 않으면 tty 없이 실행됩니다. 8비트 클린 채널이 필요한 경우 pty를 요청하지 않거나 no-pty를 지정해야 합니다. 백슬래시를 사용하여 명령 내에 따옴표를 포함할 수 있습니다.

이 옵션은 특정 공개 키가 특정 작업만 수행하도록 제한하는 데 유용할 수 있습니다. 예를 들어 원격 백업을 허용하지만 다른 것은 허용하지 않는 키가 있을 수 있습니다. 제한된 키 옵션 사용과 같이 명시적으로 금지되지 않는 한 클라이언트는 TCP 및/또는 X11 전달을 지정할 수 있습니다.

클라이언트가 원래 제공한 명령은 SSH_ORIGINAL_COMMAND 환경 변수에서 찾을 수 있습니다. 이 옵션은 셸, 명령 또는 하위 시스템 실행에 적용됩니다. 또한 이 명령은 sshd_config(5) ForceCommand 지시문으로 대체될 수 있습니다.

명령이 지정되고 해당 명령이 인증에 사용되는 인증서에 강제로 포함되는 경우 두 명령이 동일한 경우에만 인증서가 허용됩니다.

버전 제어에만 액세스하고 싶은 git, bzr 및 친구에 대한 SSH 액세스 설정에 대한 튜토리얼에서 이에 대한 많은 예를 찾을 수 있습니다.

sshd_config본질적으로 동일한 작업을 수행하는 지시문 도 있습니다 ForceCommand("클라이언트 및 ~/.ssh/rc(있는 경우)에서 제공하는 모든 명령을 무시하고 ForceCommand에 의해 지정된 명령을 강제 실행합니다. 이 명령은 사용자의 "-c 옵션을 사용하여 쉘"을 호출하기 위한 로그인 이름), 비밀번호 기반 로그인을 사용하는 경우에도 사용할 수 있으며 특정 소스 IP로 제한될 수 있습니다. 그러나 전역 서버 구성을 입력해야 하므로 잘 확장할 수 없습니다.

답변2

당신이 찾고 있는 것은 제한된 쉘입니다. rbash와 그에 수반되는 보안 문제를 조사하세요. 올바르게 설정하면 이것이 효과가 있을 수 있습니다. 더 나은 옵션은 가상 환경이나 감옥(운영 체제가 지원하는 경우)을 사용하는 것입니다.

답변3

예상되는 위협 수준은 무엇입니까? 메뉴 시스템이 우발적인 오용과 무계획적인 실험을 견딜 수 있을 만큼 충분합니까, 아니면 심각한 공격을 받을 수 있는 실제 가치를 보호하고 있습니까?

좀 더 캐주얼한 스펙트럼을 위해서는 다음과 같은 오래된 Unix 트릭으로 충분할 수 있습니다.

메뉴 스크립트가 인수 없이 실행될 수 있는지 확인하고 이를 추가한 /etc/shells다음 이를 사용하여 chsh해당 사용자의 셸에 메뉴 스크립트를 설정합니다.

사용자가 메뉴 스크립트에서 명령 모드로 전환할 수 없도록 해야 하지만, 사용자가 단순히 메뉴 스크립트를 중단하면 제한된 세션이 종료됩니다.

사용자가 다른 명령(예: 구문 사용 ssh <host> <command>)을 실행하려고 하면 메뉴 스크립트는 일반 쉘 대신 해당 명령을 실행하려고 시도합니다. 어떤 상황에서도 메뉴 스크립트가 매개변수를 사용하지 않으면 시도는 실패하고 사용자는 어쨌든 메뉴에 들어가게 됩니다.

이는 기존 비밀번호 기반 로그인에 적용됩니다. 전용 SSH 키 인증을 강제할 수 있는 경우 제안된 대로 파일 command=에 플래그를 지정합니다 .authorized_keys울리히 슈바르츠거의 같은 수준입니다.

관련 정보