作者Akaz (Akaz)
看板KanColle
標題[攻略] 自己的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
※ 文章網址: https://www.ptt.cc/bbs/KanColle/M.1434018189.A.936.html
推 ian90911: お、おう... 06/11 18:25
推 caten: O...oh... 06/11 18:29
推 judy3116: 教學詳細,推一個 06/11 18:29
推 angel84326: 推教學 但這.....痾.... 06/11 18:30
推 kira925: 我不是很喜歡sudo 特別你開這種全權限的 06/11 18:30
→ kira925: 要這樣還不如進去以後用su 雙層密碼保護 06/11 18:31
其實我個人認為 ssh key + 禁掉 root 密碼比較好 可是講這個太難了...
→ kira925: 說來fxxutanaka用字典攻擊法會炸的吧XD 06/11 18:32
→ kira925: 恩,ssh key應該是最好的XD 06/11 18:32
推 feignego: おぅ>△< 06/11 18:33
推 proofmax1: 太神啦 一定要M 06/11 18:34
推 ttt95217: 純推不下 06/11 18:38
推 clse0190: 還是別sudo吧 06/11 18:38
在非得用密碼登入的情況下 雖然 su 可以多一層密碼保護
可是 sudoer file 好好寫的話會比 su 還安全 (其實原本的就比 su 安全了)
要更高的安全性 就只能用 ssh key + 禁掉 root 密碼
推 Hitomi29: 趕快推 不然別人以為我們看不懂! 06/11 18:49
推 kira925: sudo要很仔細處理權限 不然sudo其實更不安全 06/11 18:49
反正現在是 single user,我是覺得簡單為主
推 krrvincent: 有點忘記Linux是怎麼處理權限繼承的問題了 比照Win的 06/11 18:52
→ krrvincent: 話母程序給權限頗危險... 06/11 18:52
不太懂你的意思...
推 r790528: 測試一下密碼 FuckYouTanada要8243年喔w 06/11 18:55
→ Sousake: 我的磚夜來自堪口雷 06/11 19:02
推 kira925: @羽月 如果是跑字典檔 可能幾天就炸裂了XD 06/11 19:06
推 darkgerm: 擋 ssh 還是上一下 iptables + sshguard 比較好 06/11 19:19
推 Kagero: 未看先猜文組的反應都是在看無字天書(X 06/11 19:23
我高中也是文組的 (?)
推 kuojames2580: 明明就是基礎篇我卻看不懂 06/11 19:26
→ Sousake: 也有文組知道 加入居居不必選校別 加入勘口雷不必選組別 06/11 19:26
推 tom11725: 原PO選擇ConoHa這個附費VPN有什麼優點嗎 06/11 19:28
→ tom11725: 最近也在物色附費VPN,因為太多了不知道該如何選擇@@ 06/11 19:28
https://www.conoha.jp/conoha 萌(X)
其實它是VPS喔
然後其實我自己主要不是用ConoHa...只是之前試用過覺得還不錯
推 sodasu11: 看不懂照推w 06/11 19:38
推 Pmking: 至少 加入勘口雷的文組們有八成都知道怎麼掛VPN 06/11 19:39
推 Kenqr: conoha醬有點嬰兒肥 06/11 20:03
→ qooLD: 糟糕有點心動...conoha有點可愛...可是我宿舍電腦連不上w 06/11 20:42
推 aaaaooo: 看到freeBSD就知道要推了www 06/11 20:55
推 Chimaerason: 居然有 FreeBSD XDDD 06/11 21:06
推 feignego: FreeBSD 是五六年前消失的東西了吧... 06/11 21:11
FreeBSD明明就好好地活著 去年才上10.0 XD
推 kira925: OpenBSD還在阿... 06/11 21:17
推 werrty: 快推!不然會被說看不懂! 06/11 21:33
推 feignego: 上一次server從FreeBSD灌成Ubuntu...四五年前了zzz 06/11 21:53
→ feignego: 但是自從不當engineer之後,linux語法通通忘光光啦 orz 06/11 21:54
→ qooLD: 周末在刷卡好了...比較有時間研究怎麼寫XDD 06/11 21:59
推 icons: 艦娘版愈來愈多這類文,不知道算不算好事。雖然我覺得超棒的 06/11 22:44
→ icons: 原PO辛苦了!感謝教學! 06/11 22:45
※ 編輯: Akaz (140.112.217.55), 06/11/2015 23:16:24
推 kingwilly71: 這還是要有專業知識再動手比較好 06/11 23:27
→ kingwilly71: 我自己是有用aws 只是他還要拉一推security group 06/11 23:28
→ kingwilly71: 會更麻煩一點 06/11 23:28
推 handsomecat: X你田中 XDDDDDDD 06/11 23:29
推 icemango: 是走錯板了膩 XDDDDDDDDDDD 06/11 23:46
→ George017: 小提醒,如果用得是Ubuntu,它預設是沒root的喔 06/12 00:17
→ George017: 只能用su把第一個管理員帳號升級成等於root權限 06/12 00:17
→ George017: 指令下sudo時你其實就是在用root等級的權限做事 06/12 00:19
→ George017: 所以一些發行版在第一次輸入sudo時會有一行小提示 06/12 00:20
→ George017: 密碼強度的部分,不同的系統/服務對同樣組成的密碼評價 06/12 00:23
→ George017: 不同(在一些服務中顯示為高強度;在另一些卻只有中) 06/12 00:24
→ George017: 以及不同情境下會有密碼長度的限制 06/12 00:24
Ubuntu 只是預設禁用 root 密碼而已 然後會給第一個 user sudo ALL 權限
(但是依然可以透過 sudo 來下 su 進到 root)
密碼強度當然是僅供參考,不過只要密碼夠強實際上是很難被打下來的
※ 編輯: Akaz (140.112.217.55), 06/12/2015 00:31:44
推 kaori9993: 感謝,真的實用,這樣就方便多了 06/12 01:10
推 mattc123456c: 我以為我到了Linux版了 06/12 01:34
※ 編輯: Akaz (140.112.217.55), 06/13/2015 17:14:22
推 jack82822005: su不需要sudo也可以直接下吧? 11/15 04:44
推 myau: 怪了 前面都照做卻始終卡在PieTTY那邊連不進去...orz 11/17 19:58