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 값을 변경할 수 있습니다.