보안되지 않은 핫스팟에서 인터넷을 안전하게 사용할 수 있도록 OpenVPN을 어떻게 설정합니까?


31

목표 : 노트북이 열린 핫스팟 / 액세스 포인트에 연결되어있는 동안 내 홈 PC를 통해 인터넷을 안전하게 사용할 수 있기를 원합니다.

내가 내가 SSH 터널 / SOCKS 프록시를 사용할 수 있다는 것을 알고 있지만, 나는 (심지어 가능하면, 그들이 그것을 사용하기) 응용 프로그램과 주변에 바이올린 싶지 않다. 필요한 것은 OpenVPN 설정이므로 다음 방법에 대한 자세한 가이드를 찾고 있습니다.

  1. OpenVPN 서버 설치 및 설정
  2. OpenVPN 클라이언트 (NetworkManager) 설정

이것이 작동하는 우분투 버전은 10.10과 11.04입니다.


이것은 내가 생각하는 우분투 질문보다 서버 오류 질문입니다.
Luis Alvarado

1
@Cyrex : 1) 2) 아마 아닐 것입니다
Lekensteyn

답변:


40

몇 달 전에 정확한 질문이 있지만 가능한 경우 IPv6 연결을 원했습니다. Serverfault에 대한 내 질문에 관심이있을 수 있습니다.

서버에 사용할 NIC ( "네트워크 인터페이스")가 하나뿐입니다. 설정에서 IPv6를 지원하기 위해 사용자 지정 스크립트를 실행해야하므로 NetworkManager로는 충분하지 않습니다. 그러나 간단히하기 위해 여기서 NetworkManager를 사용하고 IPv6 지원을 생략합니다.

먼저 인증 방법을 결정하십시오. SSL처럼 작동하는 더 안전한 인증서 방법을 사용하겠습니다. 핸드 셰이크 중에 세션에 사용될 공통 비밀이 선택됩니다. 다른 방법은 공유 키입니다. 사용자 이름과 비밀번호.

섬기는 사람

1. 준비

먼저 openvpn 서버를 설치하십시오. 이만큼 쉽습니다 sudo apt-get install openvpn. 어려운 부분은 구성하는 것입니다. 구성은에 /etc/openvpn있습니다.

2. 인증 구성

서버는 자신과 클라이언트를 식별하기위한 인증서가 필요합니다. 이 인증서는 CA (Common Authority)에서 검색됩니다. 인증서 및 관련 개인 키 생성은 모든 컴퓨터에서 수행 할 수 있으며 서버에서 수행 할 필요는 없습니다. 정말 편집증이라면 네트워크에 연결되지 않은 기계에서 수행하고 인증서를 전송하기 위해 메모리 스틱을 사용해야합니다.

서버에 대한 CA 및 인증서 작성

CA의 개인 키가 손상되지 않으면이 단계를 한 번 수행해야합니다. 이 경우 서버에서 승인 할 수있는 유효한 인증서를 만들 수 있으므로 보안 위반이 발생합니다.

공식 문서 의 관리를 할 제안합니다 /etc/openvpn. 나는 루트로 모든 것을 실행하는 큰 팬이 아니므로 다른 디렉토리에 넣을 것입니다.

  1. 다음을 실행하여 관리 디렉토리를 작성하고 파일을 복사하십시오.

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. 편집증이기 때문에 vars설정과 같이 필요에 따라 기본값을 편집하십시오 KEY_SIZE=2048.
  3. 다음을 실행하여 변수를로드하고 키 디렉토리를 작성하십시오.

    . vars
    
  4. 오류가 발생 No ... openssl.cnf file could be found Further invocations will fail하면를 실행 ln -s openssl-1.0.0.cnf openssl.cnf한 다음 . vars다시 실행 하십시오.

  5. 이 CA를 처음 사용하는 경우 키 환경을 준비하십시오. 마십시오 하지 당신이 이전에 생성 된 CA를 유지하려면이 명령을 실행 그렇게하려면 새로운 배포가 필요합니다 ca.crt.

    ./clean-all
    
  6. 를 실행하여 CA를 작성하십시오 ./build-ca. 원하는 세부 사항을 채울 수 있지만 클라이언트가 서버에 연결하면이 정보가 로그 파일에 표시됩니다. 그러면 파일 ca.keyca.crt하위 폴더 가 만들어 keys집니다. 모든 상황에서ca.key 파일을 비밀 유지하십시오 . 그렇지 않으면 키를 가진 사람이 서버에 연결할 수 있습니다.
  7. 이전 인증서가 손실되거나 만료 된 경우을 사용하여 이전 인증서를 먼저 취소해야합니다 ./revoke-full server. 그렇지 않으면 데이터베이스 오류가 발생합니다.
  8. 다음을 실행하여 서버의 인증서를 작성하십시오.

    ./build-key-server server
    

    비밀번호를 묻는 메시지가 표시되면 서버가 시작될 때마다 비밀번호를 입력 할 의향이 없으면 비워 두십시오 (권장되지 않음). 인증서 서명 및 커밋 확인 디렉토리에 두 개의 새 파일이 나타납니다 keys: server.keyserver.crt.

