itunes.sh
:
#!/bin/sh
set -f
set -- $SSH_ORIGINAL_COMMAND
case "$1" in
/home/dimm0k/progs/scripts/*)
;;
*)
exit 1
esac
command="${1#/home/dimm0k/progs/scripts/}"
shift
case "$command" in
*/*)
# Simplest is to reject anything with a slash...
;;
.*)
# ...and anything starting with dot.
# If you need to whitelist subdirectories of /home/dimm0k/progs/scripts
# then you need much more sophisticated pathname parsing and care.
;;
*)
;;
esac
exec "/home/dimm0k/progs/scripts/$command" "$@"
rsync.sh
:
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected 1"
;;
*\;*)
echo "Rejected 2"
;;
rsync*)
$SSH_ORIGINAL_COMMAND
;;
*true*)
echo $SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected 3"
;;
esac
답변1
보안 목표를 정의하지 않았기 때문에 귀하의 질문은 의미가 없습니다. "안전하다"는 것은 아무 의미도 없습니다. 보안은 무엇을 위한 것입니까? 보안 목표는 "개인 키를 모르는 공격자는 시스템의 모든 파일에 액세스할 수 없습니다."(귀하의 구성표가 분명히 만족함) 또는 "해당 키를 제외하고 시스템에 액세스할 수 없는 공격자는 시스템에 액세스할 수 없습니다."와 같은 것입니다. 아래 파일에만 액세스 /home/dimm0k
하고 임의 명령을 실행하지 마십시오."(귀하의 시나리오가 만족되지 않음)
하지만, 여기에 여러분이 생각하지 못했을 수도 있는 몇 가지 사항이 있습니다.
itunes.sh
스크립트 에는 무언가가 거부되었다고 주장하는 주석이 있지만case
명령문에는 코드가 포함되어 있지 않으므로 전체 명령은case
작동하지 않으며 명령에 대한 유일한 필터링은 로 시작해야 한다는 것입니다/home/dimm0k/progs/scripts/
.rsync.sh
스크립트 에서는 자체 명령rsync
뿐만 아니라 로 시작하는 모든 명령을 허용합니다rsync
.rsync.sh
대본 에서 거절은 기이한 일&
이다;
. 문자열은 셸에서 평가되지 않으므로&
셸 구문의 의미와 셸 구문을 고려하면 관련이 없습니다.;
이 문자열이 쉘에 의해 실행되는 경우 다른 많은 문자, 특히`$|<>
.- 어느 스크립트에서든 호출자가 최종적으로 실행되는 명령에 임의의 옵션을 전달할 수 있습니다. 이것이
itunes.sh
허용하는 것은 에 무엇이 있는지에 따라 다르지만/home/dimm0k/progs/scripts/
좋지 않을 수도 있습니다.rsync.sh
예를 들어 옵션을 전달하여 임의의 명령을 실행할 수 있도록 하려면 이를 사용합니다-e
. - 사용자가 액세스할 수 있는 파일을 제한하는 일은 없습니다. 특히 사용자가
~/.ssh/authorized_keys
그 안에 있는 파일 에 쓸 수 있는 경우/home/dimm0k/progs/scripts/
명령으로 덮어쓴 다음 다시 로그인하여 업로드한 내용을 실행할 수 있습니다.
전체적으로 이 스크립트는 제가 본 어떤 보안 조치도 실제로 시행하지 않습니다. 보안을 위해 사용자가 임의의 명령을 실행할 수 있도록 허용하는 것으로 취급하십시오. 기능적으로 명령 수정은 이상하며 협력 사용자가 스크립트를 사용할 때 추가 이스케이프 오류가 발생할 수 있습니다.
사용자에게 몇 가지 제한 사항을 적용하려는 경우 유용한 작업을 수행할 수 없습니다. 직접 수행하는 것을 잊어버리고 다음과 같은 강력한 도구를 사용하십시오.RSSH또는스폴리. chrooting도 살펴보세요. 가능하다면 최소한의 권한이 있는 전용 계정을 사용하세요. 더 나은 격리를 위해 사용자가 컨테이너 또는 가상 머신 내에서만 로그인하도록 허용합니다.