顯示廣告
隱藏 ✕
看板 terievv
作者 terievv (terievv)
標題  標題  [攻略] 自己的VPN自己架:基礎建設篇
時間 2015-06-14 Sun. 02:20:49


看板 KanColle
作者 Akaz (Akaz)
標題 [攻略] 自己的VPN自己架:基礎建設篇
時間 Thu Jun 11 18:23:05 2015


經過測試,ConoHa 無法架設 PPTP VPN,OpenVPN無問題

一、前言

    本文旨在協助沒有資訊相關背景的朋友能夠建立自己的、安全的VPN。
    文章將分為兩部分:基礎建設、OpenVPN架設。

    本次將以 ConoHa VPS 搭配 Debian 8 (64bit) 來做示範。
    如果你的VPS服務商只提供 Ubuntu 14.04 LTS,請別擔心,大致上所有內容都通用。
    (可能有細微差異)
    如果你的VPS服務商只提供 Debian 6 / 7,請與我連絡,我會詳細解釋如何升級。
    如果你的VPS服務商只提供 CentOS 7,請容我說聲抱歉,
    因為撰文的時間關係,本次教學將不會涵蓋 CentOS。
    如果你的VPS服務商只提供 FreeBSD,那它還沒倒真是個奇蹟(X)。

    由於 ConoHa 似乎已經取消驗證手機的1500 JPY免費額度,
    且經過測試 ConoHa 無法架設 PPTP VPN,(推測是GRE協定被擋)
    還請斟酌是否要使用,或者尋求其他供應商。

    文章內容若有任何疑問或者本人有所疏忽的地方,歡迎發表推文或來信。


二、開始使用VPS

    首先到 ConoHa VPS 的官方網站註冊一個帳號。
    註冊後會要求手機號碼驗證與選擇繳費方式。
    ConoHa 可以儲值的方式使用,提供信用卡、PayPal等等的方式。

    註冊手續完成後就可以到 Server List,
    點擊右上角的 Add 或左上角的 Add Server 進入添加伺服器的畫面。

    http://i.imgur.com/tKUVOwy.png

    在添加伺服器的畫面請點擊「Debian」並選擇 8 (64bit)。
    在 root Password 欄位填入 root 密碼。

    http://i.imgur.com/nOgUsDb.png

    (root 是 Linux 系統中的「超級使用者」,擁有所有的權限)
    建議使用大小寫字母、數字、底線、問號等符號混雜的密碼,且避開既有單詞。

    這裡有一個 Intel 的頁面可以測試密碼強度。
    https://www-ssl.intel.com/content/www/us/en/forms/passwordwin.html
    請注意不要在這個頁面打上真正的密碼,而只是測試密碼的「形式」。
    題外話,我試了一下,fxxkutanaka居然要12年?

    第三部分 Option 的地方,請取消勾選 Port Permission IPv6 的 Allow All。

    http://i.imgur.com/dNaJdOT.png

    接著就可以按右下角的 Add 新增機器。

    http://i.imgur.com/KnolMt7.png

    等到紅圈處變成 Running 就可以繼續下一步。