DH 및 tls-auth에 대한 준비 사용

다음을 사용하여 Diffie-Hellman 매개 변수를 생성하십시오 .

./build-dh

경화 팁 마다 사용하십시오 tls-auth. 이를 위해 다음을 사용하여 공유 비밀 키를 생성하십시오.

openvpn --genkey --secret ta.key

결과 파일 ( ta.key)도 클라이언트에 배포해야하지만 공개적으로 배치해서는 안됩니다.

클라이언트 용 인증서 생성

각 클라이언트에 대해 다음 단계를 반복해야합니다.

  1. CA 및 서버 인증서를 작성한 디렉토리를 입력하십시오.

    cd ~/openvpn-admin/easy-rsa
    
  2. 이미 CA 생성 단계를 건너 뛰었다면 변수를 먼저로드해야합니다.

    . vars
    
  3. 이전 인증서가 손실되거나 만료 되어 새 인증서를 작성하는 경우 이전 인증서를 먼저 취소해야합니다 ./revoke-full you. 그렇지 않으면 데이터베이스 오류가 발생합니다.
  4. 클라이언트 인증서 you.key와 해당 인증서를 작성하십시오 you.crt.

    ./build-key you
    

    CommonName고유해야합니다. 아직 10.10부터 지원되지 않으므로 KDE를 사용하는 경우 암호를 비워 두십시오. 서버 인증서 생성과 마찬가지로 인증서에 서명하고 변경 내용을 커밋했는지 확인하십시오.

3. OpenVPN 서비스 설정

