經過測試,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