Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

rbash 완벽 가이드 – 실제 예제로 배우는 제한된 Bash 셸

리눅스 셸(Linux Shell)GNU/Linux 기반 도구 중 가장 매력적이면서도 강력한 도구 중 하나입니다. X 윈도우를 포함한 모든 애플리케이션이 셸 위에서 구동되며, 리눅스 셸은 시스템 전체를 정밀하게 제어할 수 있을 만큼 막강한 기능을 지니고 있습니다. 하지만 그만큼 명령어의 결과를 모른 채 또는 무심코 시스템 명령을 실행하면 심각한 피해를 초래할 수 있다는 위험성도 함께 안고 있습니다.

이러한 문제는 특히 리눅스에 익숙하지 않은 초보 사용자에게 더욱 크게 다가옵니다. 이를 방지하기 위해 등장한 것이 바로 '제한된 셸(Restricted Shell)'입니다. 이번 글에서는 제한된 셸이 무엇인지, 어떤 제약 사항이 적용되는지 자세히 살펴보겠습니다.

rbash란 무엇인가?

제한된 셸(Restricted Shell)은 이름 그대로 bash 셸의 일부 기능을 제한하는 리눅스 셸입니다. 이 제약은 제한된 셸에서 실행되는 명령어와 스크립트 모두에 동일하게 적용되며, 리눅스의 bash 셸에 추가적인 보안 계층을 제공합니다.

rbash에 적용되는 제약 사항

  1. cd 명령어(디렉터리 변경)
  2. PATH 설정 및 해제
  3. ENV(BASH_ENV) 환경 변수 설정 및 해제
  4. 함수 가져오기(import)
  5. '/'가 포함된 파일 이름 지정
  6. '-'가 포함된 파일 이름 지정
  7. '>', '>>', '>|', '<>', '>&', '&>'를 이용한 출력 리다이렉션
  8. 'set +r' 또는 'set +o'를 통한 제한 해제

참고: rbash의 제약 사항은 시작 파일(startup file)을 모두 읽은 후에 적용됩니다.

제한된 셸 활성화하기

일부 GNU/Linux 배포판(예: Red Hat/CentOS)에서는 rbash가 기본으로 제공되지 않아 심볼릭 링크를 직접 생성해야 할 수 있습니다.

# cd /bin

# ln -s bash rbash

요즘 대부분의 표준 GNU/Linux 배포판에는 rbash가 기본적으로 포함되어 있습니다. 만약 포함되어 있지 않다면 소스 tarball을 내려받아 직접 빌드해 설치할 수도 있습니다.

rbash 시작하기

리눅스에서 rbash 제한된 셸을 시작하려면 다음 명령어를 실행합니다.

# bash -r

또는

# rbash

참고: rbash가 정상적으로 시작되면 반환값 0을 돌려줍니다.

몇 가지 제약 사항 테스트하기

rbash 셸에서 몇 가지 명령어를 실행해 제약이 실제로 적용되는지 확인해 보겠습니다.

# cd

rbash: cd: restricted
# pwd > a.txt

bash: a.txt: restricted: cannot redirect output
제한된 셸의 장점
  1. 제한된 셸은 chroot 감옥(jail)과 함께 사용되어 시스템 전체에 대한 접근을 한층 더 효과적으로 제한할 수 있습니다.
제한된 셸의 단점
  1. 완전히 신뢰할 수 없는 소프트웨어의 실행을 허용하기에는 보안이 충분하지 않습니다.
  2. 셸 스크립트로 판별된 명령이 실행될 때, rbash는 해당 스크립트를 실행하기 위해 새로 생성된 셸에서 모든 제한을 해제합니다.
  3. 사용자가 rbash 안에서 bash나 dash를 실행하면 제한 없는 일반 셸을 얻게 됩니다.
  4. 자신이 수행하는 작업을 정확히 이해하고 있지 않다면, rbash는 반드시 chroot 환경 안에서만 사용해야 합니다.
  5. 제한된 bash 셸을 탈출하는 방법은 매우 다양하며, 사전에 예측하기 어려운 경우가 많습니다.

결론

rbash는 제한된 환경에서 작업하기에 훌륭한 도구로, 실제로도 놀랄 만큼 안정적으로 작동합니다. 직접 사용해 보시면 결코 실망하지 않으실 겁니다.

오늘은 여기까지입니다. 다음에도 여러분이 즐겁게 읽으실 수 있는 흥미롭고 유익한 주제로 다시 찾아오겠습니다. 소중한 피드백은 댓글로 남겨주세요.