由於 Hinet 年初更換了我的光世代固定 IP, 趁過年期間將 Mapleboard 主機重開機取得新的固定 IP 後到 Namecheap 將 tony1966.cc 域名綁定到新的固定 IP 恢復了此域名的運作, 接下來要安裝 ufw 防火牆來加強主機安全性, 做法參考 :
本系列側是文章參考 :
1. 啟用 ufw 防火牆 :
ufw 是 Uncomplicated FireWall 的縮寫, 具有指令簡單好記, 設定規則淺顯易懂優點, Ubuntu 通常已預設安裝 ufw, 可用下列指令查看防火牆狀態 :
sudo ufw status
one@LX2438:~$ sudo ufw status
[sudo] one 的密碼:
狀態:不活動 (inactive)
Inactive 狀態表示雖然 ufw 已安裝卻尚未啟用, 須使用下列指令啟用 (activate) :
sudo ufw enable
tony1966@LX2438:~$ sudo ufw enable
[sudo] tony1966 的密碼:
在系統啟動時啟用防火牆
在下次啟動時才會啟用 ufw 防火牆. 這時再次檢視防火牆狀態會顯示已啟用 (active) :
tony1966@LX2438:~$ sudo ufw status
狀態: 啓用
若執行上述指令出現未找到 ufw 錯誤, 表示系統尚未安裝 ufw (例如屬於 Debian 系統的樹莓派預設並未安裝 ufw), 要先用下列指令安裝 :
udo apt-get install ufw
2. 設定防火牆規則 :
下列指令會顯示目前的防火牆規則 :
sudo ufw status verbose
tony1966@LX2438:~$ sudo ufw status verbose
[sudo] tony1966 的密碼:
狀態: 啓用
日誌: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
新建設定檔案: skip
可見 ufw 預設會拒絕所有進入主機的連線, 但允許所有出去的連線; 預設關閉封包轉送功能 (作為路由器與 VPN 時才需要打開). 日誌功能已開啟, 紀錄等級預設為 low (等級有五個等級 : off/low/medium/high/full), 可用下列指令更改等級 :
sudo ufw logging medium
如果要更改預設規則可用下列指令 :
sudo ufw default allow (不安全, 不建議)
sudo ufw default deny (較安全, 預設)
接下來要設定主機的允入連線埠號, 由於我這台 Mapleboard MP510-50 主機主要是作為網頁伺服器與 API 測試之用, 因此只要開啟 TCP 協定的埠口即可, UDP 目前用不到不需要開啟. 未來如果要做 DNS 伺服器 (53 埠), NTP 伺服器 (123 埠), 或 VPN 伺服器 (OpenVPN 1194 埠) 等用途再開啟各埠之 UDP.
首先是埠號 22 的 ssh 遠端連線服務 :
sudo ufw allow ssh/tcp 或 sudo ufw allow 22/tcp
tony1966@LX2438:~$ sudo ufw allow 22/tcp
[sudo] tony1966 的密碼:
已添加規則
已添加規則 (v6)
埠號 80 的 HTTP 連線是作為網頁伺服器主機一定要開啟此埠 :
sudo ufw allow 80/tcp
tony1966@LX2438:~$ sudo ufw allow 80/tcp
已添加規則
已添加規則 (v6)
埠號 443 的 HTTPS 連線也是作為網頁伺服器主機一定要開啟的埠號 (雲端的遠端連線服務 RealVNC Cloud 也是透過 443 埠連線) :
sudo ufw allow 443/tcp
tony1966@LX2438:~$ sudo ufw allow 443/tcp
已添加規則
已添加規則 (v6)
另外直連的 VNC 使用 5900/5901 埠 (TCP) 也要打開 :
sudo ufw allow 5900/tcp
tony1966@LX2438:~$ sudo ufw allow 5900/tcp
已添加規則
已添加規則 (v6)
tony1966@LX2438:~$ sudo ufw allow 5901/tcp
[sudo] tony1966 的密碼:
已添加規則
已添加規則 (v6)
顯示目前的防火牆規則 :
tony1966@LX2438:~$ sudo ufw status verbose
狀態: 啓用
日誌: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
新建設定檔案: skip
至 動作 來自
- -- --
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
5900/tcp ALLOW IN Anywhere
5901/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
5900/tcp (v6) ALLOW IN Anywhere (v6)
5901/tcp (v6) ALLOW IN Anywhere (v6)
如果要刪除規則重新設定, 要先用下列指令查詢規則編號 :
sudo ufw status numbered
tony1966@LX2438:~$ sudo ufw status numbered
狀態: 啓用
至 動作 來自
- -- --
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 5900/tcp ALLOW IN Anywhere
[ 5] 5901/tcp ALLOW IN Anywhere
[ 6] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 7] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 443/tcp (v6) ALLOW IN Anywhere (v6)
[ 9] 5900/tcp (v6) ALLOW IN Anywhere (v6)
[10] 5901/tcp (v6) ALLOW IN Anywhere (v6)
然後以下列指令刪除指定編號之規則 :
sudo ufw delete 規則編號
tony1966@LX2438:~$ sudo ufw delete 1
刪除中:
allow 22/tcp
繼續執行(y|n)? y
已刪除規則 (v6)
如果想要全部重設, 可用下列指令 :
sudo ufw reset
防火牆規則設定好後毋須重開機, 只要用下列指令重新載入即可 :
sudo ufw reload
tony1966@LX2438:~$ sudo ufw reload
已經重新載入防火牆
3. 使用應用程式設定防火牆規則 :
除了上面利用 port/protocol 方式設定防火牆規則外, 也可以用應用程式名稱來設定, 先用下面指令顯示 ufw 預設的應用程式列表 :
sudo ufw app list
one@LX2438:~$ sudo ufw app list
[sudo] one 的密碼:
可用套用程序:
CUPS
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
我們可以直接用這些應用名稱來設定其防火牆規則, 不用手動輸入連接埠號碼.
首先用下列指令查詢應用程式的描述 :
sudo ufw app info "應用程式名稱"
例如 :
tony1966@LX2438:~$ sudo ufw app info "Nginx Full"
設定: Nginx Full
標題:Web Server (Nginx, HTTP + HTTPS)
描述: Small, but very powerful and efficient web server
tony1966@LX2438:~$ sudo ufw app info "Nginx HTTP"
設定: Nginx HTTP
標題:Web Server (Nginx, HTTP)
描述: Small, but very powerful and efficient web server
埠號:
80/tcp
tony1966@LX2438:~$ sudo ufw app info "Nginx HTTPS"
設定: Nginx HTTPS
標題:Web Server (Nginx, HTTPS)
描述: Small, but very powerful and efficient web server
埠號:
443/tcp
tony1966@LX2438:~$ sudo ufw app info "OpenSSH"
設定: OpenSSH
標題:Secure shell server, an rshd replacement
描述: OpenSSH is a free implementation of the Secure Shell protocol.
埠號:
22/tcp
tony1966@LX2438:~$ sudo ufw app info "CUPS"
設定: CUPS
標題:Common UNIX Printing System server
描述: CUPS is a printing system with support for IPP, samba, lpd, and other
protocols.
如果使用應用程式名稱來設定防火牆規則只要用下列兩個指令即可, 做用與上面指定埠號/協定之效果一樣 :
sudo ufw allow "OpenSSH" # 開啟 SSH
sudo ufw allow "Nginx Full" # 開啟 HTTP 和 HTTPS
第一個指令相當於 sudo ufw allow 22/tcp; 第二個指令相當於 sudo ufw allow 80/tcp 與 sudo ufw allow 443/tcp.
參考 :
沒有留言 :
張貼留言