클라이언트에서 실행되도록 서버에서 스크립트를 푸시하는 방법은 무엇입니까?

클라이언트에서 실행되도록 서버에서 스크립트를 푸시하는 방법은 무엇입니까?

더 이상 연결할 수 없고 물리적으로 쉽게 액세스할 수 없는 장치(ssh, salt 등)가 있지만 여전히 내 서버에 대한 OpenVPN 세션이 열려 있습니다. 이를 복구하기 위해 다음을 수행하고 싶습니다.

  • 서버에서 이 클라이언트에 대해 강제로 다시 연결
  • 클라이언트가 다시 연결될 때 - 클라이언트가 실행할 스크립트를 푸시합니다(먼저 로그 및 구성 덤프를 통해 무슨 일이 일어나고 있는지 확인한 다음 올바른 설정을 복구할 수 있습니다).

에 대한 솔루션이 있습니다클라이언트가 연결되면 클라이언트에서 실행될 스크립트그러나 모두 이것이 클라이언트의 선택이라고 가정합니다(= 구성은 클라이언트 측에 있습니다). 나는 다른 방법을 찾고 있습니다.

보안 문제가 이러한 접근 방식이라는 것을 알 수 있지만(VPN 공급자가 클라이언트 시스템을 장악할 수 있음) 문서에서 명확하지 않은 방법이 있을 수 있습니까?

답변1

클라이언트가 강제로 다시 연결되도록 하려면 다음을 수행하세요.

  • 다음을 사용하여 특정 소스 IP 주소와 소스 포트 조합을 삭제합니다.iptables~에산출체인 또는 대상 주소 및 대상 포트입력ping-restart 간격보다 긴 시간 동안
  • OpenVPN 관리 인터페이스에서 지정된 클라이언트를 종료합니다:여기를 보아라
  • 서버에서 OpenVPN 서비스를 다시 시작하면 위의 모든 작업이 새로운 대칭 키 교환, 새 소켓 및 새 dst 포트 번호를 강제로 적용합니다.

스크립트를 실행할 수 없는 이유:

  • 당신은 여기서 운이 좋지 않습니다. 스크립트는 구성되어 클라이언트 측에 위치해야 합니다. AFAIK 심지어 OpenVPN의 ccd도 이를 허용하지 않습니다. 서버가 다음과 같은 가장 기본적인 터널 옵션을 가져올 수 있도록 하려면 클라이언트 측에도 적절한 "풀" 구성 지시문이 필요합니다. , 버퍼 크기, 압축, 경로 등이지만 스크립팅 구성 지시문은 아닙니다.
  • 기본 구성에서 OpenVPN은 아무도 권한 없이 작동합니다.
  • 이것은 보안 구멍이 될 것입니다.

관련 정보