對於一個伺服器安全性的考量,都會需要設定防火牆避免伺服器被入侵, 而 UFW (Uncomplicated Firewall) 是 ubuntu 伺服器預設的防火牆操作軟體, 其主要功能是用容易懂的指令來設定 iptables, 本篇將教學一些 UFW 常用的指令操作。 啟用防火牆 可以輸入指令檢查 ufw 是否為啟用狀態,在 ubuntu 伺服器預設是沒有啟用的狀態 Status: inactive sudo ufw status verbose +++------------------------------------------------------------------------+++ 在啟用前我們要先設定允許 ssh port (22) 可以連線,不然之後會無法 從外部 ssh 連到機器更改東西 sudo ufw allow 22 +++------------------------------------------------------------------------+++ 擋下全部其他 port 的連線,並允許機器能夠連到外面的網路 sudo ufw default deny incoming sudo ufw default allow outgoing +++------------------------------------------------------------------------+++ 接著啟動 ufw sudo ufw enable +++------------------------------------------------------------------------+++ 當 ufw 啟動之後就能看到詳細的防火牆規則了 sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22 ALLOW IN Anywhere 22 (v6) ALLOW IN Anywhere (v6) +++------------------------------------------------------------------------+++ +++##########################################################+++ 允許或拒絕連線指定 port +++##########################################################+++ +++------------------------------------------------------------------------+++ 如果要允許連線指定 port 可以輸入指令: sudo ufw allow sudo ufw deny 例如:假如要放網站能夠透過外部連線,可以輸入以下指令 sudo ufw allow 80 sudo ufw allow 443 +++------------------------------------------------------------------------+++ 允許或拒絕特定 IP 連線指定 port 而假如是只允許特定 IP 才能連線的話,可以輸入以下指令 sudo ufw allow from to any port sudo ufw deny from to any port 例如允許 159.66.109.6 連線 80 port sudo ufw allow from 159.66.109.6 to any port 80 +++------------------------------------------------------------------------+++ 設定指定 subnet 可以允許或禁止連線指定 port 有時會設定需要允許子網路可以連線到,可以輸入以下指令 sudo ufw allow from to any port sudo ufw deny from to any port 例如允許要允許 159.66.109.0 ~ 159.66.109.254 能夠連線 22 port sudo ufw allow from 159.66.109.0/24 to any port 22 +++------------------------------------------------------------------------+++ +++##########################################################+++ 設定指定網路介面 (Network Interface) 連線指定 port +++##########################################################+++ ip addr +++------------------------------------------------------------------------+++ 並且設定該網路介面能否允許連線至指定port sudo ufw allow in on to any port 例如允許介面 eth0 可以連線 80 port sudo ufw allow in on eth0 to any port 80 +++------------------------------------------------------------------------+++ +++##########################################################+++ 刪除已經建立的規則 +++##########################################################+++ +++------------------------------------------------------------------------+++ 如果要刪除已經建立的防火牆規則,要先查看規則所對應的編號 sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN Anywhere [ 2] 80 ALLOW IN Anywhere [ 3] 443 ALLOW IN Anywhere [ 4] 22 (v6) ALLOW IN Anywhere (v6) [ 5] 80 (v6) ALLOW IN Anywhere (v6) [ 6] 443 (v6) ALLOW IN Anywhere (v6) +++------------------------------------------------------------------------+++ 例如:要刪除 IPv4 的 80 port 連線 sudo ufw delete 2 Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted +++------------------------------------------------------------------------+++ +++------------------------------------------------------------------------+++ +++------------------------------------------------------------------------+++