linux - 취약점 - 포워드 프록시 와 리버스 프록시




Linux/UNIX와 같은 일반 텍스트 파일에서 네트워크 프록시 암호를 숨김 (6)

일반적으로 대규모 네트워크에서 컴퓨터는 인증 된 프록시 뒤에서 작동해야합니다. 외부 세계에 대한 모든 연결에는 사용자가 전자 메일, 워크 스테이션 등에 로그인하는 데 사용하는 암호 인 사용자 이름 / 암호가 필요합니다.

http_proxy, ftp_proxy ~/.profile 정의 된 http_proxy, ftp_proxyhttps_proxy 환경 변수뿐만 아니라 apt.conf 파일에도 네트워크 비밀번호를 입력해야합니다.

나는 apt.conf 를 사용하여 chmod 600 설정할 수 있다는 것을 알고 있습니다. (우분투 / 데비안에서는 기본적으로 그렇지 않습니다!)하지만 우리 시스템에서는 root priveleges가 필요한 사람들이 있습니다.

나는 또한 루트 액세스 권한을 가진 사람으로부터 패스워드를 확보하는 것은 기술적으로 불가능하다는 것을 알고 있지만, 우발적 인 발견을 막기 위해 패스워드를 모호하게 하는 방법이 있는지 궁금해하고있다. Windows는 관리자로 사용자와 함께 운영되지만 네트워크 암호 (아마도 레지스트리에 어딘가에 숨겨져있는 곳에 저장되어 있음)를 저장하므로 일반 텍스트로 일반 텍스트로 비틀 거리지 않도록 할 수 있습니다

전날에 한 번만 물어 봅니다. 시스템 전체의 구성 파일을 비교할 때 실수로 누군가이 암호를 발견했습니다.

@monjardin - 공개 키 인증은이 네트워크에서 대안이 아닙니다. 두려워요. 또한 명령 줄 도구의 대부분이 지원되는 것은 의심 스럽습니다.

@ 닐 - 웹 액세스 권한이있는 다른 사용자는 웹에 액세스하기 위해 내 자격 증명을 사용할 수 있습니다. 암호가 일반 텍스트로 나타나지 않도록하고 싶습니다.


공개 키 인증이 유효한 대안입니까?


사용하고있는 특정 도구가 난독 화 형식을 허용하지 않거나 요구 사항에 따라 흐리게 처리되는 워크 플로를 만들 수있는 경우가 아니면 운이 좋지 않을 수 있습니다.

이런 경우에 내가 본 한 가지는 서버 별, 사용자 별 또는 서버 별 / 사용자 별 전용 자격 증명을 만드는 것입니다.이 자격 증명은 특정 IP에서만 프록시에 액세스 할 수 있습니다. 핵심 난독 화 문제를 해결하지는 못하지만 암호가 너무 적어 누군가 암호의 영향을 완화합니다.

후자의 옵션에 관해서, 우리는 이와 같은 것을 위해 사용하는 "역 crypt"암호 인코딩을 생각해 냈습니다. pw를 해독하는 데 필요한 모든 데이터가 인코딩 된 문자열에 저장되기 때문에 난독 화가되지만 사람들이 실수로 암호를 일반 텍스트로 보는 것을 방지합니다. 예를 들어, 위의 암호 중 하나를이 형식으로 저장 한 다음 apt.conf를 동적으로 작성하고 실제 apt를 호출하고 apt.conf를 종료 할 때 apt.conf를 삭제하는 apt에 대한 래퍼를 작성할 수 있습니다. 평범한 텍스트로 잠시 동안 pw로 끝나지 만 창을 최소화합니다.


Gnome Keyring 과 통합되는 응용 프로그램을 선호하십시오. 또 다른 가능성은 외부 시스템에 SSH 터널을 사용하고이를 통해 앱을 실행하는 것입니다. 단일 서빙 -L 전달보다는 로컬 SOCKS 프록시 인터페이스를 만드는 -D 옵션을 살펴보십시오.


패스워드를 모호하게하는 많은 방법이 있습니다 : 당신은 rot13 포맷이나 BASE64로 크리 덴셜을 저장하거나 CVS가 사용하는 것과 동일한 패스워드 - 스크램블 알고리즘 을 사용할 수 있습니다. 실제 트릭은 응용 프로그램이 스크램블 알고리즘을 인식하도록합니다.

~/.profile 에있는 환경 변수의 경우 인코딩 된 내용을 저장 한 다음 변수를 설정하기 전에 디코드 할 수 있습니다 (예 :

encodedcreds="sbbone:cnffjbeq"
creds=`echo "$encodedcreds" | tr n-za-mN-ZA-M a-zA-Z`

그러면 credsfoobar:password 설정되고 http_proxy 등으로 임베드 될 수 있습니다.

나는 당신이 이것을 알고 있다고 생각하지만 그것은 반복 될 것입니다 : 이것은 어떠한 보안도 추가하지 않습니다. 실수로 다른 사용자의 암호를 보는 것을 막을 수 있습니다.


나는 당신이 로컬 프록시를 만들 수 있다고 가정하고,이 툴들을 가리키고, 그러면 로컬 프록시가 대화식으로 사용자에게 외부 프록시 패스워드를 물어 보도록 요구할 것이다. 필요에 따라 난독 화 된 내부 저장 장치에서 몇 분 동안 이것을 기억할 수 있습니다.

확실한 공격 경로는 권한이있는 사용자가이 로컬 프록시를 수정하여 입력 된 비밀번호로 다른 작업을 수행하는 것입니다 (전자 메일 클라이언트 나 윈도우 시스템 자체와 같은 다른 작업과 마찬가지로).하지만 적어도 ' 부주의 한 관찰로부터 안전 할 것.


다음 접근 방식을 사용하면 프록시 암호를 일반 텍스트로 저장할 필요가 없습니다. http / https / ftp 액세스가 필요한 즉시 대화식으로 비밀번호를 입력하면됩니다.

  • openssl을 사용하여 일반 텍스트 프록시 비밀번호를 파일로 암호화합니다 (예 : AES256 암호화).

openssl enc -aes-256-cbc -in pw.txt -out pw.bin

  • 암호화 된 파일을 보호하기 위해 (다른) 암호를 사용하십시오.
  • 일반 텍스트 pw.txt 제거
  • ~ / .alias에 별칭을 만들어 http_proxy / https_proxy / ftp_proxy 환경 변수를 설정합니다 ($ USER / proxy / $ PORT에 적절한 값 설정).

별칭 myproxy = 'PW =`openssl aes-256-cbc -d -in pw.bin`; PROXY = "http : // $ USER : $ PW @ proxy : $ PORT"; export http_proxy = $ PROXY; https_proxy = $ PROXY를 내 보냅니다. export ftp_proxy = $ PROXY '

  • 이 파일을 일반적인 쉘 환경에 저장해야합니다 (일부 시스템에서는 자동으로 수행됩니다)
  • 'myproxy'를 입력하고 파일 암호화에 사용한 openssl 암호를 입력하십시오.
  • 끝난.

참고 : 암호는 쉘 세션 기간 동안 사용자 환경 내에서 사용 가능 (및 읽을 수 있음)합니다. 사용 후 환경에서 정리하려면 다른 별명을 사용할 수 있습니다.

별칭 clearproxy = '내보내기 http_proxy =; https_proxy = 내보내기; export ftp_proxy = '





apt