GCP帳號快速註冊 谷歌雲防火牆規則創建教程
谷歌雲防火牆規則創建:從零開始,避開90%的坑
說到防火牆規則,很多人腦海裡可能浮現出一堆複雜的技術術語和密密麻麻的配置界面,但其實它沒你想的那麼可怕!想像一下,你的雲伺服器就像個房子,防火牆規則就是房子的保安和門鎖——設定好了,壞人進不來;設定錯了,可能連你自己都進不了家門,甚至讓小偷大搖大擺走進來。今天這篇教程,我就用最土話、最直觀的方式,帶你一步步搞定谷歌雲防火牆規則,避開那些新手常踩的坑,保你3分鐘內就能上手,安全又穩妥!
先搞懂基礎概念,別當無頭蒼蠅
在動手前,先搞清楚幾個關鍵概念,不然後面操作時會像在迷宮裡亂轉。首先,防火牆規則分「入站」和「出站」兩種:入站規則控制外界能否連到你的伺服器(比如訪問網頁、SSH連接),而出站規則則是控制你的伺服器能不能連出去(比如下載更新、連接數據庫)。大多數情況下,我們最常處理的是入站規則,畢竟防禦外來攻擊是重點。
再來說「協議」和「端口」。常見的協議有TCP、UDP、ICMP(比如ping命令用的就是ICMP),而端口則是伺服器上打開的「門」。例如,HTTP服務用80端口,HTTPS用443端口,SSH用22端口。舉個例子,如果你要讓外界能訪問你的網站,規則就得允許TCP協議的80端口;如果是FTP服務,則要開21端口(TCP)。記住,端口設置越精準越好,別傻乎乎地把所有端口都打開,那簡直是把自己家門鎖拆了,還貼個「歡迎光臨」的牌子。
最後是「源IP範圍」,也就是誰可以連進來。通常我們會用CIDR表示法,比如192.168.1.0/24代表192.168.1.0到192.168.1.255這個IP段。千萬別寫成192.168.1/24(少個點),GCP直接報錯;也別隨便用0.0.0.0/0(代表所有IP),特別是對管理端口如SSH 22,這簡直是給黑客送邀請函!
手把手教學:5分鐘創建你的第一條規則
步驟一:進入GCP控制台的防火牆頁面
第一步,打開瀏覽器,輸入console.cloud.google.com,登錄你的GCP賬號。這步看似簡單,但千萬別急著點擊,先確認你登錄的是正確的項目——有次我同事選錯項目,結果在生產環境瞎折騰了半天,差點把整個系統搞崩,最後發現是項目選錯了……點擊左側導航欄的「VPC 網路」,再點「防火牆規則」,這時候你會看到一頁規則列表,點擊上方的「創建防火牆規則」按鈕。這時候會跳轉到規則配置頁面,別被一堆選項嚇到,我們慢慢來。
步驟二:設置規則參數
首先給規則取個名字,比如「allow-http-80」,名字要見名知義,別起成「rule1」或者「test」,不然半年後你自己都忘記這規則是幹嘛的。接下來是目標,這裏有兩個選項:「所有實例」或「指定標籤」。如果你只想對特定實例生效,就選「指定標籤」,然後在實例上打上對應標籤(比如web-server);如果想全站生效,就選「所有實例」。但注意,選「所有實例」時要謹慎,尤其是生產環境,萬一不小心設了個過於寬鬆的規則,可能讓壞人有機可乘。
源IP範圍這部分要特別小心!比如你要開放80端口給所有人,可以寫0.0.0.0/0,但這其實很危險,因為任何IP都能訪問。更好的做法是只允許特定IP,比如你的辦公室IP段,或者CDN的IP段。比如「192.168.1.0/24」表示只有192.168.1.0到192.168.1.255的IP能訪問,但千萬別寫成「192.168.1/24」,少個點,GCP會直接報錯,這種細節錯誤我見過太多次了,客戶急得直跳腳,結果只是多打了一個點……
允許的協議和端口,比如HTTP的話填tcp:80,SSH是tcp:22,如果要多個端口可以用逗號分隔,比如tcp:80,tcp:443。但別傻乎乎地填tcp:80-443,這樣會把80到443的所有端口都開放,可能暴露不必要的服務。正確做法是明確列出需要的端口,比如tcp:80,tcp:443,tcp:22,這樣才精準。
步驟三:測試與驗證
規則創建完後,別急著喝杯咖啡休息,先測試一下。可以用telnet命令,比如telnet your-server-ip 80,如果返回成功,說明開放成功;如果連不上,檢查規則是否生效,或者防火牆規則是否被其他更高優先級的規則覆蓋。或者用GCP的連接測試工具,在控制台的「VPC網路」→「連接測試」中,輸入源IP和目標IP、端口,測試連通性。這時候你可能會發現,明明規則設置了,但還是連不上,這時候就要檢查實例的安全組(其實就是防火牆規則)是否應用到了正確的實例上。還有一個常見問題:規則創建後需要幾秒到一分鐘才能生效,別急著罵GCP,給它點時間緩衝一下。
GCP帳號快速註冊 避坑指南:這些錯誤你千萬別犯
規則優先級別別搞反
GCP的防火牆規則優先級數字越小,優先級越高。比如100的規則比1000的規則先生效。如果你設置了一個拒絕所有規則,優先級是1000,然後又設了一個允許特定IP的規則,優先級100,那允許的規則會覆蓋拒絕的,但如果優先級設反了,拒絕規則先生效,允許的就沒用。所以設置時要小心,比如常見的錯誤是把允許規則設為1000,拒絕設為100,結果整個網路都被拒絕了,這時候只能靠GCP的串列操作來修改,超級麻煩……
舉個真實案例:某次客戶說他們的SSH連接不了,我一看規則,發現他設了兩個規則,一個允許SSH 22端口(優先級1000),另一個拒絕所有入站流量(優先級100)。結果呢?因為拒絕規則優先級更高,SSH連接直接被擋在外面!這時候只能登錄GCP控制台,把拒絕規則的優先級改到1000以上,或者把允許規則優先級調高到50,才能解決問題。所以記住:優先級數字小=優先級高,這點絕對不能搞錯!
IP範圍設置要精準
CIDR表示法是防火牆規則的基礎,但很多人對它不太熟悉。舉個例子,192.168.1.0/24代表256個IP(192.168.1.0到192.168.1.255),而/24表示前24位是網絡地址,後8位是主機地址。如果你要寫192.168.1.100,正確的CIDR應該是192.168.1.100/32,這代表單個IP。但很多人會寫成192.168.1.100,沒加/32,GCP會報錯;或者寫成192.168.1.0/32,這就只允許192.168.1.0這個IP,而192.168.1.1到192.168.1.255都不行,這顯然是個大錯誤。
另外,避免使用過於寬泛的IP範圍。比如,你辦公室的IP是123.45.67.89,但你卻設置了0.0.0.0/0,這簡直是把家門鎖拆了,隨便誰都能進。正確做法是只允許123.45.67.89/32,或者更嚴格地,用CDN的IP段(比如Cloudflare的IP列表)。我之前遇到一個客戶,把SSH端口開放給0.0.0.0/0,結果一天之內被掃描了幾萬次,差點被破解成功,嚇得他趕緊改規則,還加了兩步驗證。所以說,IP範圍一定要精準,能小就小,別嫌麻煩。
進階技巧:自動化與監控
用Terraform管理規則
如果你的項目經常需要創建或修改防火牆規則,手動操作效率低還容易出錯。這時候可以用Terraform來管理,寫一個簡單的.tf文件,定義規則,然後apply一次就能部署。比如:
resource "google_compute_firewall" "allow_http" {
name = "allow-http-80"
network = "default"
allow {
protocol = "tcp"
ports = ["80"]
}
source_ranges = ["192.168.1.0/24"]
target_tags = ["web-server"]
}
這樣寫好後,terraform apply,規則就會自動創建,而且可以版本控制,方便回滾。不過要注意,Terraform的配置要準確,比如source_ranges如果寫成["192.168.1/24"],一樣會報錯,所以還是得注意CIDR格式。另外,Terraform還能帮你管理多環境(開發、測試、生產),避免手動配置時的疏忽。
設置日誌監控
開啟防火牆日誌後,所有匹配規則的流量都會被記錄到Cloud Logging,你可以在GCP控制台的「日誌查看器」中查看。建議設置告警,比如當有大量拒絕連接時發送郵件,這樣能及時發現攻擊。舉例:設定一個日誌過濾器,match: resource.type="gce_firewall_rule" AND logName="projects/your-project/logs/firewall.googleapis.com/firewall" AND jsonPayload.action="DENY",然後設置告警策略,這樣當有拒絕記錄時,就能立即通知你。
我曾經設置過一個告警,當單分鐘內DENY日誌超過100條時,自動發送郵件給團隊。結果某天凌晨收到通知,發現有個IP在瘋狂掃描SSH端口,趕緊把這個IP加入黑名单,避免了一次可能的攻擊。所以說,日誌監控不是多餘的步驟,而是保命的關鍵!
總結:規則雖小,安全事大
防火牆規則雖小,但關乎系統安全。定期審查規則,刪除無用的,避免遺留過於寬鬆的設置。就像家裡的門鎖,定期檢查是否需要更換,別等到被撬了才後悔。記住:安全無小事,細節決定成敗。每次設置新規則時,問自己三個問題:這規則有必要嗎?IP範圍夠不夠精準?優先級是否正確?養成這種習慣,你的雲伺服器會穩如泰山,黑客想進來?門都沒有!


