Ubuntu Server 20.04.1 預設 UFW 防火牆 Firewall 設定規則詳解和教學
Ubuntu 預設安裝的 Firewall (防火牆) 組件是 UFW,且預設為未啟用狀態:
sudo ufw status
Status: inactive
UFW 啟用和停用
啟用 UFW,且開機自動載入和啟用:
sudo ufw enable
Firewall is active and enabled on system startup
停用 UFW,且開機停用:
sudo ufw disable
Firewall stoped and disabled on system startup
設定 UFW 預設允許、拒絕所有連線
可依下述設定預設允許或拒絕所有連結,在依需求設定服務 port 的規則。
允許所有連線
較少場景會預設允許所有連線:
sudo ufw default allow
Default incoming policy changed to 'allow' (be sure to update your rules accordingly)
拒絕所有連線
通常會先預設拒絕所有連線,在各別設定允許服務 port 規則。
sudo ufw default deny
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)
通訊埠對應的服務名稱
所有服務名稱對應的通訊埠 (port) 可查看檔案 /etc/services,在設定 UFW 規則時即可直接使用服務名稱即可,例如查看開頭為 ssh 和 http 相關服務名稱的對應通訊埠:
cat /etc/services | egrep '^ssh|^http'
ssh 22/tcp # SSH Remote Login Protocol http 80/tcp www # WorldWideWeb HTTP https 443/tcp # http protocol over TLS/SSL http-alt 8080/tcp webcache # WWW caching service
設定允許、拒絕規則
特定 port
設定對外允許的 port (不限制特定 IP),例如允許 http 的 80 port:
sudo ufw allow 80
Rule added Rule added (v6)
指令 | 說明 | ||
---|---|---|---|
prefix | allow/deny | port/protocol | |
sudo ufw | allow | 80 | 允許 port 80 的 tcp and udp |
80/tcp | 允許 port 80 的 tcp | ||
80/udp | 允許 port 80 的 udp | ||
deny | 80 | 拒絕 port 80 的 tcp and udp | |
80/tcp | 拒絕 port 80 的 tcp | ||
80/udp | 拒絕 port 80 的 udp |
指定 IP 連線開放所有 port
簡單說就是設定白、黑名單的 IP。
prefix | allow/deny | 從 | 指定 IP |
---|---|---|---|
sudo ufw | allow | from | 192.168.1.200 |
deny |
指定 IP 的特定 port
僅允許指定 IP 連結特定 port。
prefix | allow/deny | 從 | 指定 IP | 到 | port/protocol |
---|---|---|---|---|---|
sudo ufw | allow | from | 192.168.1.200 | to any port | 80 |
deny |
指定 IP 整個網段的特定 port
針對允許 IP 整個網段連結特定 port。
prefix | allow/deny | 從 | 指定 IP 子網域 | 到 | port/protocol |
---|---|---|---|---|---|
sudo ufw | allow | from | 192.168.1.0/24 | to any port | 80 |
deny |
查看 UFW 狀態
查看 UFW 一般狀態:
sudo ufw status
Status: active To Action From -- ------ ---- 22/tcp ALLOW 61.216.xx.xx 80 ALLOW Anywhere 80 (v6) ALLOW Anywhere (v6)
查看 UFW 狀態較多資訊:
sudo ufw status verbose
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN 61.216.xx.xx 80 ALLOW IN Anywhere 80 (v6) ALLOW Anywhere (v6)
刪除 UFW 規則
可直接使用設定 UFW 時的規則,加上 delete
參數即可:
sudo ufw delete allow 80
Rule deleted Rule deleted (v6)
使用序號
先查看 UFW 規則序號:
sudo ufw status numbered
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN 61.216.xx.xx [ 2] 80 ALLOW IN Anywhere [ 3] 80 (v6) ALLOW IN Anywhere (v6)
刪除序號 [ 2] 規則:
sudo ufw delete 3
Deleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)
重設 UFW 規則
如果 UFW 規則改的太糟太亂想重新來過的話,可重設 UFW 規則:
sudo ufw reset
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210217_211451'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210217_211451'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210217_211451'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210217_211451'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210217_211451'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210217_211451'
本著作係採用創用 CC 姓名標示-相同方式分享 3.0 台灣 授權條款授權.