三、基本設置

    這部分將使用PieTTY做為遠端連線至VPS的軟體。
    http://i.imgur.com/yKH9Y5B.png

    PieTTY可以在這邊下載到:http://ntu.csie.org/~piaip/pietty/
    打開PieTTY會是這樣的畫面:

    http://i.imgur.com/wHS0NFZ.png

    首先請記錄VPS的IP。VPS的IP可以在這裡找到:

    http://i.imgur.com/VUxJfdO.png
    http://i.imgur.com/PaU05Ez.png
    http://i.imgur.com/V0mSDKh.png

    同時請先點擊最上方的「Shutdown」關閉VPS,
    然後點擊第三項的「VPS Setup」並將 Console Key-map 改為 en-us。

    http://i.imgur.com/5eyIbAD.png

    如果跳出紅色的訊息告訴你設定失敗就代表VPS還沒有關機。
    修改完畢後點擊上方的「Start」。

    接著把IP填回PieTTY。

    http://i.imgur.com/E36zpNj.png

    點下連線後應該會跳出類似這樣的東西:

    http://i.imgur.com/fr9KoB1.png

    點擊「是」就可以了。

    接下來PieTTY會問你要用什麼身分登入(login as:),
    請填入root,然後打上密碼登入。

    http://i.imgur.com/axsKfos.png

    使用root登入非常危險
    使用root登入非常危險
    使用root登入非常危險
    但因為 ConoHa VPS 沒有預設的使用者,我們還是要危險這一次。

    登進去之後首先做基本的安全設定。

    首先是開啟一個新的使用者。
    在命令列打上「adduser xxx」,xxx可為你希望使用的使用者名稱。
    (全小寫、不可數字開頭)

        root@xxx:~# adduser xxx

    http://i.imgur.com/tHFki3A.png

    然後指定密碼。請不要和root使用同樣的密碼,
    並請使用大小寫字母、數字、底線、問號等符號混雜的密碼,且避開既有單詞。
    除了密碼以外的設定基本上可以留空直接 Enter。

    http://i.imgur.com/FMeGOyL.png

    接著我們要禁止使用root登入。
    首先要賦予剛剛新增的使用者操作系統的權限。

        root@xxx:~# visudo

    找到 # User privilege specification
    並在 root      ALL=(ALL:ALL) ALL後面新增一行如圖。

    http://i.imgur.com/Lm6MQkW.png

    修改完後按Ctrl+X,再按Y,再按Enter存檔。

    接著禁止使用root登入。

        root@xxx:~# nano /etc/ssh/sshd_config

    找到 PermitRootLogin yes,把yes改成no。改完後一樣Ctrl+X、Y、Enter。

    http://i.imgur.com/0mOfsDQ.png

    接著要重新開啟ssh服務讓它使用新的設定檔。

        root@xxx:~# systemctl restart ssh.service

    然後離開VPS。

        root@xxx:~# exit

    接著重新打開PieTTY,並用剛剛建立的使用者登入。
    登入後測試是否能獲取root權限。

        xxx@xxx:~$ sudo su -

    輸入密碼後Enter,如果發現變成了「root@xxx:~#」就是成功了。

    http://i.imgur.com/jD1qKk4.png

    成功就可以回到一般使用者的狀態了。

        root@xxx:~# exit

    註:如果你和我一樣,使用sudo的時候會出現一行
        sudo: unable to resolve host xxx-xxx-xxx-xxx
        可以這樣解:
        $ sudo sed -i.bak 's/localhost/localhost '$(hostname)'/' /etc/hosts


    接著設定 fail2ban 來阻擋外來攻擊者暴力破解密碼。

        xxx@xxx:~$ sudo apt-get -y update
        xxx@xxx:~$ sudo apt-get -y upgrade
        xxx@xxx:~$ sudo apt-get -y install fail2ban

    然後設定 fail2ban 的設定檔。

        xxx@xxx:~$ sudo nano /etc/fail2ban/jail.local

    打開來確實是一個空白的文件,請不要驚慌。
    由於內容有一點多,所以我把它放在codepad.org上:http://codepad.org/diDtliN7
    複製之後在PieTTY的黑視窗點一下右鍵就可以貼上了,注意別點到兩下。
    一樣Ctrl+X、Y、Enter存檔。
    然後修改另外一個檔案讓它可以在重開機時保留原先的黑名單。

        xxx@xxx:~$ sudo nano /etc/fail2ban/action.d/iptables-multiport.conf

    在裡面找到 actionstart,在整段的後面加上

        cat /etc/fail2ban/ip.blocklist | while read IP;
        do iptables -I fail2ban-<name> 1 -s $IP -j <blocktype>; done

    (請合併成一行)

    http://i.imgur.com/xMGxuWy.png

    然後找到 actionban,加上

        echo <ip> >> /etc/fail2ban/ip.blocklist

    http://i.imgur.com/6NREDn4.png

    存完檔後重啟 fail2ban。

        xxx@xxx:~$ sudo systemctl restart fail2ban.service

    然後確認 fail2ban 是否有成功運行。

        xxx@xxx:~$ sudo fail2ban-client status

    註:fail2ban 最近有過一次設定檔更新,而 Debian 8 stable 版本沒有更新。
        我不太確定 Ubuntu 14.04 LTS 有沒有更新這一項。
        如果無法正常啟動還請告知,我會補上解法。

    至此系統環境就大致上完成架設安全的VPN的準備了。

    再次提醒,設置密碼時,
    請使用大小寫字母、數字、底線、問號等符號混雜的密碼,且避開既有單詞。




基礎建設篇至此結束,感謝收看;有問題歡迎發表推文或來信。

OpenVPN架設篇已完成,文章代碼 #1LU_Gc_9

--

