Debian 10上使用UFW設置防火牆


介紹

UFW或Uncomplicated Firewall是iptables一個接口,旨在簡化配置防火牆的過程。 雖然iptables是一個可靠而靈活的工具,但初學者很難學會如何使用它來正確配置防火牆。 如果您希望開始保護網絡並且不確定使用哪種工具,UFW可能是您的正確選擇。

本教程將向您展示如何在Debian 10上使用UFW設置防火牆。

先決條件

要學習本教程,您需要一台帶有sudo非root用戶的Debian 10服務器,您可以按照Debian 10初始服務器設置教程中的第1步-3進行設置 。

第1步 - 安裝UFW

Debian默認不安裝UFW。 如果您遵循整個初始服務器安裝教程 ,則您將安裝並啟用UFW。 如果沒有,請使用apt立即安裝:

sudo apt install ufw

我們將設置UFW並按以下步驟啟用它。

第2步 - 將IPv6與UFW一起使用(可選)

本教程是以IPv4編寫的,但只要您啟用它就適用於IPv6。 如果您的Debian服務器啟用了IPv6,您需要確保將UFW配置為支持IPv6; 這將確保UFW除了IPv4之外還將管理IPv6的防火牆規則。 要配置它,請使用nano或您喜歡的編輯器打開UFW配置文件/etc/default/ufw :

sudo nano /etc/default/ufw

然后確保IPV6值為yes 。 它應該如下所示:

/ etc / default / ufw摘錄
IPV6=yes 

保存並關閉文件。 現在,當啟用UFW時,它將配置為同時寫入IPv4和IPv6防火牆規則。 但是,在啟用UFW之前,您需要確保將防火牆配置為允許您通過SSH進行連接。 讓我們從設置默認策略開始。

第3步 - 設置默認策略

如果您剛開始使用防火牆,則要定義的第一個規則是您的默認策略。 這些規則處理未明確匹配任何其他規則的流量。默認情況下,UFW設置為拒絕所有傳入連接並允許所有傳出連接。 這意味着任何嘗試訪問您服務器的人都無法連接,而服務器中的任何應用程序都可以訪問外部世界。

讓我們將您的UFW規則設置回默認值,以便我們確保您能夠按照本教程進行操作。 要設置UFW使用的默認值,請使用以下命令:

sudo ufw default deny incoming sudo ufw default allow outgoing

這些命令將默認值設置為拒絕傳入並允許傳出連接。 僅這些防火牆默認值可能足以用於個人計算機,但服務器通常需要響應來自外部用戶的傳入請求。 我們接下來會調查一下。

第4步 - 允許SSH連接

如果我們現在啟用了我們的UFW防火牆,它將拒絕所有傳入的連接。 這意味着,如果我們希望服務器響應這些類型的請求,我們將需要創建明確允許合法傳入連接的規則 - 例如SSH或HTTP連接。 如果您使用的是雲服務器,則可能需要允許傳入的SSH連接,以便連接和管理服務器。

要將服務器配置為允許傳入SSH連接,可以使用以下命令:

sudo ufw allow ssh

這將創建防火牆規則,允許端口22上的所有連接,這是SSH守護程序默認監聽的端口。 UFW知道什么端口allow ssh意思,因為它在/etc/services文件中列為/etc/services 。

但是,我們實際上可以通過指定端口而不是服務名來編寫等效規則。 例如,此命令產生與上面相同的結果:

sudo ufw allow 22

如果將SSH守護程序配置為使用其他端口,則必須指定相應的端口。 例如,如果SSH服務器正在監聽端口2222 ,則可以使用此命令允許該端口上的連接:

sudo ufw allow 2222 

現在您的防火牆已配置為允許傳入SSH連接,您可以啟用它。

第5步 - 啟用UFW

要啟用UFW,請使用以下命令:

sudo ufw enable

您將收到一條警告,指出該命令可能會破壞現有的SSH連接。 我們已經設置了允許SSH連接的防火牆規則,因此可以繼續。 用y回應提示ENTER 。

防火牆現在處於活動狀態。 運行sudo ufw status verbose命令以查看已設置的規則。 本教程的其余部分將介紹如何更詳細地使用UFW,包括允許和拒絕不同類型的連接。

第6步 - 允許其他連接

此時,您應該允許服務器需要的所有其他連接正常運行。 您應該允許的連接取決於您的特定需求。 幸運的是,您已經知道如何編寫允許基於服務名稱或端口的連接的規則; 我們已經在端口22上為SSH做了這個。 你也可以這樣做:

  • 端口80上的HTTP,這是未加密的Web服務器使用的。 要允許此類流量,您可以鍵入sudo ufw allow httpsudo ufw allow 80 。
  • 端口443上的HTTPS,這是加密的Web服務器使用的。 要允許此類流量,您可以鍵入sudo ufw allow httpssudo ufw allow 443 。

但是,除了指定端口或已知服務之外,還有其他方法可以允許連接。 我們將討論下一步。

特定端口范圍

您可以使用UFW指定端口范圍。 例如,某些應用程序使用多個端口而不是單個端口。

例如,要允許使用端口6000 - 6007 X11連接,請使用以下命令:

sudo ufw allow 6000:6007/tcp sudo ufw allow 6000:6007/udp

使用UFW指定端口范圍時,必須指定規則應適用的協議( tcpudp )。 我們之前沒有提到這一點,因為沒有指定協議會自動允許兩種協議,這在大多數情況下都可以。

