मैं OpenVPN की स्थापना कैसे करूं ताकि मैं असुरक्षित हॉटस्पॉट से सुरक्षित रूप से इंटरनेट का उपयोग कर सकूं?


31

लक्ष्य: मैं अपने होम पीसी के माध्यम से इंटरनेट का सुरक्षित उपयोग करने में सक्षम होना चाहता हूं, जबकि मेरी नोटबुक एक खुले हॉटस्पॉट / एक्सेस प्वाइंट से जुड़ी है।

मैं है पता है कि मैं एक SSH सुरंग / सॉक्स प्रॉक्सी का उपयोग कर सकते हैं, लेकिन मैं अनुप्रयोगों के साथ बेला के आसपास (उन्हें इसका इस्तेमाल कर रही है, अगर संभव) नहीं करना चाहती। मुझे लगता है कि मुझे एक OpenVPN सेटअप की आवश्यकता है, इसलिए मैं इस बारे में एक विस्तृत मार्गदर्शिका की तलाश कर रहा हूं:

  1. OpenVPN सर्वर को स्थापित और सेटअप करें
  2. OpenVPN क्लाइंट (NetworkManager) सेटअप करें

उबंटू संस्करणों पर यह काम करना चाहिए 10.10 और 11.04।


यह एक ubuntu एक मुझे लगता है की तुलना में एक सर्वरफॉल्ट सवाल का अधिक है।
लुइस अल्वाराडो

1
@ क्रेयक्स: 1) है, 2) शायद नहीं
लेकेनस्टाइन

जवाबों:


40

मेरे पास कुछ महीने पहले सटीक सवाल है, लेकिन इसके अलावा, अगर संभव हो तो मैं एक आईपीवी 6 कनेक्शन लेना चाहता था। आपको सर्वरफॉल्ट पर मेरे सवालों में दिलचस्पी हो सकती है:

उपयोग के लिए मेरे सर्वर पर मेरे पास केवल एक एनआईसी ("नेटवर्क इंटरफ़ेस") था। मेरे सेटअप में, NetworkManager पर्याप्त नहीं था क्योंकि मुझे IPv6 का समर्थन करने के लिए एक कस्टम स्क्रिप्ट चलाने की आवश्यकता है। हालाँकि सादगी के लिए, मैं यहाँ NetworkManager का उपयोग करूंगा और IPv6 समर्थन को छोड़ दूंगा।

सबसे पहले, प्रमाणीकरण विधि पर निर्णय लें। मैं सुरक्षित प्रमाणपत्र विधि का उपयोग करूंगा जो एसएसएल की तरह काम करता है: हैंडशेक के दौरान एक सामान्य रहस्य चुना जाता है जिसका उपयोग सत्र के लिए किया जाएगा। अन्य विधियाँ एक साझा कुंजी हैं; एक उपयोगकर्ता नाम और पासवर्ड।

सर्वर

1. तैयारी

सबसे पहले, Openvpn सर्वर स्थापित करें। यह जितना आसान है sudo apt-get install openvpn। मुश्किल हिस्सा इसे कॉन्फ़िगर कर रहा है। कॉन्फ़िगरेशन में मौजूद है /etc/openvpn

2. प्रमाणन कॉन्फ़िगर करें

सर्वर को स्वयं और उसके ग्राहकों की पहचान के लिए प्रमाणपत्र की आवश्यकता होती है। ये प्रमाणपत्र एक सीए (सामान्य प्राधिकरण) से प्राप्त किए जाते हैं। प्रमाण पत्र और संबंधित निजी कुंजी का निर्माण किसी भी मशीन पर किया जा सकता है, इसे सर्वर पर करने की आवश्यकता नहीं है। यदि आप वास्तव में पागल हैं, तो आपको इसे एक मशीन पर करना चाहिए जो नेटवर्क से कनेक्ट नहीं है, और प्रमाणपत्रों को स्थानांतरित करने के लिए मेमोरी स्टिक का उपयोग करें।

सर्वर के लिए एक 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.crt

    ./clean-all
    
  6. निष्पादित करके CA बनाएँ ./build-ca। आप अपनी इच्छानुसार कोई भी विवरण भर सकते हैं, लेकिन ध्यान दें कि क्लाइंट के सर्वर से कनेक्ट होने पर यह जानकारी लॉग फाइलों में दिखाई देगी। यह फ़ाइलें ca.keyऔर ca.crtसबफ़ोल्डर में बनाएगा keysca.keyफ़ाइल को सभी परिस्थितियों में गुप्त रखें । ऐसा करने में विफलता किसी भी व्यक्ति को आपके सर्वर से कनेक्ट करने की अनुमति देगी।
  7. यदि आपके पास एक पिछला प्रमाण पत्र है जो खो गया है या समाप्त हो गया है, तो आपको पहले वाले पुराने को रद्द करना होगा ./revoke-full server। अन्यथा आपको डेटाबेस त्रुटि मिलती है।
  8. सर्वर के लिए सर्टिफिकेट बनाकर चलाएं:

    ./build-key-server server
    

    जब आपसे पासवर्ड मांगा जाता है, तो इसे तब तक खाली छोड़ दें जब तक कि आप हर बार सर्वर शुरू होने (अनुशंसित नहीं) पासवर्ड दर्ज करने को तैयार न हों। प्रमाण पत्र पर हस्ताक्षर करने और इसे करने की पुष्टि करें। दो नई फाइलें निर्देशिका में दिखाई देंगी keys: server.keyऔर server.crt

DH और उपयोग tls- कोर के लिए तैयार करते हैं

उपयोग करके डिफी-हेलमैन पैरामीटर उत्पन्न करें :

./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अद्वितीय होना चाहिए। यदि आप KDE का उपयोग कर रहे हैं तो पासवर्ड को खाली छोड़ दें क्योंकि यह 10.10 तक समर्थित नहीं है। सर्वर सर्टिफिकेशन जेनरेशन की तरह, सर्टिफिकेट पर हस्ताक्षर करने और बदलाव करने की पुष्टि करें।

3. OpenVPN सेवा सेटअप करें

डिफ़ॉल्ट रूप से, OpenVPN कनेक्शन स्वीकार करते समय रूट के रूप में चलता है। एक अच्छा विचार नहीं है अगर सेवा दुष्ट इंटरनेट से उपलब्ध है।

  1. OpenVPN के लिए एक समर्पित उपयोगकर्ता बनाएँ, कहते हैं openvpn:

    sudo useradd openvpn
    
  2. फ़ाइलों की प्रतिलिपि server.key, server.crt, ca.crtऔर dh1024.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 संभव है।

ग्राहक

सर्वर आईपी पते के अलावा, सर्वर व्यवस्थापक को निम्नलिखित फाइलें सौंपनी चाहिए:

  • ca.crt: प्रमाण पत्रों के सत्यापन के लिए
  • server.crt: सर्वर को सत्यापित करने और इसके साथ संचार करने के लिए
  • ta.key: सुरक्षा सख्त करने के लिए
  • you.crt: सर्वर से खुद की पहचान करना
  • you.key: यह आपके पासवर्ड की तरह है, फ़ाइल अनुमतियाँ 400 होनी चाहिए (केवल स्वामी के लिए पढ़ें)

1. स्थापना

OpenVPN और NetworkManager प्लगइन स्थापित करें (KDE और सूक्ति के लिए उपयुक्त):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn ब्रह्मांड भंडार में है।

2. विन्यास

नियंत्रण कक्ष में, निम्नलिखित विवरणों का उपयोग करें:

  • गेटवे: सर्वर आईपी एड्रेस
  • प्रकार: "प्रमाणपत्र (TLS)" (सूक्ति) या "X.509 प्रमाणपत्र" (KDE)
  • CA प्रमाणपत्र: पथ को ca.crt
  • उपयोगकर्ता प्रमाणपत्र: पथ को you.crt
  • निजी कुंजी: पथ को you.key

पर उन्नत :

  • गेटवे पोर्ट: स्वचालित (1194) (बदलने की आवश्यकता नहीं है)
  • LZO डेटा कम्प्रेशन का उपयोग करें: सक्षम
  • टीसीपी कनेक्शन का उपयोग करें: अक्षम
  • TAP डिवाइस का उपयोग करें: सक्षम
  • सिफर: डिफ़ॉल्ट
  • HMAC प्रमाणीकरण: डिफ़ॉल्ट
  • टीएलएस-प्रमाणीकरण का उपयोग करें: सक्षम
    कुंजी फ़ाइल पथ को निर्दिष्ट करें ta.keyऔर "कुंजी दिशा" को सेट करें 1
  • ( टूडू - इसे चेक करना ) सर्वर डिफ़ॉल्ट गेटवे को धक्का देता है ताकि सभी ट्रैफ़िक वीपीएन कनेक्शन पर चला जाए। पिछली बार जब मैंने जाँच की, तो नेटवर्क-मैनेजर-ओपनवैप प्लगइन ने ऐसा नहीं किया।