個人不太喜歡改 ssh port,別鞭我QQ

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.217.55
※ 文章代碼(AID): #1LUM6Das (KanColle)
※ 文章網址: https://www.ptt.cc/bbs/KanColle/M.1434018189.A.936.html
ian90911: お、おう...1F 06/11 18:25
caten: O...oh...2F 06/11 18:29
judy3116: 教學詳細,推一個3F 06/11 18:29
angel84326: 推教學  但這.....痾....4F 06/11 18:30
kira925: 我不是很喜歡sudo 特別你開這種全權限的5F 06/11 18:30
kira925: 要這樣還不如進去以後用su 雙層密碼保護
其實我個人認為 ssh key + 禁掉 root 密碼比較好 可是講這個太難了...
kira925: 說來fxxutanaka用字典攻擊法會炸的吧XD7F 06/11 18:32
kira925: 恩,ssh key應該是最好的XD
feignego: おぅ>△<9F 06/11 18:33
proofmax1: 太神啦 一定要M10F 06/11 18:34
ttt95217: 純推不下11F 06/11 18:38
clse0190: 還是別sudo吧12F 06/11 18:38
在非得用密碼登入的情況下 雖然 su 可以多一層密碼保護
可是 sudoer file 好好寫的話會比 su 還安全 (其實原本的就比 su 安全了)
要更高的安全性 就只能用 ssh key + 禁掉 root 密碼
Hitomi29: 趕快推  不然別人以為我們看不懂!13F 06/11 18:49
kira925: sudo要很仔細處理權限 不然sudo其實更不安全14F 06/11 18:49
反正現在是 single user,我是覺得簡單為主
krrvincent: 有點忘記Linux是怎麼處理權限繼承的問題了 比照Win的15F 06/11 18:52
krrvincent: 話母程序給權限頗危險...
不太懂你的意思...
r790528: 測試一下密碼 FuckYouTanada要8243年喔w17F 06/11 18:55
Sousake: 我的磚夜來自堪口雷18F 06/11 19:02
kira925: @羽月 如果是跑字典檔 可能幾天就炸裂了XD19F 06/11 19:06
darkgerm: 擋 ssh 還是上一下 iptables + sshguard 比較好20F 06/11 19:19
Kagero: 未看先猜文組的反應都是在看無字天書(X21F 06/11 19:23
我高中也是文組的 (?)
kuojames2580: 明明就是基礎篇我卻看不懂22F 06/11 19:26
Sousake: 也有文組知道  加入居居不必選校別 加入勘口雷不必選組別23F 06/11 19:26
tom11725: 原PO選擇ConoHa這個附費VPN有什麼優點嗎24F 06/11 19:28
tom11725: 最近也在物色附費VPN,因為太多了不知道該如何選擇@@
https://www.conoha.jp/conoha 萌(X)

其實它是VPS喔
然後其實我自己主要不是用ConoHa...只是之前試用過覺得還不錯
sodasu11: 看不懂照推w26F 06/11 19:38
Pmking: 至少 加入勘口雷的文組們有八成都知道怎麼掛VPN27F 06/11 19:39
Kenqr: conoha醬有點嬰兒肥28F 06/11 20:03
qooLD: 糟糕有點心動...conoha有點可愛...可是我宿舍電腦連不上w29F 06/11 20:42
aaaaooo: 看到freeBSD就知道要推了www30F 06/11 20:55
Chimaerason: 居然有 FreeBSD XDDD31F 06/11 21:06
feignego: FreeBSD 是五六年前消失的東西了吧...32F 06/11 21:11
FreeBSD明明就好好地活著 去年才上10.0 XD
kira925: OpenBSD還在阿...33F 06/11 21:17
werrty: 快推!不然會被說看不懂!34F 06/11 21:33
feignego: 上一次server從FreeBSD灌成Ubuntu...四五年前了zzz35F 06/11 21:53
feignego: 但是自從不當engineer之後,linux語法通通忘光光啦 orz
qooLD: 周末在刷卡好了...比較有時間研究怎麼寫XDD37F 06/11 21:59
icons: 艦娘版愈來愈多這類文,不知道算不算好事。雖然我覺得超棒的38F 06/11 22:44
icons: 原PO辛苦了!感謝教學!
※ 編輯: Akaz (140.112.217.55), 06/11/2015 23:16:24
kingwilly71: 這還是要有專業知識再動手比較好40F 06/11 23:27
kingwilly71: 我自己是有用aws 只是他還要拉一推security group
kingwilly71: 會更麻煩一點
handsomecat: X你田中  XDDDDDDD43F 06/11 23:29
icemango: 是走錯板了膩 XDDDDDDDDDDD44F 06/11 23:46
George017: 小提醒,如果用得是Ubuntu,它預設是沒root的喔45F 06/12 00:17
George017: 只能用su把第一個管理員帳號升級成等於root權限
George017: 指令下sudo時你其實就是在用root等級的權限做事
George017: 所以一些發行版在第一次輸入sudo時會有一行小提示
George017: 密碼強度的部分,不同的系統/服務對同樣組成的密碼評價
George017: 不同(在一些服務中顯示為高強度;在另一些卻只有中)
George017: 以及不同情境下會有密碼長度的限制
Ubuntu 只是預設禁用 root 密碼而已 然後會給第一個 user sudo ALL 權限
(但是依然可以透過 sudo 來下 su 進到 root)

密碼強度當然是僅供參考,不過只要密碼夠強實際上是很難被打下來的
※ 編輯: Akaz (140.112.217.55), 06/12/2015 00:31:44
kaori9993: 感謝,真的實用,這樣就方便多了52F 06/12 01:10
mattc123456c: 我以為我到了Linux版了53F 06/12 01:34
※ 編輯: Akaz (140.112.217.55), 06/13/2015 17:14:22
看板 KanColle
作者 Akaz (Akaz)
標題 [攻略] 自己的VPN自己架:OpenVPN架設篇
時間 Sat Jun 13 17:13:04 2015


延續前文:[攻略] 自己的VPN自己架:基礎建設篇  #1LUM6Das

這次的圖會比較少,因為大部分都是照著指令就可以了。



四、OpenVPN簡介

    OpenVPN是一個開放原始碼、跨平台的VPN實作。
    雖然連線需要額外的客戶端軟體,但目前幾乎所有平台上都已經有OpenVPN的客戶端。

    OpenVPN的優點:

      1.使用CA(數位憑證)做身分驗證,目前除了誘騙使用者自己開門外沒有破門方法。

      2.使用OpenSSL加密,可以自行更換加密演算法。
        預設使用BlowFish做為Cipher(這個有點難解釋 有興趣的朋友可以自己Google),
        BlowFish至今沒有被攻破的紀錄(理論上不可行)。
        在常用的VPN方案中擁有最高的安全性。

      3.在走UDP的時候(預設)擁有常用VPN方案中僅次於PPTP的速度。

    OpenVPN的缺點:

      1.需要客戶端軟體。

      2.我想不到了,歡迎補充。


五、OpenVPN架設

    首先安裝OpenVPN。
    因為後面會有一些問題,所以這邊不用sudo,直接進root做。

        xxx@xxx:~$ sudo su -
        root@xxx:~# apt-get -y install openvpn

    安裝好之後我們要先使用附帶安裝的easy-rsa生成OpenVPN所需要的數位憑證。

        root@xxx:~# cd /etc/openvpn
        root@xxx:/etc/openvpn# mkdir -p easy-rsa
        root@xxx:/etc/openvpn# cp /usr/share/easy-rsa/* easy-rsa/
        root@xxx:/etc/openvpn# cd easy-rsa

    編輯easy-rsa裡面的vars這個檔案。

        root@xxx:/etc/openvpn/easy-rsa# nano vars

    裡面應該有一段長這樣:

    http://i.imgur.com/3IrhxPL.png

    其實不改也可以,總之這段不可以有任何一個為空。

    http://i.imgur.com/Ic2wzjW.png

    改完以後Ctrl+X、Y、Enter存檔。
    然後把vars加到系統的參數中。

        root@xxx:/etc/openvpn/easy-rsa# . ./vars    ←注意前面有多一個點
        root@xxx:/etc/openvpn/easy-rsa# ./clean-all

    接下來產生憑證。

        root@xxx:/etc/openvpn/easy-rsa# ./build-ca

    會問你一些東西,因為剛才已經在vars裡面設定好了所以一直Enter就可以了。

        root@xxx:/etc/openvpn/easy-rsa# ./build-key-server server

    也是一直Enter,後面會出現一個幾個額外的東西,可以不用管它們,直接留空。
    最後會有兩個問題,要打上y,不能直接Enter。

    http://i.imgur.com/WFDxeQQ.png

    然後產生DH(這個也有點難解釋)。

        root@xxx:/etc/openvpn/easy-rsa# ./build-dh

    會跑出很多'.'和'+',需要一段時間,請耐心等候。
    以上是伺服器端的憑證,現在要製作客戶端的。
    這邊有分歧路線:

      1.生成有密碼的憑證:建議
        這樣生成的憑證在每次連線的時候都會額外詢問密碼。

          root@xxx:/etc/openvpn/easy-rsa# ./build-key-pass client
          Enter PEM pass phrase: (打上你要的密碼)
          Verifying - Enter PEM pass phrase: (再一次)

        後面與build-key-server操作相同。

      2.生成沒有密碼的憑證:不建議

          root@xxx:/etc/openvpn/easy-rsa# ./build-key client

        和build-key-server操作完全相同。

    接著要編寫伺服器端的設定檔。首先回到/etc/openvpn。

        root@xxx:/etc/openvpn/easy-rsa# cd ..

    因為字太多了所以我還是放在codepad.org:http://codepad.org/nYCclJ99
    把這些設定值寫在server.conf裡面。

        root@xxx:/etc/openvpn# nano server.conf

    然後先建好用來分配ip的文件檔。

        root@xxx:/etc/openvpn# touch ipp.txt

    現在可以打開OpenVPN的伺服器端了。

        root@xxx:/etc/openvpn# systemctl start openvpn@server.service

    如果沒有任何反應就是開成功了。
    為了要讓它能夠每次開機都自動啟動,要啟用它:

        root@xxx:/etc/openvpn# systemctl enable openvpn@server.service


六、連線至OpenVPN

    在這邊建議先下載OpenVPN和任意FTP軟體(將以FileZilla示範)。
    OpenVPN:https://openvpn.net/index.php/open-source/downloads.html
  FileZilla:https://filezilla-project.org/download.php?type=client

    首先先把連線需要的憑證下載下來。

        root@xxx:/etc/openvpn# apt-get -y install zip
        root@xxx:/etc/openvpn# mkdir -p client
        root@xxx:/etc/openvpn# cp easy-rsa/keys/ca.crt client/
        root@xxx:/etc/openvpn# cp easy-rsa/keys/client.crt client/
        root@xxx:/etc/openvpn# cp easy-rsa/keys/client.key client/
        root@xxx:/etc/openvpn# zip -r client.zip client/
        root@xxx:/etc/openvpn# cp client.zip ~xxx ←xxx請代換成之前建立的使用者
        root@xxx:/etc/openvpn# chown xxx:xxx ~xxx/client.zip ←同上

    接著打開FileZilla,點擊左上角的「站台管理員」,然後點「新增站台」。

    http://i.imgur.com/1tkLqDL.png
    http://i.imgur.com/ZcxNvl5.png

    在右半邊,主機填上你的VPS的IP,協定選擇SFTP,
    登入型式選擇詢問密碼並打上VPS的使用者名稱。

    http://i.imgur.com/6EZteYJ.png

    然後按連線。打上密碼後會有個類似PieTTY第一次連線時的東西,點選確認。

    http://i.imgur.com/lR8EHhM.png

    在左邊找到OpenVPN的安裝目錄。(應該會在C:\Program Files\OpenVPN)
    進到其中的config資料夾並把client.zip拉到左邊。
    下載完就可以關掉FileZilla了。

    到C:\Program Files\OpenVPN\config裡面,首先解壓縮client.zip,
    並把client資料夾裡的三個檔案拉到config裡面。
    在config裡面新增一個文件名為client.ovpn,
    內容還是字很多所以一樣貼在codepad.org:http://codepad.org/AmiYEbhd
    <ip>請換成你的VPS的IP,如果你的OpenVPN安裝位置不同也請自行依格式修改。

    這部分還有一些可以加上去的選項:

        1.設定DNS:建議,改成中華DNS亦可

            dhcp-option DNS 8.8.8.8
            dhcp-option DNS 8.8.4.4

        2.所有流量都通過VPN

            redirect-gateway def1

        3.只讓dmm流量過VPN:不可和2並用

            route 203.209.0.0 255.255.0.0
            route 203.104.0.0 255.255.0.0

        4.讓ptt流量不過VPN(懶人法,直接讓112流量不過VPN):要和2並用

            route 140.112.0.0 255.255.0.0 net_gateway

    編輯完後存檔。

    接著打開OpenVPN GUI,預設安裝的話你應該能在桌面上找到捷徑。

    http://i.imgur.com/7O7bNu7.png

    打開後應該能在螢幕右下角找到OpenVPN GUI。設定正確的話點兩下就會開始連線。

    http://i.imgur.com/r0w2UYB.png

    產生客戶端憑證時如果有設定密碼它就會詢問你密碼。

    http://i.imgur.com/kZiEmcN.png

    打上密碼後,稍微等一下,連線成功的話視窗就會自己消失到右下角。
    想要中斷連線的話再把視窗點出來按斷線即可。

    然後就可以上去戳艦娘啦!

    http://i.imgur.com/En1alnj.png

    啊,只是隻DD
    可惡 馬克撈到了


七、雜談/廢話

    發了基礎建設篇後有些板友提醒安全性的部分,非常感謝。
    其實我一直很難拿捏的是想要盡量簡單但同時也要有足夠的安全性,
    於是就變成這樣不上不下,但普遍的安全性來說已經OK了。

    也有板友覺得有專業知識再做較好。
    我個人的觀點是,有的話很好,沒有的話照著做也可以完成;
    當然在管理上可能有些不易,但我認為是可以克服的。Linux很有趣的,真的
    小弟高中是文組,大學讀資工,也是從照著做開始慢慢學起來的。


    回歸到VPN,起初我自己也是使用PPTP VPN,因為它架設非常之簡單,
    但因為某大網路長城過於強大,有時候會導致連線極度不穩定,
    後來還是改用穿透性較強且安全性較高的OpenVPN。
    目前在強大的網路長城(應該沒有對岸那個強就是了)下沒有任何使用上的問題。

    也因為PPTP的穿透性較弱,經板友來信告知與我個人測試後,
    確定ConoHa阻擋掉GRE協定,導致PPTP在ConoHa無法架設(OpenVPN沒問題),
    要租用ConoHa的板友請再三考慮。

    再次提醒,設置密碼時,
    請使用大小寫字母、數字、底線、問號等符號混雜的密碼,且避開既有單詞。
    一切的加密都防止不了密碼被暴力破解。




本次VPN架設教學至此,感謝收看;有問題歡迎發表推文或來信。

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.217.55
※ 文章網址: https://www.ptt.cc/bbs/KanColle/M.1434186790.A.FC9.html
angel84326: 樓下老馬克1F 06/13 17:13
yukicon: 提問,所以這樣可以多人共用一個VPS?2F 06/13 17:21
VPS當然可以,猜測你想說的是VPN?

VPN的話我在伺服器端的設定檔寫了一行「duplicate-cn」,可以讓同組key同時多人連線
Davinais: Linux很有趣的,導致我家裡電腦一半以上都是linux...3F 06/13 17:24
yukicon: 我的意思是,設一個OPEN VPN,多個帳號?  唉,不知道該4F 06/13 17:54
yukicon: 正確的表達,就是甲乙丙三人分別用不同的ID通過VPS
yukicon: 使用VPN
如果要帳號密碼會嚴重降低安全性

如果希望有多組key發配給不同的人
可以在產生的地方 ./build-key-pass <任何名稱>
假設取叫 test 好了 ./build-key-pass test
然後後面就自行把client代換成test (test.crt test.key test.ovpn)
可以用一樣的方法製作多組key分別給甲乙丙
Hevak: 推有提到route的部份,一直常有人問7F 06/13 18:14
※ 編輯: Akaz (140.112.217.55), 06/13/2015 19:34:43
看板 KanColle
作者 takahashikag (奥様は正妻空母)
標題 [攻略] 自己的VPN自己架:OpenVPN-AS 架設
時間 Sat Jun 13 23:30:45 2015



前面 Akaz 大講述了開使用源的 OpenVPN,安裝後再使用 easy-rsa 套件簽發伺服端、連
接者端與使用者端共三組數位憑證,接著撰寫供 OpenVPN 使用的 .ovpn 檔案的模式,而
這邊要實作的是採用 OpenVPN Access Server 的方案,一樣有圖文並茂版的網誌:

http://goo.gl/HtEUbF  (網址太長了,只好用縮網址 www
==

https://c1.staticflickr.com/1/468/18538827888_7ca1388750_b.jpg
先說,美雲このは真的好可愛(滾動

==
在前篇以 Vultr VPS 搭配 Ubuntu 14.04 64-Bit 架設 PPTP 服務之後,這次要示範的是
在日本主機商 ConoHa.jp 上架設 VPN 服務,由於 ConoHa.jp 阻擋了 GRE 通訊協定,因
此無法在上面架設 PPTP 服務,考慮到以 Linux 系統架設 L2TP/IPSec 或是 Cisco IPsec
服務有一定難度與低容錯性,這裡以較為簡單的 OpenVPN 作實作

OpenVPN 可以說是一個用於建立虛擬私人網路絡加密通道的整合軟體環境,在建立連線上
,OpenVPN 允許使用公開金鑰、電子憑證、或者使用者名稱、密碼的方式來進行身份驗證
,進而產生連線,而在運行 Linux/UNIX 系統的 VPS 上建立 OpenVPN 服務有兩種方式,
一種是藉由 apt-get 獲得整合好的安裝套件 OpenVPN Access Server,另一種也是透過
apt-get,但採用的是開源的 openvpn,安裝後再使用 easy-rsa 套件簽發伺服端與使用者
端共三組數位憑證,接著撰寫供 OpenVPN 使用的 .ovpn 檔案,而這次實作的是前著,採
用 OpenVPN Access Server 的方案

接著談一談 ConoHa.jp,ConoHa.jp 算是日本主機商之中較為的國際化的一家,相較於俗
稱櫻花 VPS 的 SAKURA VPS 與 CloudCore 一般排外,沒有限定日本地區信用卡、註冊時
需要驗證日本電話號碼與地址的要求,反而一開始就提供了英文與簡體中文的介面,也支
援國際信用卡與 PayPal 等支付方式

而在規格上,ConoHa.jp 使用的是 Xen 虛擬化技術,故不會有採用 OpenVZ 技術的 VPS
廠商一樣發生超賣單位,超出的伺服器極限的問題,而以最低規格而言,就提供了兩個處
理器虛擬單位,1GB 記憶體,與 50GB 容量的固態硬碟,傳輸流量方面無限制,上下速度
 100Mbps,預設提供 IPv4 與 IPv6 位址,價格則是每個月 900 円

https://c1.staticflickr.com/1/427/18726592055_af696d819e_b.jpg
ConoHa 的英文版介面

https://c1.staticflickr.com/9/8833/18700286626_ae71c0726e_b.jpg
以基本的 1GB 記憶體,50GB 容量的固態硬碟方案而言,每小時 1.3 円,一天 31.2 円,
一個月則算成 900 円

https://c1.staticflickr.com/1/276/18538813748_0a6ee0383b_b.jpg
單位部屬速度比 Vultr 還要快,登入方式一樣是 ssh root@VPS 的網路位址 ,輸入管理
密碼後以 root 權限登入

root 帳號的密碼就是剛才在部屬單位時你設定的 root password,這邊要特別說一點,由
於 ConoHa.jp 預設是沒有任何方式去保護你的單位,在安全登入上, 由於改 SSH 連接埠
的工程浩大,因此建議安裝一個名叫 fail2ban 的安全套件來防止惡意登入者去猜 root
密碼,進而取得 VPS 的操控權

這邊先使用 apt-get install fail2ban 來獲得安全套件
安裝後使用 p -a /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 複製設定檔

然後使用 vim /etc/fail2ban/jail.local 修改設定檔,關於 fail2ban 在 Ubuntu 的設
定網路上很多了,這邊就不贅述了,但是要確認 SSH 防護有打開
** 這邊簡單敘述一下 Vim 文字編輯器的指令,i 是進入編輯模式、Esc 會離開編輯模式
到上層,在上層 :w 是存檔、:wq 是存檔後離開、:q 是直接離開不存檔

使用 /etc/init.d/fail2ban restart 來重新啟動 fail2ban 服務,至此 fail2ban 安裝
完成

https://c1.staticflickr.com/1/412/18540394989_9aec602c1e_b.jpg
用 fail2ban-client status 可以確認 fail2ban 的運作模式,看到附圖那樣基本就沒問
題了

https://c1.staticflickr.com/1/373/18540394919_e434b2f3ce_b.jpg
順手用 apt-get install iptables 安裝路由表套件,接著用 wget 指令獲得 OpenVPN A
ccess Server 安裝包

https://c1.staticflickr.com/1/358/18103962664_074523edcd_b.jpg
wget http://swupdate.openvpn.org/as/openvpn-as-2.0.17-Ubuntu14.amd_64.deb 是給
64 位元 Ubuntu 14.04 LTS 使用

https://c1.staticflickr.com/9/8857/18538813518_eea28ac732_b.jpg
下載完成後使用 dpkg -i openvpn-as-2.0.17-Ubuntu14.amd_64.deb 來安裝剛才下載的套


接著就可以看到如上圖的畫面,管理者介面是 https://主機位址:943/admin,一般使用者
則是 https://主機位址:943/,同時會要你創一個管理 OpenVPN Access Server 服務的帳
號,預設名稱是 openvpn,密碼則是自行輸入,會作一次確認

與開源的 OpenVPN 安裝套件不同,OpenVPN Access Server 是由開發 OpenVPN 的母公司
所開發的簡易安裝套件,與前者不同,OpenVPN Access Server 安裝過程較為方便,伺服
端與客戶端的設定也已經做好了,但是有著除非購買授權碼,一般用戶最大兩個客戶端同
時連線的限制,當然對於小規模的應用來說,兩個人同時連線已經堪用,如果需要更多連
線的話,建議使用開源的 OpenVPN 安裝套件做架設

https://c1.staticflickr.com/9/8891/18729014621_d44aaca884_b.jpg
以 https://主機位址:943/admin 進入管理者介面,看到CA憑證錯誤的資訊不用驚慌,那
是正常的

https://c1.staticflickr.com/1/348/18721735892_5ddce4c39a_b.jpg
第一次啟動會看到 OpenVPN Access Server 的 EULA(終端用戶許可協議)

https://c1.staticflickr.com/1/306/18105927023_2cd671de96_b.jpg
同意之後就可以看到這個管理畫面

==
接下來要解釋如何在 OpenVPN Access Server 添加使用者帳號,這裡需要再次以 root 權
限的帳號進去創立新帳號

可以先輸入 vim /etc/group 與 vim /etc/passwd 來檢視使用者群組與狀態,沒意外的話
會看到使用者最下方有一個 openvpn,這是你在架設 OpenVPN Access Server 時創的管理
者帳號,其實這個帳號也可以擁有設定檔、連線到 OpenVPN 的功能,不過我建議另外創兩
個單純用於連線的帳號

https://c1.staticflickr.com/1/510/18105926883_8940d7cd9a_b.jpg
以 vim /etc/group 檢視使用者群組,接著以 :q 離開

https://c1.staticflickr.com/1/471/18700291646_3d327957c3_b.jpg
以 vim /etc/passwd 檢視使用者狀態與權限,接著以 :q 離開

https://c1.staticflickr.com/1/395/18538900360_d6a30b4d04_b.jpg
輸入 adduser client01 指令會創造出一個名叫 client01 的帳號

https://c1.staticflickr.com/1/309/18103967634_3a27db63f2_b.jpg
輸入 client01 的密碼,輸入後會再作一次確認,接著會確定使用者組態,一路 Enter 下
去吧

https://c1.staticflickr.com/9/8849/18729020191_364059279f_b.jpg
最後會確認使用者組態是否正確,沒錯就按 Y 確認並離開,在依照一樣的流程創一個 cli
ent02

https://c1.staticflickr.com/9/8889/18726597075_9dbd860a77_b.jpg
再次以 vim /etc/group 就會看到剛才創立的兩個帳號,接著以 :q 離開

https://c1.staticflickr.com/1/448/18540399909_f738d8c3a6_b.jpg
在就可以在 OpenVPN Access Server 管理介面以管理帳號創兩個一樣名稱的帳號

https://c1.staticflickr.com/1/547/18538900000_8036bd19c4_b.jpg
以 https://主機位址:943/ 進入使用者介面,看到CA憑證錯誤的資訊一樣不用驚慌,那是
正常的

https://c1.staticflickr.com/1/372/18700291326_56a15a96ac_b.jpg
右下點選 Login ,輸入使用者帳號與密碼,密碼是剛剛創立帳號時輸入的

https://c1.staticflickr.com/1/498/18105936403_b7384f5552_b.jpg
接著會看到這個畫面,你可以下載上方設定好的連線軟體,或是下載下方的設定檔搭配自
己的 OpenVPN 連線軟體

https://c1.staticflickr.com/1/499/18538909720_dc8035f249_o.png
下方的設定檔會下載一個 .ovpn 檔頭的設定檔到你的電腦,我使用 Tunnelblick 這套軟


https://c1.staticflickr.com/1/331/18540409499_66ae34d08f_o.png
匯入設定檔後,第一次連線時依照設定檔跟軟體的差別,可能會詢問使用者帳號與密碼

基本上以 OpenVPN Access Server 為基礎架設的 VPN 服務就完成了,再來是實作測試,
以花蓮地區的 vDSL 服務作測試,理論頻寬 60M/20M,離光纖交換機箱距離約三百米以內
,國內直接連線到伺服器延遲約 46 至 55 微秒

https://c1.staticflickr.com/9/8838/18105936253_06c8ccde19_b.jpg
單向測試,連線到日本後在連線到東京地區的測試點

https://c1.staticflickr.com/9/8847/18540409409_4ca0c53d6a_b.jpg
雙向來回,先連線到日本再連線回台北地區的測試點

基本上延遲是在可以接受的範圍,封包遺失率在可以接受的水準,而連線速度上拜廠商東
家 GMO Internet Inc. 那條高速回線的威能,以國內個人使用最高速的 100M 而言,可以
衝到你自己網路的極速

==
話說日本的主機廠商很喜歡玩二次元形象這種公關行銷,在 CloudCore 的雲野コア、櫻花
VPS 的桜葉愛 之外,ConoHa.jp 的 美雲このは 與 美雲あんず 姊妹二人組也很紅,不過
在出現頻率上美雲このは比例比較高就是了

話說このは的聲優是上坂堇,其姐妹あんず的聲優是內田真禮,這根本就是凸守早苗和小
鳥游六花的搭配(拖走

https://c1.staticflickr.com/1/386/18700300826_d2dfb79b07_b.jpg
把 ConoHa.jp 的主網址改成 https://www.conoha.jp/conoha ,美雲このは會出來跟你打
招呼

https://c1.staticflickr.com/1/533/18729029191_5d9651c402_b.jpg
在主機管理面板也可以看到她噢,不過介面語言要選日文,再把介面風格切換成 このはモ
ード ,其他介面語言下不知為什麼出不來

https://c1.staticflickr.com/1/335/18581529170_2130fda72c_b.jpg
美雲このは同時也擔任東家 ConoHa.jp 的錯誤娘

--
           我的噗浪:http://www.plurk.com/Takahashi_65
           我的推特:https://twitter.com/#!/Takahashi_65
           我的網誌:http://takahashi65.blogspot.tw/
         Fenrisulfr: http://www.fenrisulfr.org/

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 133.130.54.48
※ 文章網址: https://www.ptt.cc/bbs/KanColle/M.1434209453.A.E63.html
sk10037643: 所以說 那個噗浪狀態列到底是怎麼一回事w(重點錯1F 06/13 23:42
clse0190: 可能的話 用預先密鑰的ONEBYONE會比較好2F 06/13 23:49
clse0190: 基於握手是明文,容易被針對,預先交換的.KEY在個人使
clse0190: 用上反而不容易被干擾,是比較推薦的選項


--
※ 作者: terievv 時間: 2015-06-14 02:20:49
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 1329 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