UFW或簡單的防火牆是Linux iptables的用戶友好前端。UFW用Python編寫(支持Python 3.5及更高版本),並且是Ubuntu系統中當前的事實上的防火牆管理實用程序。該實用程序非常易於使用,可充當基於主機的出色防火牆。
本文向您展示如何在Ubuntu 20.04 LTS系統上安裝和使用UFW。
安裝
UFW預先安裝在大多數Ubuntu系統上。如果您的版本尚未安裝此程序,則可以使用snap或apt軟件包管理器進行安裝。
$ sudo snap install ufw
或
$ sudo apt install ufw
我個人更喜歡使用apt軟件包管理器來執行此操作,因為snap不太流行,並且我不想擁有這種額外的復雜性。在撰寫本文時,針對UFW發行的20.04版本的版本為0.36。
傳入流量與傳出流量
如果您是網絡世界的初學者,那么首先需要澄清的是傳入和傳出流量之間的差異。
當您使用apt-get安裝更新,瀏覽Internet或查看電子郵件時,您正在做的就是向服務器(例如Ubuntu,Google等)發送“傳出”請求。要訪問這些服務,您甚至不需要公共IP。通常,為家庭寬帶連接分配一個公共IP地址,並且每個設備都有自己的私有IP。然后,路由器使用稱為NAT或網絡地址轉換的信息處理流量。
NAT和專用IP地址的詳細信息不在本文討論范圍之內,但是上面鏈接的視頻是一個很好的起點。回到UFW,默認情況下,UFW將允許所有常規傳出Web流量。您的瀏覽器,程序包管理器和其他程序會選擇一個隨機端口號-通常是一個3000以上的端口號-這就是每個應用程序可以跟蹤其連接的方式。
當您在雲中運行服務器時,它們通常帶有公共IP地址,並且上述允許傳出流量的規則仍然有效。由於您仍將使用軟件包管理器之類的實用程序,這些實用程序作為“客戶端”與世界其他地方進行通信,因此UFW默認情況下允許這樣做。
有趣之處始於傳入流量。應用程序(例如用於登錄VM的OpenSSH服務器)會像其他應用程序一樣,在特定端口(如22)上偵聽傳入的請求。Web服務器需要訪問端口80和443。
防火牆的工作之一是允許特定的應用程序偵聽某些傳入的流量,同時阻止所有不必要的流量。您可能在VM上安裝了數據庫服務器,但通常不需要在具有公共IP的接口上偵聽傳入的請求。通常,它只是在回送接口上偵聽請求。
Web上有許多漫游器,它們不斷用虛假請求轟炸服務器,以蠻橫地闖入服務器或進行簡單的“拒絕服務”攻擊。配置良好的防火牆應該能夠借助Fail2ban等第三方插件來阻止大多數這些惡作劇。
但是,到目前為止,我們將專注於一個非常基本的設置。
基本用法
現在您已經在系統上安裝了UFW,我們將研究該程序的一些基本用法。由於防火牆規則是在系統范圍內應用的,因此以下命令以root用戶身份運行。如果願意,可以在此過程中使用具有適當特權的sudo。
# ufw status
Status: inactive
默認情況下,UFW處於非活動狀態,這是一件好事。您不想阻止端口22(默認的SSH端口)上的所有傳入流量。如果您通過SSH登錄到遠程服務器,並且阻塞了端口22,則您將被鎖定在服務器之外。
UFW使我們很容易為OpenSSH戳一個漏洞。運行以下命令:
root@testubuntu:~# ufw app list
Available applications:
OpenSSH
請注意,我仍未啟用防火牆。現在,我們將OpenSSH添加到允許的應用程序列表中,然后啟用防火牆。為此,請輸入以下命令:
# ufw allow OpenSSH
Rules updated
Rules updated (v6)
# ufw enable
該命令可能會破壞現有的SSH連接。進行運算(y | n)?y。
防火牆現在處於活動狀態,並在系統啟動時啟用。
恭喜,UFW現在已啟動並正在運行。UFW現在僅允許OpenSSH偵聽端口22上的傳入請求。要隨時檢查防火牆的狀態,請運行以下代碼:
# ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
如您所見,OpenSSH現在可以從Internet上的任何地方接收請求,只要它通過端口22到達它即可。v6行表示該規則也適用於IPv6。
當然,您可以禁止特定的IP范圍,或者僅允許特定的IP范圍,具體取決於您所處的安全性約束。
添加應用
對於最受歡迎的應用程序,ufw app list命令在安裝時自動更新其策略列表。例如,安裝Nginx Web服務器后,您將看到以下新選項出現:
# apt install nginx
# ufw app list
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
繼續嘗試這些規則。請注意,您可以簡單地允許端口號,而不用等待顯示應用程序的配置文件。例如,要允許端口443進行HTTPS通信,只需使用以下命令:
# ufw allow 443 # ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
結論
既然已經掌握了UFW的基礎知識,那么您就可以探索其他強大的防火牆功能,從允許和阻止IP范圍開始。擁有清晰而安全的防火牆策略將使您的系統安全並受到保護。A5互聯https://www.a5idc.net/