特定的IP地址

使用UFW時,您還可以指定IP地址。 例如,如果要允許來自特定IP地址的連接(例如工作或家庭IP地址203.0.113.4,則需要指定IP地址,然后指定IP地址:

sudo ufw allow from 203.0.113.4 

您還可以通過添加to any port后跟端口號to any port指定允許IP地址連接的特定端口。 例如,如果要允許203.0.113.4連接到端口22 (SSH),請使用以下命令:

sudo ufw allow from 203.0.113.4 to any port 22 

子網

如果要允許IP地址子網,可以使用CIDR表示法指定網絡掩碼。 例如,如果要允許所有IP地址范圍從203.0.113.1203.0.113.254 ,則可以使用此命令:

sudo ufw allow from 203.0.113.0/24 

同樣,您也可以指定允許子網203.0.113.0/24連接的目標端口。 同樣,我們將使用端口22 (SSH)作為示例:

sudo ufw allow from 203.0.113.0/24 to any port 22

與特定網絡接口的連接

如果要創建僅適用於特定網絡接口的防火牆規則,可以通過指定allow in on ,然后指定網絡接口的名稱來執行此操作。

您可能希望在繼續之前查找網絡接口。 為此,請使用以下命令:

ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . .

突出顯示的輸出表示網絡接口名稱。 它們通常被命名為eth0enp3s2 。

例如,如果您的服務器具有名為eth0的公共網絡接口,則可以使用以下命令允許HTTP流量:

sudo ufw allow in on eth0 to any port 80 

這樣做將允許您的服務器從公共互聯網接收HTTP請求。

或者,如果您希望MySQL數據庫服務器(端口3306 )監聽專用網絡接口eth1上的連接,則可以使用以下命令:

sudo ufw allow in on eth1 to any port 3306 

這將允許專用網絡上的其他服務器連接到MySQL數據庫。

第7步 - 拒絕連接

如果尚未更改傳入連接的默認策略,則UFW配置為拒絕所有傳入連接。 通常,這會通過要求您創建明確允許特定端口和IP地址的規則來簡化創建安全防火牆策略的過程。

有時您會想要根據源IP地址或子網拒絕特定連接,但是,可能是因為您知道您的服務器正在受到攻擊。 此外,如果要將默認傳入策略更改為允許 (不建議這樣做),則需要為不希望允許連接的任何服務或IP地址創建拒絕規則。

要編寫拒絕規則,您可以使用上述命令,將allow替換為deny 。

例如,要拒絕HTTP連接,可以使用以下命令:

sudo ufw deny http

或者,如果要拒絕來自203.0.113.4所有連接,可以使用此命令:

sudo ufw deny from 203.0.113.4 

現在讓我們來看看如何刪除規則。

第8步 - 刪除規則

了解如何刪除防火牆規則與了解如何創建它們同樣重要。 有兩種方法可以指定要刪除的規則:規則編號或規則本身。這與創建規則時的規則類似。 我們首先通過規則編號方法解釋刪除 。

按規則編號

如果您使用規則編號刪除防火牆規則,那么您要做的第一件事就是獲取防火牆規則列表。 UFW status命令具有numbered選項,該選項顯示每個規則旁邊的數字:

sudo ufw status numbered
Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere

如果我們決定要刪除允許端口80上的HTTP連接的規則2 ,我們可以在以下UFW delete命令中指定:

sudo ufw delete 2 

這將顯示確認提示,您可以使用y/n回答。 輸入y將刪除規則2 。 請注意,如果啟用了IPv6,則還需要刪除相應的IPv6規則。

按實際規則

規則編號的替代方法是指定要刪除的實際規則。 例如,如果要刪除allow http規則,可以這樣寫:

sudo ufw delete allow http 

您還可以使用allow 80而不是服務名稱指定規則:

sudo ufw delete allow 80 

此方法將刪除IPv4和IPv6規則(如果存在)。

第9步 - 檢查UFW狀態和規則

您可以隨時使用以下命令檢查UFW的狀態:

sudo ufw status verbose

如果禁用UFW,這是默認設置,您將看到如下內容:

Status: inactive

如果UFW處於活動狀態,如果您按照第3步進行操作,則輸出將表明它處於活動狀態並將列出您設置的所有規則。 例如,如果防火牆設置為允許來自任何地方的SSH(端口22 )連接,則輸出可能如下所示:

Status: active To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere

如果要檢查UFW如何配置防火牆,請使用status命令。

第10步 - 禁用或重置UFW(可選)

如果您決定不想使用UFW,可以使用以下命令禁用它:

sudo ufw disable

您使用UFW創建的任何規則將不再處於活動狀態。 如果您需要稍后激活,可以隨時運行sudo ufw enable 。

如果您已經配置了UFW規則但是您決定要重新開始,則可以使用reset命令:

sudo ufw reset

這將禁用UFW並刪除您之前定義的任何規則。 請注意,如果您在任何時候修改默認策略,默認策略都不會更改為原始設置。 這應該會讓你重新開始使用UFW。

結論

您的防火牆現在配置為允許(至少)SSH連接。 確保允許服務器需要的任何其他傳入連接,同時限制不必要的連接。這將確保您的服務器既實用又安全。

要了解更常見的UFW配置,請查看有關UFW Essentials:通用防火牆規則和命令的本教程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM