正確配置防火牆是整個系統安全中最重要的方面之一。默認情況下,Ubuntu 18.04 LTS 附帶了一個名爲 UFW(Uncomplicated Firewall)的防火牆配置工具,UFW 是一個「用戶友好」的前端,可以用於管理 iptables 防火牆規則,其主要目的就是讓管理 iptables 更加輕鬆容易。
安裝UFW
Ubuntu 18.04 LTS 系統中已經默認附帶了 UFW 工具,如果您的系統中沒有安裝,可以在「終端」中執行如下命令進行安裝:
sudo apt install ufw
檢查UFW狀態
安裝完成後,您可以使用以下命令檢查 UFW 的狀態:
sudo ufw status verbose
無論您使用的是 Ubuntu 18.04 系統附帶還是剛手動安裝的 UFW,默認都是禁用狀態,所以輸出是「不活動」:
如果激活 UFW,輸出會類似於以下內容:
UFW默認策略
防火牆策略是構建用戶自定義規則的基礎,在絕大多數情況下,初始的 UFW 默認策略就是一個很好的起點。
而默認情況下,UFW 將阻止所有傳入連接並允許所有傳出連接。也就是說,除非您專門打開特定端口,否則任何嘗試訪問您的服務器的人都無法連接,但服務器上運行的應用程序和服務卻能夠對外訪問。
UFW 默認策略在 /etc/default/ufw 文件中進行定義,可以使用 sudo ufw default 命令對策略進行更改。
應用程序策略
當您使用 apt 安裝軟件包時,應用程序配置文件就會添加到 /etc/ufw/applications.d 目錄當中,該目錄主要用於描述服務並存放 UFW 設置。
我們可以使用以下命令列出所有應用程序配置策略:
sudo ufw app list
根據當前系統上已安裝的軟件包,輸出類似於:
如果要查找有關配置文件和包含規則的更多信息,可以使用類似以下命令:
sudo ufw app info 'Nginx Full'
從上面的輸出可以看出「Nginx Full」配置文件會打開 80 和 443 端口 。
允許SSH連接
在服務器上正式啓用 UFW 防火牆之前,需要事先添加允許 SSH 連接的傳入規則。不然 UFW 啓用之後 SSH 連不上了不要跑來鬧哦……
要配置 UFW 防火牆以允許傳入 SSH 連接,請鍵入以下命令:
sudo ufw allow ssh
如果您的 SSH 端口是自定義的,沒使用默認的 22 端口,可以通過如下命令偵聽並允許該端口上的連接,例如 4422 端口:
sudo ufw allow 4422/tcp
啓用UFW
如果您的 UFW 防火牆已配置爲允許傳入 SSH 連接,則可以執行以下命令啓用 UFW:
sudo ufw enable
如果看到啓用防火牆可能會中斷現有的 ssh 連接的警告,只需鍵入 y 同意並按「回車」鍵即可。
允許偵聽傳入端口連接
根據 Ubuntu 服務器上運行的應用程序和特定需要,您可能需要允許其他端口的傳入連接。下面系統極客將演示如何允許常見服務的示例。
打開80端口——HTTP
可以使用以下命令允許 HTTP 連接:
sudo ufw allow http
也可以直接指定端口號 80:
sudo ufw allow 80/tcp
或者也可以使用應用程序配置文件,在本例中爲「Nginx HTTP」:
sudo ufw allow 'Nginx HTTP'
打開443端口——HTTPS
可以使用以下命令允許 HTTPS 連接:
sudo ufw allow https
也可以直接指定端口號 443:
sudo ufw allow 443/tcp
或者也可以使用應用程序配置文件,在本例中爲「Nginx HTTPS」:
sudo ufw allow 'Nginx HTTPS'
打開8080端口
如果運行 Tomcat 或使用偵聽 8080 端口的應用程序,可以執行以下命令允許傳入連接:
sudo ufw allow 8080/tcp
允許端口範圍
除允許單個端口連接之外,UFW 還允許直接配置端口範圍。在使用 UFW 的端口範圍時,必需指定 tcp 或 udp 協議。例如,要開啓服務器上 7100 到 7200 的 tcp 和 udp 端口,可以運行以下命令:
- sudo ufw allow 7100:7200/tcp
- sudo ufw allow 7100:7200/udp
允許特定IP地址
如果您要允許某個 IP 地址的所有端口訪問,可以使用如下命令:
sudo ufw allow from 123.123.123.123
允許子網
如果要允許特定子網範圍的計算機對服務器某個端口的訪問,例如:允許從 192.168.1.1 到 192.168.1.254 網段到服務器 3306(MySQL)端口的訪問,可以執行如下命令:
sudo ufw allow from 192.168.1.0/24 to any port 3306
拒絕連接
前面已經介紹過,傳入連接的默認策略都被設置爲拒絕。假設您打開了 80 和 443 端口,而服務器又受到來自 23.34.45.0/24 的攻擊,可以通過如下命令拒絕該網絡的所有連接:
sudo ufw deny from 23.34.45.0/24
如果只想拒絕訪問 80 和 443 端口,則可以使用以下命令:
- sudo ufw deny from 23.34.45.0/24 to any port 80
- sudo ufw deny from 23.34.45.0/24 to any port 443
編寫拒絕規則與編寫允許規則相同,您只需要將 allow 替換爲 deny 就成。
刪除UFW策略
我們可以根據規則編號和指定實際規則這 2 種方式來刪除 UFW 規則。
對新手用戶而言,通過規則編號來刪除特定規則比較好,不過在此之前需要先用命令列出規則編號的數字:
sudo ufw status numbered
例如要刪除開放 8080 端口的規則 4 可以使用如下命令:
sudo ufw delete 4
第二種方法是通過指定實際規則來進行刪除操作,例如要刪除打開8069 端口的規則,可以使用如下命令:
sudo ufw delete allow 8069
禁用UFW
如果想要停止使用 UFW 並停用所有規則,可以直接選擇禁用 UFW:
sudo ufw disable
重置UFW
在重置 UFW 時,系統會禁用 UFW 並刪除所有活動規則。如果您想要還原所有更改並重新開始,可以使用如下命令:
sudo ufw reset
更多優質技術文章閱讀,IEEE、萬方文獻及國內外專利下載,請關注微信公衆號IEEE