sudo proxychains vs. proxychains sudo: 순서가 중요한 이유
proxychains sudo가 가로채기 라이브러리를 잃을 수 있는 반면, sudo proxychains는 대상 실행 컨텍스트에서 래퍼를 시작하는 이유를 알아봅니다.
이 두 명령은 실행 경계가 같지 않습니다:
proxychains4 sudo command
sudo proxychains4 command
Proxychains-ng는 라이브러리가 대상 프로그램에 미리 로드되도록 합니다. 리눅스에서 sudo 같은 set-user-ID 프로그램을 실행하면 로더의 보안 규칙이 작동하여, sudo가 해당 변수를 보존하기 전에 관련 라이브러리 로딩 변수를 제거합니다.
따라서 "환경을 더 보존하기"는 sudo를 래퍼 안에 넣는 신뢰할 만한 해결책이 아닙니다. sudoers 매뉴얼은 LD_* 같은 변수가 sudo가 시작되기 전에 제거된다고 명시합니다.
명령이 정말로 대상 계정을 요구한다면 그 허가된 컨텍스트에서 래퍼를 시작하십시오. 그다음 어떤 설정을 읽는지 확인하십시오. sudo는 HOME, PATH, 그리고 해당 사용자별 파일을 바꿀 수 있습니다. 권한 없는 호출이 동작한다고 해서 root가 같은 프록시 목록을 선택했다는 증거는 아닙니다.
프로그램이 자체 프록시 인터페이스를 제공한다면 그것을 우선하십시오. 프로그램이 이미 라우팅 방법을 아는 요청에 대해 가로채기에 의존하지 않게 됩니다.
proxychains의 적용 범위 한계도 염두에 두십시오. 시작 메시지는 래퍼가 시작되었음을 증명하지만, 원시 패킷이나 지원되지 않는 호출, 또는 별도로 시작된 기존 애플리케이션 프로세스가 그 라이브러리를 사용했음을 증명하지는 않습니다. 프록시하려던 네트워크 작업 자체를 확인하고, root 권한을 모든 작업이 가로채였다는 증거로 삼지 마십시오.