[攻略] 自己的VPN自己架:基礎建設篇

作者: Akaz (Akaz)   2015-06-11 18:23:05
經過測試,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
作者: ian90911 (xopowo)   2015-06-11 18:25:00
お、おう...
作者: caten (原PO不是人)   2015-06-11 18:29:00
O...oh...
作者: judy3116 (坑底生存者)   2015-06-11 18:29:00
教學詳細,推一個
作者: angel84326 (吹雪本命!)   2015-06-11 18:30:00
推教學 但這.....痾....
作者: kira925 (1 2 3 4 疾風炭)   2015-06-11 18:30:00
我不是很喜歡sudo 特別你開這種全權限的要這樣還不如進去以後用su 雙層密碼保護說來fxxutanaka用字典攻擊法會炸的吧XD恩,ssh key應該是最好的XD
作者: feignego (feign)   2015-06-11 18:33:00
おぅ>△<
作者: proofmax1   2015-06-11 18:34:00
太神啦 一定要M
作者: ttt95217 (略)   2015-06-11 18:38:00
純推不下
作者: clse0190 (shadow)   2015-06-11 18:38:00
還是別sudo吧
作者: Hitomi29 (ドM14号電探)   2015-06-11 18:49:00
趕快推 不然別人以為我們看不懂!
作者: kira925 (1 2 3 4 疾風炭)   2015-06-11 18:49:00
sudo要很仔細處理權限 不然sudo其實更不安全
作者: krrvincent (krr)   2015-06-11 18:52:00
有點忘記Linux是怎麼處理權限繼承的問題了 比照Win的話母程序給權限頗危險...
作者: r790528 (羽月於雨月語月)   2015-06-11 18:55:00
測試一下密碼 FuckYouTanada要8243年喔w
作者: Sousake (specialist URUZ 7)   2015-06-11 19:02:00
我的磚夜來自堪口雷
作者: kira925 (1 2 3 4 疾風炭)   2015-06-11 19:06:00
@羽月 如果是跑字典檔 可能幾天就炸裂了XD
作者: darkgerm (黑駿)   2015-06-11 19:19:00
擋 ssh 還是上一下 iptables + sshguard 比較好
作者: Kagero (摩荔枝天(茄汁))   2015-06-11 19:23:00
未看先猜文組的反應都是在看無字天書(X
作者: kuojames2580 (幹幹幹幹幹)   2015-06-11 19:26:00
明明就是基礎篇我卻看不懂
作者: Sousake (specialist URUZ 7)   2015-06-11 19:26:00
也有文組知道 加入居居不必選校別 加入勘口雷不必選組別
作者: tom11725 (奧特斯)   2015-06-11 19:28:00
原PO選擇ConoHa這個附費VPN有什麼優點嗎最近也在物色附費VPN,因為太多了不知道該如何選擇@@
作者: sodasu11 (LaZyFRoG)   2015-06-11 19:38:00
看不懂照推w
作者: Pmking (猴王)   2015-06-11 19:39:00
至少 加入勘口雷的文組們有八成都知道怎麼掛VPN
作者: Kenqr (function(){})()   2015-06-11 20:03:00
conoha醬有點嬰兒肥
作者: qooLD (遺忘之都)   2015-06-11 20:42:00
糟糕有點心動...conoha有點可愛...可是我宿舍電腦連不上w
作者: aaaaooo (路過鄉民)   2015-06-11 20:55:00
看到freeBSD就知道要推了www
作者: Chimaerason (Petit Mica)   2015-06-11 21:06:00
居然有 FreeBSD XDDD
作者: feignego (feign)   2015-06-11 21:11:00
FreeBSD 是五六年前消失的東西了吧...
作者: kira925 (1 2 3 4 疾風炭)   2015-06-11 21:17:00
OpenBSD還在阿...
作者: werrty (ART)   2015-06-11 21:33:00
快推!不然會被說看不懂!
作者: feignego (feign)   2015-06-11 21:53:00
上一次server從FreeBSD灌成Ubuntu...四五年前了zzz但是自從不當engineer之後,linux語法通通忘光光啦 orz
作者: qooLD (遺忘之都)   2015-06-11 21:59:00
周末在刷卡好了...比較有時間研究怎麼寫XDD
作者: icons   2015-06-11 22:44:00
艦娘版愈來愈多這類文,不知道算不算好事。雖然我覺得超棒的原PO辛苦了!感謝教學!
作者: kingwilly71 (青色之瞳)   2015-06-11 23:27:00
這還是要有專業知識再動手比較好我自己是有用aws 只是他還要拉一推security group會更麻煩一點
作者: handsomecat (((恐(((′・ω・`)))慌)))   2015-06-11 23:29:00
X你田中 XDDDDDDD
作者: icemango (我是芒果)   2015-06-11 23:46:00
是走錯板了膩 XDDDDDDDDDDD
作者: George017 (阿丙)   2015-06-12 00:17:00
小提醒,如果用得是Ubuntu,它預設是沒root的喔只能用su把第一個管理員帳號升級成等於root權限指令下sudo時你其實就是在用root等級的權限做事所以一些發行版在第一次輸入sudo時會有一行小提示密碼強度的部分,不同的系統/服務對同樣組成的密碼評價不同(在一些服務中顯示為高強度;在另一些卻只有中)以及不同情境下會有密碼長度的限制
作者: kaori9993 (鐵騎臣)   2015-06-12 01:10:00
感謝,真的實用,這樣就方便多了
作者: mattc123456c (Matt Zhuang)   2015-06-12 01:34:00
我以為我到了Linux版了

Links booklink

Contact Us: admin [ a t ] ucptt.com