기본적으로 OpenVPN은 연결을 수락 할 때 루트로 실행됩니다. 사악한 인터넷에서 서비스에 접근 할 수 있다면 좋은 생각이 아닙니다.

  1. OpenVPN 전용 사용자를 만듭니다 (예 openvpn:

    sudo useradd openvpn
    
  2. 파일 복사 server.key, server.crt, ca.crtdh1024.pem(또는 dh2048.pem당신은 키 크기를 변경 한 경우)에 키 디렉토리에서 /etc/openvpn. 400의 권한 (소유자에게는 읽기 전용)이 좋습니다.

    sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
    sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
    
  3. 파일 ta.key도 복사하십시오 .

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. 파일을 작성하고 /etc/openvpn/server.conf다음 행을 파일 에 넣으십시오.

    proto udp
    dev tap
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    push "redirect-gateway def1"
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    tls-auth ta.key 0
    # Compress data to save bandwidth
    comp-lzo
    user openvpn
    group openvpn
    persist-key
    persist-tun
    # Logs are useful for debugging
    log-append openvpn-log
    verb 3
    mute 10
    
  5. 적절한 권한을 설정하면 비밀 일 필요는 없지만 구성 세부 정보를 유출하지 않는 것이 좋습니다.

    sudo chmod 640 /etc/openvpn/server.conf
    

4. 서버 마무리

서버에서 인증서를 만든 경우이를 암호화하거나 서버에서 다른 곳으로 옮기는 것이 좋습니다. 어쨌든 ca.key및을 잃지 마십시오 server.key. 첫 번째 경우 다른 사람들이 서버에 연결할 수 있습니다. 후자의 경우 MITM 이 가능합니다.

고객

서버 IP 주소 외에 서버 관리자는 다음 파일을 전달해야합니다.

  • ca.crt: 인증서 확인을 위해
  • server.crt: 서버 확인 및 통신
  • ta.key: 보안 강화
  • you.crt: 서버로 자신을 식별
  • you.key: 비밀번호와 같으며 파일 권한은 400이어야합니다 (소유자에게는 읽기 전용)

1. 설치

OpenVPN 및 NetworkManager 플러그인을 설치하십시오 (KDE 및 Gnome에 적합).

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn 유니버스 저장소에 있습니다.

2. 구성

제어판에서 다음 세부 사항을 사용하십시오.

  • 게이트웨이 : 서버 IP 주소
  • 유형 : "인증서 (TLS)"(그놈) 또는 "X.509 인증서"(KDE)
  • CA 인증서 : 경로 ca.crt
  • 사용자 인증서 : 경로 you.crt
  • 개인 키 : 경로 you.key

에서 고급 :

  • 게이트웨이 포트 : 자동 (1194) (변경하지 않아도 됨)
  • LZO 데이터 압축 사용 : 사용
  • TCP 연결 사용 : 비활성화
  • TAP 장치 사용 : 활성화
  • 암호 : 기본
  • HMAC 인증 : 기본
  • TLS 인증 사용 : enabled
    키 파일 경로를 지정하고 ta.key"키 방향"을로 설정하십시오 1.
  • ( - 할 일을 체크 아웃하는 모든 트래픽이 VPN 연결을 통해 이동하므로 서버는 기본 게이트웨이를 밀어). 마지막으로 확인했을 때 network-manager-openvpn 플러그인이하지 않았습니다.

NetworkManager가 작동하지 않거나 사용하지 않으려면 파일 ( ca.crt, ...)을 /etc/openvpn넣고 파일 /etc/openvpn/client.conf파일을 작성 하십시오.

client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20

부팅시이 VPN을 활성화하지 않으려면 /etc/default/openvpn다음을 제거하여 다음 줄을 편집 하고 주석을 해제하십시오 #.

#AUTOSTART="none"

이 연결을 시작하려면 다음을 실행하십시오.

sudo /etc/init.d/openvpn start client

client구성 파일 이름이 없으면 이름을 바꿔야합니다 client.conf. 예 : 구성 파일 이름을 지정한 경우을 safe.conf실행해야합니다 sudo /etc/init.d/openvpn start safe.

OpenVPN을 중지하려면 다음을 실행해야합니다.

sudo /etc/init.d/openvpn stop

1
사용자 이름 / 암호 기반 로그인의 서버 구성은 무엇입니까? 여기서 클라이언트는 VPN 클라이언트를 설정할 지식이 없으므로 서버 IP, 사용자 이름, 비밀번호를 사용하기를 원합니다.

@YumYumYum 사용자 이름 / 암호를 사용하는 방법을 모르는 경우 openvpn ( man openvpn) 매뉴얼 페이지를보십시오 . 최신 버전의 openvpn에는 인증서와 키 파일을 포함 할 수있는 기능이 있으므로 해당 단일 구성 파일에 사용자에게 지침을 제공하는 것이 훨씬 쉽습니다.
Lekensteyn

최신 버전의 Ubuntu는 OpenSSL 1.0.1과 함께 제공되며 . vars위 명령을 실행하면 "openssl.cnf 파일을 찾을 수 있습니다. 추가 호출이 실패합니다" 라는 오류 가 발생할 수 있습니다. 당신은 할 필요가 sudo -s; cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/; ln -s openssl-1.0.0.cnf openssl.cnf, 다음 실행 . vars과 다른 명령.
Dan Dascalescu

@DanDascalescu이 스크립트 whichopensslopenssl-1.0.0.cnf나를 위해 파일을 올바르게 찾습니다 (easy-rsa 2.3.2, OpenSSL 1.0.1e)
Lekensteyn

매우 유익하고 철저한 답변. 이 질문에 대답 해 주 시겠습니까?
JB0x2D1

8

실제로 어떤 응용 프로그램과 바이올린을 사용할 필요는 없습니다. 이것은 "VPN처럼"작동합니다.

  1. 먼저 tsocks패키지 (임시 양말)를 설치하십시오 .

    sudo apt-get install tsocks
    
  2. 그런 다음 편집 /etc/tsocks.conf하고 입력하십시오.

    server = 127.0.0.1
    server_port = 3333
    
  3. 이제 터미널을 열고 다음을 입력하십시오.

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. 다른 터미널 또는 ALT-F2를 통해 실행 :

    tsocks firefox
    

이제 Firefox는 SSH가 생성 한 컴퓨터의 SOCKS 서버로 모든 통신을 전송합니다. 이것은 또한 가정용 컴퓨터로 터널링되어 웹으로 연결됩니다. 가정용 컴퓨터에 필요한 것은 SSH 서버입니다. 처음으로 3 단계와 4 단계를 반복하면됩니다.

그것은 매력처럼 작동합니다! 아아, 크롬은 tsock을 좋아하지 않지만 Firefox는 작동합니다.


3
글쎄, 마지막 문장을보십시오-OpenVPN이있는 NetworkManager 애플릿에서 단 한 번의 클릭만으로 tsock과 함께 잘 작동하는지 모든 프로그램을 먼저 확인하고 싶지 않습니다.
htorque

승인. 내 대답은 아마도 웹 사이트에 액세스하는 빠른 솔루션을 원하는 사람들에게 유용 할 것입니다.
MarkovCh1

1

SSH 터널 솔루션은 생각보다 쉽습니다. gSTM과 같은 프로그램은 GUI로 터널을 시작 / 중지합니다. 그런 다음 네트워크 프록시를 열고 직접 인터넷 연결에서 수동 프록시 구성으로 변경하고 "시스템 전체 적용"을 누르면 모든 앱이 터널 아래로 데이터를 보내야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.