為什麼會想要自架防火牆( pfsense )呢?又為什麼想要架設虛擬私人網路( OpenVPN )呢?說穿了,都是因為當初走上自架 WordPress 部落格這條不歸路所造成的結果!
一直以來,在 WordPress 後臺,幾乎每天都可以看到非法連線、惡意攻擊…的紀錄,雖然都沒有造成嚴重的傷害,部落格都活得好好的,但是每天看到那些不正常的連線,心裡難免毛毛的。
而在部落格中,並沒有任何會員資料(因為非營利用途),而電腦硬碟也僅是監視器錄影檔與家人生活照片、影片( 因為使用 Plex 做影音串流)而已,真的也沒有任何有價值的資料值得被破壞或盜取。
不過,就是想要把那些礙眼的紀錄,從生活中移除。怎麼實現呢?大約花了一年左右的時間,在 Google 爬文、看 Youtube 頻道、加入 Facebook 社團學習…,現在終於實現了當初設定的目標了。在 WordPress 後臺中的非法連線紀錄,終於減少許多了~
Table of Contents
免費防火牆只能選擇 pfsense 嗎?
要做一件完全陌生的事之前,千萬不要一開始就行動,不然會有很大的機率做白工!
畢竟自己不是理工科系的背景,所以大概花了一年左右的時間,了解什麼是防火牆?什麼是 VPN ?
16 款免費防火牆
雖然這一篇不是最新的文章,但是卻能讓外行人一看就可以把範圍收斂下來: Best free Linux router and firewall distributions of 2020
作者把 16 款免費防火牆的優缺點都列出來了,當然在文中也可以找到相關的關鍵字,然後做深入的了解。
- IPCop – avoid at all cost
- Smoothwall – long dead
- DD-WRT – no longer competitive
- M0n0wall – retired
- Tomato – not for new routers
- Zeroshell – poor choice
- VyOS – no Web interface
- OpenBSD and FreeBSD – use only if you have 10+ years of the command line experience
- Debian and Ubuntu – don’t use general purpose OS for your router
- Untangle – is it really free if OS asks you to upgrade to a paid version?
- Sophos – small fish in an enterprise pond
- Endian – you really have to pay to use it fully
- OPNsense – a raising star
- OpenWRT – a proven veteran
- pfSense – most popular
- IPFire – contender
以上紅色字體的防火牆,就是曾經進行安裝,卻卡在安裝過程;而有些則是完成安裝,但是遇到問題時,居然找不到教學文來解決問題。綠色字體的防火牆,是完成安裝也使用了一陣子的產品。
3 款集中式威脅管理( Unified Threat Management,UTM)
在了解免費防火牆的過程中,無意間看到網友偶而會拿 UTM ( Unified Threat Management )來比較。剛開始,的確是看的一頭霧水,有看沒有懂。不過,在閱讀幾篇文章後,衡量自己的背景、能力,於是就決定使用 pfSense 來架設家庭防火牆了。
雖然 UTM 也有防火牆的功能,而且操作介面幾乎都比上述 16 款免費防火牆直覺,然而最不適合非理工科系背景使用的原因就是:
- 討論文章少
- 幾乎都要尋求原開發商的技術支援
- 門檻高,因為功能太多,設定複雜
- 需具備網路知識背景才能理解專業術語
假使你有興趣玩玩 UTM 的話,可以自行 Google 以下產品:
- ClearOS
- 開發商是 HPE
- 放棄考慮的原因: 實用的外掛幾乎都要付費
- Sophos
- 網路上的討論文章極少,幾乎只能到官方論壇去求援
- 有網友分享這款產品是免費的,但是下載過程極繁瑣
- Simplewall
- 連到官網發現,版本似乎很久沒更新了
安裝 pfsense 防火牆
需要執行額外程式才能架設 OpenVPN Server 嗎?
使用了 Vigor 2120n plus 入門款防火牆,也有好幾年的時間,當初就是看上它支援許多 VPN 的協定,同時價錢也不會太貴,所以剛入手時,馬上就設定了幾種 VPN 連線方式(紅色),讓家人可以成功翻牆( Vigor 2120n plus 翻牆實例: 請點我)。
- PPTP
- L2TP
- IPsec
- L2TP over IPsec
- IKEv2
- SSL
畢竟這是一款入門防火牆的產品,所以無法以國家為物件,進行封鎖連線;即使想要手動新增封鎖 IP 的話,就會遇到數量上限的問題。
所以,現在既然有念頭要自架防火牆了,當然就要找到一個新產品,可以解決眼前的問題–>【封鎖特定國家 IP 】;同時還要能提供已經在使用的服務–> 【翻牆必備, VPN 服務】。
回過頭來看看,其實 pfsense 就已經內建了,所以不需要安裝額外程式,只要設定正確就可以直接使用了。很方便,不是嗎?
為什麼要使用 OpenVPN 呢?
一開始在爬文時,觀念中還停留在 SSL VPN 的設定是最方便的。可是卻找不到一款免費防火牆產品,有內建 SSL VPN 的功能。雖然覺得很奇怪,但是又不想花時間去了解原因。在過程中,卻看到了大多數人都是正面評價,讓我也不得不改變目標,來試試看好了。
PPTP | L2TP/IPsec | Open VPN | |
---|---|---|---|
加密等級 | 128-bit | 256-bit | 256-bit |
安全等級 | 普通 | 高 | 最高 |
連線速度 | 較快 | 較慢 | 快 |
作業系統 | 微軟、 Mac、 Android | 微軟、 Mac、 iOS、 Android | 微軟、 Mac、 iOS、 Android |
硬體相容 | 電腦、 手機、 平板。 | 電腦、 手機、 平板。 | 電腦、 手機、 平板。 |
專家評比 | 普通 | 尚可 | 推薦 |
結論 | 速度快, 但是安全性低。 | 可做為 第 2 選擇 | 最推薦, 速度快、 安全可靠、 用戶端設定簡單。 |
安裝 pfsense 的硬體需求
首先要找一台舊電腦、USB隨身碟、至少有兩個網路孔,這樣子就可以開始安裝 pfsense 了。不然,也可以連上官網檢查自己的硬體配備,是否在支援清單裡面: FreeBSD 12.2-RELEASE Hardware Notes
假使想省事,乾脆買一台硬體來安裝 pfsense 也是可以: netgate線上商店、Protectli(全球出貨,包含臺灣)
最低要求 | 建議配備 | |
---|---|---|
處理器 | 500 Mhz | 1 GHz |
記憶體 | 512 MB | 1 GB |
磁碟 | 1 GB | 4 GB |
網路卡 | Intel晶片 | Intel晶片 |
圖文並茂的安裝過程
從官網下載安裝檔後,使用 Win32 Disk Imager 或 Rufus 把映像檔寫入 USB 隨身碟,然後把電腦改成 USB 隨身碟開機,接下來參考官網的圖片,應該也可以像我一樣,完成安裝 pfsense 了。
不過要注意一點,下載映像檔的時候記得選【Console: VGA】這個選項,這樣子才能用螢幕與鍵盤來操作安裝,不然的話,只能一直使用指令透過 COM port 來操作安裝。
完成映像檔寫入磁碟後,記得把 USB隨身碟拔掉,讓下一次重開機時,直接由磁碟開機進入初始設定畫面。因為 pfsense 的預設設定僅是把 WAN 端設定成 DHCP 模式而已,而 LAN 端的設定都是空白。
pfsense 初始設定
現在我們要針對 LAN 端做設定,完成後才能從其他區網的電腦,透過網路連線到這一台防火牆做客製化的設定。在防火牆電腦的螢幕畫面,可以看到選單中,有 16 個分類,基本上只要設定紅色標示的那兩項就可以了。
- 0) Logout (SSH only)
- 1) Assign Interface
- 2) Set interface(s) IP address
- 3) Reset webConfigurator password
- 4) Reset to factory defaults
- 5) Reboot system
- 6) Halt system
- 7) Ping host
- 8) Shell
- 9) pfTop
- 10) Filter Logs
- 11) Restart webConfigurator
- 12) PHP shell + pfSense tools
- 13) Update fromconsole
- 14) Enable Secure Shell (sshd)
- 15) Restore recent configuration
- 16) Restart PHP-FPM
設定完成後,將防火牆重新開機就好了。現在,可以在區域網路中的任一台電腦連線到防火牆做客制化的設定了。第一次登入 pfsense 時,要使用預設的帳號密碼:
- Username
- admin
- Password
- pfsense
以我的例子而言,WAN 端設定成 DHCP 模式,而 LAN 端設定成靜態 IP: 192.168.101.1,所以只要在網址列打上 IP 就可以進入登入畫面了。
設定 OpenVPN Server
在使用服務之前,需要先在 Server 端完成以下 6 個設定:
- 建立 Server 端的憑證
- 啟動設定精靈
- 設定 Client 端的連線資訊
- 安裝 OpenVPN Client Export Package
- 新增連線使用者帳號
- 匯出 Client 端的連線檔案
現在就開始來看細部設定囉~
建立 Server 端的憑證
第 1 步在導覽列中,進入【System】->【Cert. Manager】後,可以在【CAs】找到【+Add】
第 2 步就是在 pfsense 新增 Server 的憑證
啟動設定精靈
接下來的設定,比較簡單,直接參考下面 3 點進行設定:
- Type of Server: Local User Access
- Certificate Authority: 下拉選單中,指定剛剛建立的憑證
- Certificate: 下拉選單中,指定剛剛建立的憑證
接著就是開始輸入連線資訊:
接著就按’Next‘,來到【Traffic from clients to server】與【Traffic from clients through VPN】,直接在方塊中打勾,這樣子 pfsense 會自動將 rule 新增道防火牆設定中。最後,就完成設定精靈的所有設定了。
設定 Client 端的連線資訊
其實當我們完成上述兩章節的步驟後,server 就已經被啟動並且正在運作了。而當我們在建立 VPN 連線使用者的帳號之前,需要先針對用戶端的 VPN 連線做連線方式的設定。
接下來會有 5 個部分需要設定:
- General information
- User Authentication Settings
- Cryptographic Settings
- Tunnel Settings、Ping settings
- Advanced Configuration
以上 5 個部分,需要根據之前完成的 Server 端資料,作相對應的設定才能讓使用者成功連線。
1. General information
在 General information 的部分,需要在 Server host or address 當中,輸入防火牆對外的 IP。其餘的欄位,保持預設值也可以。
2. User Authentication Settings
這裡是要輸入要連線的使用者帳號與密碼,待會在新增使用者的時候,要跟這裡輸入的帳號密碼一致才能成功連線。
3. Cryptographic Settings
在 Peer Certificate Authority、Client Certificate、Auth digest algorithm 修改成下圖的設定;Hardware Crypto,就看你的硬體有沒有支援再來決定了。
4. Tunnel Settings、Ping settings
這一部分,我並沒有做修改,使用預設值也可以連線。
5. Advanced Configuration
選擇【IPv4 only】,然後按下【Save】,就完成 Client 端的連線資訊的設定了。
安裝 Client Export Package
為了要方便將使用者連線檔案匯出,方便在電腦或手機完成認證,所以需要安裝一個外掛程式: OpenVPN_Client_Export_Package
在 System / Package Manager / Available Packages –> Search term 欄位中,輸入open,就可以找到了,直接安裝在 pfsense 就可以了。
新增連線使用者帳號
要注意這裡的使用者帳號與密碼,需要與前面【設定 Client 端的連線資訊】/ 【2. User Authentication Settings】的帳號密碼一致,並且要把【Certificate】打勾。
Certificate authority 要選擇前面【建立OpenVPN_Server端的憑證】->【System】->【Cert. Manager】新增的憑證,然後按下’Save’就可以了。
匯出 Client 端的連線檔案
在 pfsense 導覽列中,前往【OpenVPN/Client Export Utility】後,按下【Client Export】就可以下載用戶端 VPN 連線檔案了。
- Most Clients:
- 這個檔案是給電腦使用的
- Android:
- 這個檔案是給 Android 手機使用的
- OpenVPN Connect(iOS/Android):
- 這個檔案是給蘋果裝置使用的
用戶端連線實例
本身使用過 Windows 10 的電腦與Android手機,都可以連線成功。坦白說,比之前使用 Vigor 2120n plus 翻牆( SSLVPN )來的方便,速度也不會比較慢。
Windows 10 用戶端連線 OpenVPN Server
首先要先下載官方連線軟體,然後將之前匯出的【Most Clients】檔案,匯入連線軟體後,就可以翻牆了!是不是很簡單呢?
Step 1:匯入檔案後,輸入帳號與密碼,即可連線
Step 2:Windows 10 用戶端翻牆成功
Android 手機用戶端連線 OpenVPN Server
在 Google Play 搜尋【OpenVPN Connect – Fast & Safe SSL VPN Client】,然後安裝在手機當中。然後將之前匯出的【Android】檔案,匯入 APP 後,就可以翻牆了!
Step 1:匯入檔案後,輸入帳號與密碼,即可連線
Step 2:Android 用戶端翻牆成功
常見問題
1. pfsense 安裝失敗,如何解決呢?
其實我也遇過相同問題,在社團求救後,版主建議在 BIOS 當中,改成 UEFI 開機,就可以安裝成功了。
2. opensense 不好用嗎?
不論是 opensense 或 pfsense,我都有安裝過。最後為什麼會改用 pfsense 呢?
就個人而言,原因就是 pfsense 的使用者真的很多,相對的討論文章也很多。這樣子,要在網路上找答案解決問題,真的比較容易。
另外一點,以外掛程式的數量而言, pfsense 還是比較多。
但是,兩個防火牆比較後,個人喜歡 opensense 的介面,因為比較直覺!
3. OpenVPN連線穩定嗎?
過去壹季的時間,幾乎每天都會使用 VPN 。至少還沒遇到連線失敗或是中途斷線的狀況。VPN連線算是穩定了~
4. 可以使用其它用戶端連線軟體/APP嗎?
應該是可以吧,因為我有一陣子都無法連線成功,從記錄檔看到連線正常但是無法取得IP。自從在社團中看到有人建議安裝【OpenVPN官方連線軟體】後,就可以正常使用了。
5. OpenVPN Server / Client / Export / Account 設定太複雜了,該放棄嗎?
說真的,一點都不複雜。我也是跟著文章中的圖,一直設定下來就成功了,千萬不要被上面那些圖片或文字給嚇到了。
你可能有興趣>>> DIY 居家監控系統,不能少了 VPN 連線功能!