اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

نصب و کانفیگ Open VPN Server و Open VPN Client در debian 7

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    نصب و کانفیگ Open VPN Server و Open VPN Client در debian 7

    در این مقاله چگونگی اتصال به openvpn از ipv6 و روی دبیان لینوکس شرح خواهیم داد. این پروسه با یک دبیان 7 موجود روی kvm vps با اتصال ipv6 به عنوان سرور و یک debian 7 دسکتاپ به عنوان client تست شده است.
    دستورات تحت root اجرا میشوند.


    openvpn چیست ؟
    openvpn یک برنامه vpn است که از ssl/tls برای ایجاد ارتباطات vpn امن و encrypted استفاده میکند و ترافیک اینترنت شما را rout میکند بنابراین از جاسوسی جلوگیری میکند. openvpn در سطح بالایی قادر به عبور واضحی از فایروال ها میباشد. در حقیقت شما میتوانید openvpn را روی tcp پورت یکسانی همانند https (پورت 443) راه اندازی کنید که ترافیک غیرقابل تشخیص شود و بنابراین نتوان آن را فیلتر یا بلاک کرد.


    openvpn میتواند روش های گوناگونی مانند pre-shared secret key , certificates یا username/password استفاده کند تا به کلاینت ها اجازه وصل شدن به سرور را بدهد. openvpn پروتکل openssl را استفاه میکند و ابزارهای کنترل و امنیتی زیادی مانند challenge response authentication, single sign-on capability, load balancing و ابزار failover و multi daemon support را اجرا میکند.



    همچنین توصیه میشود مطالعه بفرمایید :

    مقاله به روز شده نصب و راه اندازی سرور OpenVPN در لینوکس

    آموزش نصب و راه اندازی L2TP/IPsec Client در اوبونتو و فدورا

    نحوه تانل (Tunnel) زدن بین دو سرور لینوکسی (Site to Site Linux Server VPN) (به زودی)



    چرا از openvpn استفاده کنیم ؟
    اگر به ارتباطات امن فکر میکنید در حقیقت دارید به openvpn فکر میکنید. اگر نمیخواهید کسی روی ترافیک اینترنت تان جاسوسی کند از openvpn استفاده کنید تا تمام ترافیک تان را از طریق یک تانل امن و در سطح بالایی encrypt شده را rout کنید.
    این ابزار علی الخصوص در اتصال به شبکه های wifi عمومی در فرودگاه ها و یا دیگر مکان ها بسیار مهم است شما هرگز نمیتوانید مطمین باشید که آیا ترافیک شما جاسوسی میشود یا نه؟ و میتوانید ترافیک تان را از طریق سرور openvpn شخصی خود کانال دهی کنید تا از snooping (جاسوسی) جلوگیری کنید.


    اگر شما در هر کشوری هستید که به صورت روتین تمام ترافیک شما را مانیتور میکند و وب سایت ها را به دلخواه خودشان فیلتر میکند شما میتوانید از openvpn روی پورت tcp 443 استفاده کنید تا آن را از ترافیک https غیر قابل تشخیص کنید. همچنین میتوانید openvpn را با استراتژی های امنیتی دیگر مانند tunnelling ترافیک openvpn خود از طریق یک تانل ssl ترکیب کنید تا بتوانید جلوی تکنیک های بازرسی و جاسوسی حرفه ای پکت ها که ممکن است قادر به شناسایی openvpn signatures هم باشند را بگیرید.


    تجهیزات مورد نیاز :
    openvpn به حداقل تجهیزات نیاز دارد یک سیستم با 64 مگابایت رم و 1 گیگابایت فضای هارد برای راه اندازی openvpn کافیست و میتوانید آن را برروی اکثر سیستم عامل های موجود نصب و استفاده کنید.


    نصب و کانفیگ openvpn روی debian 7 :
    نصب openvpn روی سرور master :
    دستور زیر رای برای نصب openvpn اجرا کنید :

    کد:
    # apt-get install openvpn
    به صورت پیشفرض اسکریپت های easy-rsa در دایرکتوری /user/share/easy-rsa/ بنابراین ما باید این اسکریپت ها را به مسیر دلخواه مانند /root/easy-rsa/ کپی کنید :



    کد:
    # mkdir /root/easy-rsa
    cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa



    ایجاد CA Certificate و CA Key :
    فایل vars را باز کنید و تغییرات زیر را لحاظ کنید اما پیشنهاد میکنم قبل از اعمال هر تغییری یک بک آپ از فایل اصلی بگیرید :

    کد:
    # cp vars{,.orig}

    با استفاده از ادیتور متنی خود مقادیر پیش فرض را برای easy-rsa تعریف کنید. به طور مثال :

    کد:
    KEY_SIZE=4096
     KEY_COUNTRY="IN"
     KEY_PROVINCE="UP"
     KEY_CITY="Noida"
     KEY_ORG="Home"
    KEY_EMAIL="user@example.net"
    در اینجا من از یک key که 4096 بیت هست استفاده میکنم. شما میتوانید یک key که 1024 , 2048 , 4096 یا 8192 بیت باشد به دلخواه خود استفاده کنید.
    با اجرای دستور زیر مقدارهای پیش فرض را اکسپورت کنید :

    کد:
    # source ./vars

    با دستور زیر هر certificates که قبلا ایجاد شده را پاک کنید :

    کد:
    ./clean-all

    سپس برای ایجاد ca certificate و ca key دستور زیر را اجرا کنید :

    کد:
    # ./build-ca

    بااستفاده از دستور زیر certificate سرور را ایجاد میکنیم دقت کنید که به جای server-name نام سرور خود را قرار دهید :

    کد:
    # ./build-key-server server-name
    ایجاد Diffie Hellman PEM Certificate :

    کد:
    # ./build-dh

    ایجاد certificate کلاینت :
    به جای client-name نام کلاینت خود را قرار دهید :
    کد:
    # ./build-key client-name
    ایجاد HMAC code :

    کد:
    # openvpn --genkey --secret /root/easy-rsa/keys/ta.key


    certificate های ایجاد شده را به ماشین های کلاینت و سرور همانند زیر کپی کنید :


    1 - مطمین شوید که فایل ca.crt در هر دو ماشین سرور و کلاینت موجود باشد.
    2 - فایل ca.key باید تنها در کلاینت موجود باشد.
    3 - سرور نیاز به فایل های server.crt , dh4096.pem , server.key و ta.key دارد.
    4 - فایل های client.crt , client,key باید روی client موجود باشند.


    برای نصب keys و certificate روی سرور دستور زیر را اجرا کنید :

    کد:
    # mkdir -p /etc/openvpn/certs #
    cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/


    کانفیگ سرور openvpn :
    اکنون شما نیاز دارید سرور openvpn را کانفیگ کنید. فایل /etc/openvpn/server.conf/ را باز کنید و تغییرات را همانند آنچه که در زیر موجود است اعمال کنید :
    کد:
    
    

    کد:
    script security 3
    system port 1194
    proto udp
    dev tap  
    ca /etc/openvpn/certs/ca.crt
    cert /etc/openvpn/certs/server-name.crt
    key /etc/openvpn/certs/server-name.key
    dh /etc/openvpn/certs/dh4096.pem
    tls-auth /etc/openvpn/certs/ta.key 0  
    server 192.168.88.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"  
    keepalive 1800 4000  
    cipher DES-EDE3-CBC # Triple-DES
    comp-lzo  max-clients 10  
    user nobody
    group nogroup  
    persist-key
    persist-tun
     #log openvpn.log
    #status openvpn-status.log
    verb 5
    mute 20

    فعال سازی ip forwarding روی سرور :
    کد:
    # echo 1 > /proc/sys/net/ipv4/ip_forward

    دستور زیر را اجرا کنید تا openvpn در زمان بوت start شود. (start on boot)
    کد:
    # update-rc.d -f openvpn defaults




    start کردن سرویس openvpn :
    کد:
    # service openvpn restart
    نصب openvpn روی client :
    با استفاده از دستور زیر openvpn را روی ماشین کلاینت نصب میکنید :
    کد:
    # apt-get install openvpn
    با استفاده از یک ادیتور متن فایل کانفیگ کلاینت openvpn در مسیر /etc/openvpn/client.conf/ را تنظیم کنید. نمونه ای از این فایل در زیر موجود است :
    کد:
    
    

    کد:
    script security 3 system
    client
    remote vpn_server_ip
    ca /etc/openvpn/certs/ca.crt
    cert /etc/openvpn/certs/client.crt
    key /etc/openvpn/certs/client.key
    cipher DES-EDE3-CBC
    comp-lzo yes
    dev tap
    proto udp
    tls-auth /etc/openvpn/certs/ta.key 1
    nobind
    auth-nocache
    persist-key
     persist-tun
    user nobody
    group nogroup



    با استفاده از دستور زیر تعریف میکنیم که openvpn هنگام بوت start شود :

    کد:
    # update-rc.d -f openvpn defaults

    start کردن سرویس openvpn روی client :
    به محض اینکه شما از کارکرد openvpn روی ipv4 راضی شدید وقت آن است که از نحوه کار openvpn روی ipv6 بدانید.

    کد:
    # service openvpn restart



    کار کردن ipv6 با openvpn روی سرور :


    خطوط زیر را به انتهای فایل کانفیگ سرور /etc/openvpn/server.conf/ اضافه کنید :

    کد:
    client-connect /etc/openvpn/client-connect.sh
    client-disconnect /etc/openvpn/client-disconnect.sh
    2 اسکریپت زیر برای ایجاد و تخریب تانل ipv6 میباشد که هربار که یک کلاینت conect یا disconect میشود اجرا میگردد. محتوای client-conect.sh به شرح زیر میباشد :

    کد:
    #!/bin/bash
    BASERANGE="2a00:dd80:003d:000c"
    ifconfig $dev up
    ifconfig $dev add ${BASERANGE}:1001::1/64
    ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
    exit 0

    host من ادرس های ipv6 از 2a00:dd80:003d:000c::/6 بلاک این را به من اختصاص میدهد. بعلاوه من 2a00:dd80:003d:000c را به عنوان BASERANGE استفاده میکند. این مقدار را با توجه به انچه که host تان به شما اختصاص میدهد تغییر دهید.


    هر بار که یک کلاینت به openvpn کانکت میشود این اسکریپت آدرس 2a00:dd80:003d:000c:1001::1 را به عنوان آدرس ipv6 مربوط به اینترفیس tap0 روی سرور را به کلاینت اختصاص میدهد.


    خط آخر Neighbour Discovery را برای تانل شما تنظیم میکند من آدرس ipv6 مربوط به سمت کلاینت را به عنوان آدرس proxy اضافه کردم.


    در زیر محتوای client-disconnect.sh را مشاهده میکنید :

    کد:
    #!/bin/bash
    BASERANGE="2a00:dd80:003d:000c"
    /sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
    exit 0

    زمانی که کلاینت disconect میشود این اسکریپت تنها آدرس تانل ipv6 سرور را پاک میکند. مقدار BASERANG را به مقدار مناسب تغییر دهید.


    با استفاده از دستور های زیر 2 اسکریپت را قابل اجرا (executable) میسازیم :

    کد:
    # chmod 700 /etc/openvpn/client-connect.sh #
    chmod 700 /etc/openvpn/client-disconnect.sh
    موارد زیر را به /etc/rc.local/ اضافه میکنیم. (همچنین میتوانید sysctl مناسب در /etc/sysctl.conf/ را تغییر دهید :

    کد:
    echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
    /etc/init.d/firewall stop && /etc/init.d/firewall start

    این موارد neighbor discovery و forwarding را فعال میکند. همچنین یک فایروال اضافه کردم.


    فایل /etc/init.d/firewall/ را ایجاد کرده و محتوای زیر را در آن قرار دهید :
    کد:
    #!/bin/sh #
    description: Firewall
    IPT=/sbin/iptables
    IPT6=/sbin/ip6tables
    case "$1" in
    start)
    $IPT -F INPUT
    $IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    $IPT -A INPUT -i eth0 -p icmp -j ACCEPT
    $IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
    $IPT -A INPUT -i tap+ -j ACCEPT
    $IPT -A FORWARD -i tap+ -j ACCEPT
    $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -t nat -F POSTROUTING
    $IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    $IPT -A INPUT -i eth0 -j DROP
    $IPT6 -F INPUT
     $IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    $IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
    $IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
    $IPT6 -A INPUT -i eth0 -j DROP
    exit 0
    ;;
    stop)
    $IPT -F
    $IPT6 -F
    exit 0
     ;;
     *)
    echo "Usage: /etc/init.d/firewall {start|stop}"
    exit 1
    ;;
    esac






    اسکریپت /etc/rc.local/ را اجرا کنید و فایروال را start کنید :

    کد:
    # sh /etc/rc.local

    در این مرحله تغییرات سمت سرور کامل میشود.






    کار کردن ipv6 با openvpn روی client :


    خطوط زیر را به انتهای فایل کانفیگ سرور /etc/openvpn/client.conf/ اضافه کنید :

    کد:
    # create the ipv6 tunnel up /etc/openvpn/up.sh down /etc/openvpn/down.sh # need this so when the client disconnects it tells the server explicit-exit-notify

    2 اسکریپت up/down زیر برای ایجاد و تخریب تانل ipv6 کلاینت میباشد که هربار که یک کلاینت conect یا disconect میشود اجرا میگردد.


    محتوای up.sh به شرح زیر میباشد :

    کد:
    #!/bin/bash
    IPV6BASE="2a00:dd80:3d:c"
    ifconfig $dev up
    ifconfig $dev add ${IPV6BASE}:1001::2/64
    ip -6 route add default via ${IPV6BASE}:1001::1
    exit 0

    اسکریپت آدرس ipv6 این 2a00:dd80:3d:c:1001::2 را به عنوان آدرس ipv6 کلاینت اختصاص میدهد و route i مربوط به ipv6 پیش فرض را از طریق سرور تنظیم میکند.


    IPV6BASE را تغییر دهید تا در تنظیمات سرور همانند BASERANGE میباشد.


    محتوای down.sh به شرح زیر میباشد :
    کد:
    #!/bin/bash
     IPV6BASE="2a00:dd80:3d:c"
    /sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
    /sbin/ip link set dev $dev down
    /sbin/ip route del ::/0 via ${IPV6BASE}::1
    exit 0
    این اسکریپت تنها آدرس ipv6 کلاینت را پاک میکند و route مربوطه را در زمان disconect کلاینت و سرور از بین میبرد.


    IPV6BASE را تغییر دهید تا برابر با BASERANGE در تنظیمات سرور شود همچنین به اسکریپت ها پرمیژن اجرایی بدهید :
    کد:
    # chmod 700 /etc/openvpn/up.sh
    # chmod 700 /etc/openvpn/down.sh

    به صورت اختیاری میتوانید /etc/resolv.conf/ را تغییر دهید و nameserver های google را به عنوان DNS اضافه میکنید :

    کد:
    nameserver 2001:4860:4860::8888
    nameserver 2001:4860:4860::8844
    سرویس openvpn را در سمت سرور restart کنید و از کلاینت به آن متصل شوید. شما باید بتوانید کانکت شوید. برای مشاهده جزییات بیشتر در مورد اتصال ipv6 از طریق openvpn لینک زیر را مشاهده بفرمایید :
    This will test your browser and connection for IPv6 readiness, as well as show you your current IPv4 and IPv6 address.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 03-18-2020, 11:51 PM.
    اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X