PATH 환경 변수

PATH 환경 변수는 중요한 보안 제어입니다. 이는 명령을 찾기 위해 검색할 디렉토리를 지정합니다.

디폴트 시스템 전체 PATH 값은 /etc/profile 파일에 지정되며, 각 사용자에게는 일반적으로 사용자의 $HOME/.profile 파일에 PATH 값을 가지고 있습니다. .profile 파일의 PATH 값은 시스템 전체 PATH 값을 재정의하거나 기타 디렉토리를 이 값에 추가합니다.

PATH 환경 변수에 대한 권한 없는 변경을 수행하면 시스템에서 사용자가 다른 사용자(루트 사용자 포함)를 "속이도록" 합니다. 위장 프로그램(트로이 목마 프로그램이라고도 함)은 시스템 명령을 대체한 다음, 이 명령에 대한 정보(예: 사용자 비밀번호)를 캡처합니다.

예를 들어, 명령이 실행될 때 시스템이 /tmp 디렉토리를 먼저 검색하도록 사용자가 PATH 값을 변경한다고 가정해 보십시오. 그러면 사용자는 su 명령처럼 루트 비밀번호를 요청하는 su라는 프로그램을 /tmp 디렉토리에 배치합니다. 그런 다음 /tmp/su 프로그램은 루트 비밀번호를 사용자에게 메일로 보내고, 종료하기 전에 실제 su 명령을 호출합니다. 이 시나리오에서, su 명령을 사용한 모든 루트 사용자는 루트 비밀번호를 누출하며, 심지어 누출한 사실조차도 알지 못합니다.

시스템 관리자와 사용자가 PATH 환경 변수에 대한 문제를 차단하려면 다음을 수행하십시오.

  • 의심될 때는 전체 경로 이름을 지정하십시오. 전체 경로 이름이 지정되는 경우, PATH 환경 변수가 무시됩니다.
  • 현재 디렉토리(.(점)으로 지정됨)를 루트 사용자에 대해 지정된 PATH 값에 넣지 마십시오. 현재 디렉토리를 /etc/profile 에서 지정할 수 있도록 허용하지 마십시오.
  • 루트 사용자는 개인용 .profile 파일에 자신의 PATH 사양을 가지고 있어야 합니다. 일반적으로 /etc/profile의 사양은 모든 사용자에 대한 최소 표준을 나열하는 반면, 루트 사용자는 디폴트보다 많거나 적은 디렉토리를 필요로 할 수 있습니다.
  • 다른 사용자가 시스템 관리자에게 문의하지 않고 .profile 파일을 변경하지 않도록 경고하십시오. 그렇지 않은 경우, 예상치 못한 사용자가 의도하지 않은 액세스를 허용하도록 변경할 수 있습니다. 사용자 .profile 파일에는 740으로 설정된 권한이 있어야 합니다.
  • .profile 파일에 지정된 사용자의 PATH 값이 유효하기 때문에, 시스템 관리자가 사용자 세션에서 루트 특권을 확보하기 위해 su 명령을 사용해서는 안됩니다. 사용자는 자신의 .profile 파일을 설정할 수 있습니다. 시스템 관리자는 루트 사용자 또는 가능한 경우 자신의 ID를 사용하여 사용자 머신에 로그인한 후에 다음 명령을 사용해야 합니다.
    /usr/bin/su - root

    이는 세션 중에 루트 환경이 사용됨을 보장합니다. 시스템 관리자가 다른 사용자 세션에서 루트로 작업하는 경우 시스템 관리자는 세션에서 모두 전체 경로 이름을 지정해야 합니다.

  • 입력 필드 구분 기호(IFS) 환경 변수가 /etc/profile 파일에서 변경되지 않도록 보호하십시오. .profile 파일에 있는 IFS 환경 변수는 PATH 값을 변경하기 위해 사용될 수 있습니다.