1. 程式人生 > 其它 >RaspKaliPi魔改之路(二)safari跟我有仇——一些安全措施

RaspKaliPi魔改之路(二)safari跟我有仇——一些安全措施

寫在最前:
這個系列將會記錄我個人改造樹莓派的一些踩坑記錄。為了方便閱讀,以專題為單位拆分文章,不過文章之間仍有較強的聯絡,感興趣的可以從頭讀到尾。
這個系列只適合那些有較強動手能力喜歡瞎折騰並且 能對自己的每一次操作負全部責任 的樹莓派使用者。

參考的文章

nginx官方文件
noVNC官方文件
關於x11vnc,novnc和ssl/tls的一些討論
自簽名證書

自創概念

x11vnc-novnc埠:novnc的訪問埠,載入了x11vnc
x11vnc-novnc-nginx埠:nginx的訪問埠,載入了novnc


上回書說到,在樹莓派上配置了x11vnc之後我們終於能優雅地看見桌面了。

但是,與RDP“好歹有加密”不同,VNC協議預設都是明文傳輸。
如果只是在家裡用WiFi連線那還好說,如果是像我一樣穿透到公網,哪怕對於

指令碼小子 來說,你也像一個不穿衣服在大街上狂奔的傻X。

“誒SakuraFrp不是有加密選項嗎”
這裡我們要先搞清楚frp的工作原理。


如圖,訪客先連線frps,frps再把請求轉發給frpc。

被加密的部分只有frpc和frps之間的鏈路,從frps到訪客的鏈路仍然是明文。

所以自己給自己上加密就很有必要了。
如何做證書這裡不再贅述。需要注意的是,生成金鑰裡有個引數“1024”指定了金鑰長度,為了安全你可以自己增加大小,但是對處理器的要求也會成倍增加,自行考慮平衡。

來講講為什麼我要用noVNC。

一,這個世界上已經沒有什麼支援ssl/tls的免費vnc客戶端了。我找到的唯一一份遺產是x11vnc的子專案,

SSVNC 。不幸的是,這個2014年停止更新的軟體並不支援TLS,而 SSL的所有版本由於不可修補的安全漏洞都已被廢棄 。至於剩下的那些客戶端,全部都要收費。本著能白嫖就白嫖的原則,我轉向noVNC。它能夠把vnc協議轉為http協議,而後者已經有廣泛的tls支援。

“誒x11vnc不是內建html服務端嗎”

能說出這句話的人,你很牛。但是。就像我在上一篇文章中暗示的,x11vnc的整合度高到離譜(從它把操作手冊寫進命令列就能看出),為了一個隱形bug我要查上百份(很可能和我想要的資訊沒有半點關係的)過時文件。為什麼不用獨立,簡潔易懂,可魔改程度高的html服務端呢?

如何配置這裡不再贅述,官方文件寫得很清楚。
作為一個對安全性要求很像的人,我在noVNC上又套了一個nginx本地反代。確實,有點掩耳盜鈴的意思,不過至少要讓駭客第一眼看不出vnc執行在哪裡,順帶逃過一大堆自動化掃描指令碼的追殺。

終於,一個還算安全的遠端桌面方案完成了。在下一篇文章裡我會讓樹莓派的定製程度更強,操作比較離譜,追求穩定性的使用者不建議繼續學。

順帶吐槽:safari死活不肯接受我的自簽名證書,因為我造了一個很離譜的金鑰長度。傻X Safari。