.ovpn 파일은 트래픽을 보내는 것만이 아니라 코드를 실행할 수도 있습니다
up 또는 down 도우미를 지정하는 프로필은 당신의 권한으로 코드를 실행합니다. 경로, 소유권, 정리, script-security 설정을 확인하십시오.
대부분의 사람은 .ovpn 파일을 라우터 설정 페이지를 읽듯 읽습니다. 주소, 경로, 암호 목록. 코드를 실행하는 부분은 파일 아래쪽, 배관 작업처럼 보이는 지시문 옆에 있으며, 클라이언트가 이미 가진 권한으로 실행됩니다. 그 틈을 부주의하거나 악의적인 프로필이 이용하고, 그 틈이 유용한 DNS 도우미를 삼 주 뒤 지원 문제로 바꿉니다. 이벤트 지시문, 보안 수준, 파일 소유권이 무슨 일이 일어날 수 있는지를 정하고, 스크립트 내용이 실제로 무슨 일이 일어나는지를 정합니다. 연결하기 전에 네 가지를 모두 읽으십시오.
도우미를 실행하는 프로필은 설정 파일이 아니라 프로그램입니다
route와 dhcp-option 같은 지시문은 클라이언트가 세워야 할 상태를 설명하며, 클라이언트는 이를 데이터로 다룹니다. up 스크립트는 다릅니다. 클라이언트가 이를 프로세스로 띄우고 연결 세부 정보로 가득한 환경을 넘기므로, 작성자가 쓴 것은 무엇이든 당신 계정의 권한으로 실행됩니다. 사용자가 관리자인 노트북에서는 첨부 파일로 오거나 포럼 스레드에서 붙여 넣은 파일에게 넓은 문입니다. 구분은 문체의 문제가 아니라 설정과 코드의 차이입니다.
접어야 할 통설은 프로필이 트래픽을 우회시키는 일만 할 수 있다는 것입니다. ip route add를 실행하는 도우미와 원격 호스트를 향해 curl을 실행하는 도우미는 같은 메커니즘이며, 겉에서 본 프로필은 동일합니다. 파일의 겉모습으로는 어느 쪽인지 알 수 없으므로 검토는 스크립트 자체까지 닿아야 합니다.
무엇이 실제로 실행을 정하는가, 그리고 이를 가능하게 하는 줄의 모습
도우미를 좌우하는 것은 세 가지입니다. 이름을 붙이는 이벤트 지시문, 이를 허용하는 script-security 수준, 그리고 클라이언트 플랫폼 자체의 구현입니다. 프로필이 훅을 요청해도 아무 일도 일어나지 않을 수 있습니다, 모바일 클라이언트나 줄인 데스크톱 빌드가 그 이벤트를 아예 구현하지 않을 수 있기 때문입니다. 마찬가지로 기능에 필요한 것보다 많은 권한을 요청하는 프로필은 그 출처에 대해 무언가를 말해 줍니다. 권한 수준은 능력이지 승인이 아닙니다. 이를 가능하게 하는 줄은 이렇게 생겼고, 경로는 당신의 것을 대신합니다.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.sh수준 0은 외부 프로그램을 거부하고, 기본값인 수준 1은 클라이언트에 내장된 실행 파일만 허용하므로 훅에는 2 이상이 필요합니다. 수준 3은 주로 옛 암호 전달을 위해 존재하며 피하는 편이 좋습니다. 훅과 함께 배포된 프로필은 지시문과 그 수준을 모두 필요로 하므로, 파일 아래쪽의 한 줄은 인증서 블록만큼 세심한 검토를 받을 자격이 있습니다. OpenVPN 설명서는 권한 수준을 나열하며, 그 문구는 프로필이 실제로 요구하는 것과 나란히 읽을 만합니다.
소유권, 경로, 그리고 도우미가 무엇을 먹는가
당신이 신뢰하지만 다른 계정이 다시 쓸 수 있는 스크립트를 가리키는 프로필은 믿을 만한 배열이 아닙니다. 어제의 검토는 오늘 무엇이 도는지 더 이상 설명하지 않기 때문입니다. 도우미의 소유자와 모드를 확인하고, 설정된 경로가 당신이 살펴본 파일로 이어지며 다른 무언가가 가릴 수 있는 이름으로 이어지지 않는지 확인하십시오. 인수와 환경도 같은 시선을 받아 마땅합니다. 클라이언트는 연결 세부 정보를 훅에 넘기고, 환경 전체를 기록하는 도우미는 지원 티켓에 자격 증명을 적고 있을 수 있습니다. 관련 없는 게시물에서 복사한 DNS 스크립트보다 운영자나 플랫폼이 문서화한 통합을 선호하십시오, 같은 파일을 두고 다투는 두 해석기 관리자는 고장 난 VPN처럼 보이는 실패를 낳습니다.
실패한 훅을 보고할 때는 어디에 붙이기 전에 환경을 가리십시오. 디버깅에 도움이 되는 덤프는 당신을 인증하는 토큰도 함께 담고 있을 수 있습니다.
정리 실패는 터널이 사라진 뒤에 나타납니다
up 도우미는 경로와 해석기 설정을 더하고, down 도우미가 그것을 다시 걷어내야 합니다. down 훅이 없거나, 조용히 실패하거나, 클라이언트가 죽어서 한 번도 실행되지 않으면 남은 것들이 세션보다 오래 살아남습니다. 그러면 트래픽은 아무도 계획하지 않은 길로 가고 이름은 제거되었어야 할 해석기를 통해 풀리며, 터널 자체는 건강해 보입니다. 그런 증상은 연결이 끊긴 뒤에 오기에 프로필이 아니라 네트워크가 비난받습니다.
해체를 별도의 단계로 시험하십시오. 터널을 올리고 경로와 해석기를 적은 뒤 내리고, 그다음 둘 다 사라졌는지 확인하십시오. 깨끗하게 연결하는 프로필도 상태를 남길 수 있고, 도우미의 종료 코드 영은 해석기가 당신이 생각하는 곳에 도착했다는 증거가 아닙니다.
도우미를 검토하고 출구를 남기기
스크립트를 처음부터 끝까지 읽으며 세 가지를 찾으십시오. 권한이 필요한 명령, 당신의 시스템에 없을 수 있는 하드코딩된 경로, 그리고 그것이 하는 모든 네트워크 호출. 그다음 어떻게 실패하는지 보십시오. 오류를 삼키는 도우미는 설정 실수를 수수께끼로 바꿉니다. 스크립트가 무엇을 하고 누가 바꿀 수 있는지 한 문장으로 말할 수 없다면, 그것을 켤 준비가 되지 않은 것입니다. 그 문장이 요구하는 것보다 많은 권한을 요청하는 프로필은 멈추라는 신호입니다.
마지막으로 작동한 프로필과 그것이 가리키던 도우미를 보호된 저장소에 두고 두 버전을 모두 기록하십시오, 그러면 되돌리기는 최악의 순간에 재구성하는 일이 아니라 복사가 됩니다. 도우미가 더 이상 필요로 하지 않는 배포판이나 클라이언트 버전을 위해서만 존재한다면, 오류가 멈출 때까지 권한을 높이는 대신 그 설정을 소유한 구성에서 은퇴시키십시오. 그것이 출구입니다: 움직이는 부품을 줄이는 것이지 권한을 늘리는 것이 아닙니다.