यदि आप 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

यदि आप बूट समय पर इस वीपीएन को सक्षम नहीं करना चाहते हैं, /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 क्लाइंट को सेटअप करने के लिए ज्ञान नहीं है, मैं चाहता हूं कि वह सर्वर आईपी, उपयोगकर्ता नाम, पासवर्ड का उपयोग करे।

@YumYumYum उपयोगकर्ता नाम / पासवर्ड का उपयोग करने का कोई विचार नहीं है, ओपनवपन ( man openvpn) के मैनुअल पेज पर एक नज़र है । Openvpn के हाल के संस्करणों में प्रमाणपत्र और कुंजी फ़ाइलों को एम्बेड करने की क्षमता है, इसलिए शायद उपयोगकर्ता के लिए निर्देश के साथ उस एकल कॉन्फ़िगरेशन फ़ाइल को प्रदान करना और भी आसान है।
लेकेनस्टेयिन

ध्यान दें कि OpenSSL 1.0.1 के साथ उबंटू जहाज के नए संस्करण, और . varsऊपर दिए गए कमांड को चलाने से एक त्रुटि उत्पन्न हो सकती है कि "Opensl.cnf फ़ाइल मिल सकती है और आगे के चालान विफल हो जाएंगे"। आप की जरूरत है sudo -s; cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/; ln -s openssl-1.0.0.cnf openssl.cnf, तो चलाने के लिए . varsऔर अन्य आदेशों।
डेन डैस्कलेस्कु

@DanDascalescu स्क्रिप्ट whichopensslस्थित openssl-1.0.0.cnfमुझे (आसान आरएसए 2.3.2 जो OpenSSL 1.0.1e) के लिए सही ढंग से फ़ाइल
Lekensteyn

बहुत जानकारीपूर्ण, पूरी तरह से जवाब। क्या आप इस प्रश्न का उत्तर दे सकते हैं ?
JB0x2D1

8

आप वास्तव में किसी भी आवेदन के साथ बेला करने की जरूरत नहीं है। यह "वीपीएन की तरह" काम करता है।

  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
    

अब, फ़ायरफ़ॉक्स SSH द्वारा बनाए गए आपके कंप्यूटर पर SOCKS सर्वर के माध्यम से सभी संचार पहुंचाता है। यह आगे आपके घर की मशीन पर टनल हो जाता है, जहाँ यह वेब पर जाती है। आपको अपने होम मशीन पर एक SSH सर्वर की आवश्यकता है। पहली बार के बाद, बस चरण 3 और 4 दोहराएं।

यह एक सम्मोहन की तरह काम करता है! काश, क्रोमियम tsocks पसंद नहीं है, लेकिन हे, फ़ायरफ़ॉक्स काम करता है।


3
ठीक है, अपना अंतिम वाक्य देखें - मैं पहले अपने सभी कार्यक्रमों की जांच नहीं करना चाहता हूं यदि वे वास्तव में tsocks के साथ मिलकर अच्छी तरह से काम करते हैं, जब यह OpenVPN के साथ NetworkManager एप्लेट में सिर्फ एक क्लिक हो सकता है।
हॉर्टिक

ठीक है। मेरा उत्तर संभवतः उन लोगों के लिए उपयोगी होगा जो वेबसाइटों तक त्वरित समाधान चाहते हैं।
MarkovCh1

1

SSH टनल का समाधान आपके हिसाब से आसान है। जीएसटीएम जैसे कार्यक्रम आपके लिए जीयूआई के साथ सुरंगों को शुरू / बंद कर देंगे। फिर बस नेटवर्क प्रॉक्सी खोलें और इसे डायरेक्ट इंटरनेट कनेक्शन से मैन्युअल प्रॉक्सी कॉन्फ़िगरेशन में बदल दें, "सिस्टम-वाइड लागू करें" को हिट करें और आपके सभी ऐप को अपना डेटा सुरंग के नीचे भेजना चाहिए - हर एक के साथ व्यक्तिगत रूप से फ़ेड करने की आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.