介紹
Uncomplicated Firewall, 簡稱ufw, 是Ubuntu系統上預設的防火牆套件. ufw是為簡化設定 iptables 而開發的一款工具. ufw 提供一個非常友好的介面用於建立基於IPV4, IPV6的防火牆規則. 另外 ufw 在Ubuntu 8.04 LTS 後的所有發行版中預設可用.
Step 1 檢查一下網路環境的 IPv6 是否啟動
由於現在已經是 2024 年了, 從聽到 IPv4 快要用完已經是好幾年前的事了!!! 我建議大家先做好準備, 到 ufw 的設定中去啟用 IPv6, 那麼要如何啟用呢? 請大家打開 /etc/default/ufw 並找到 IPV6=yes 這一行並確認這邊是 yes 而不是 no, 基本上應該都是 yes 才對, 但是還是 double check 一下較妥!
sudo nano /etc/default/ufw
Step 2 設定基礎網路條件
首先為了安全起見, 我們建議先將所有對外服務的網路都先鎖起來, 因為如果你有架站的話, 你也不希望有人隨意跑來 try 你的 server 看看有什麼服務對外開放, 因此我們直接先將所有對外服務都 deny 較妥, 透過 “sudo ufw default deny incoming” 即可達成此設定! 這邊要注意一下如果你是透過遠端 ssh 連到 server 的, 記得下一步要將 OpenSSH 打開, 不然防火牆設定好後一生效你可能就連不進去了!! 另外我們也透過 “sudo ufw default deny incoming” 這一行指令開放所有連外的需求.
# 關閉所有外部進來的網路連線
sudo ufw default deny incoming
# 開放所有連到外部的網路連線
sudo ufw default allow outgoing
Step 3 允許 SSH 連線
這是一個如果你的 ubuntu server 不在身邊時, 非常需要的網路服務! 這邊我們可以先透過以下指令看一下 ufw 有哪些內建的服務名稱可以直接使用來設定防火牆, 而不需要一條一條設定.
# 查看有哪些內建的網路服務名稱可以直接取用
sudo ufw app list
# 你應該會看到 "OpenSSH" 的服務名稱
接下來我們可以透過以下指令直接設定不阻擋此服務的網路連線
sudo ufw allow OpenSSH
或是這邊還有兩種方法可以做到一樣的事情;
# 方法 2, 透過 service name 來設定
sudo ufw allow ssh
# 方法 3, 直接設定 port 的規則
sudo ufw allow 22
Step 4 啟用 ufw 防火牆
設定完網路規則之後當然就是啟用 ufw 囉!!! 不過啟動之前也許可以透過 “sudo ufw show added” 看看有加入哪些規則, 確定沒有問題後再使用以下指令來啟動防火牆.
# 啟動 防火牆 ufw
sudo ufw enable
# 關閉 防火牆 ufw
sudo ufw disable
這邊我們會使用 enable 這個指令是因為 ubuntu 一開始剛安裝好的時候 ufw 是沒有啟動的, 所以當我們設定好規則之後就直接啟動, 他會採用我們設定好的規則來防護我們的 server, 但是如果你的 ubuntu 已將啟動了 ufw 之後才進行防火牆規則的設定, 那麼請用以下指令去重新讀取規則即可, 不過當然你也可以先 disable 他, 然後重新 enable 也行, 不過何不一行搞定呢?
sudo ufw reload