技術文檔
UFW或Uncomplicated Firewall是iptables一個接口,旨在簡化配置防火墻的過程。 雖然iptables是一個可靠而靈活的工具,但初學者很難學會如何使用它來正確配置防火墻。 如果您希望開始保護網絡并且不確定使用哪種工具,UFW可能是您的正確選擇。本教程將向您展示如何在debian10上使用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 http或sudo ufw allow 80 。
端口443上的HTTPS,這是加密的Web服務器使用的。 要允許此類流量,您可以鍵入sudo ufw allow https或sudo ufw allow 443 。
但是,除了指定端口或已知服務之外,還有其他方法可以允許連接。 我們將討論下一步。
特定端口范圍
您可以使用UFW指定端口范圍。 例如,某些應用程序使用多個端口而不是單個端口。
例如,要允許使用端口6000 6007 X11連接,請使用以下命令:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
使用UFW指定端口范圍時,必須指定規則應適用的協議( tcp或udp )。 我們之前沒有提到這一點,因為沒有指定協議會自動允許兩種協議,這在大多數情況下都可以。
特定的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.1到203.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
Output2: eth0: mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: mtu 1500 qdisc noop state DOWN group default
. . .
突出顯示的輸出表示網絡接口名稱。 它們通常被命名為eth0或enp3s2 。
例如,如果您的服務器具有名為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地址的規則來簡化創建安全防火墻策略的過程。??????????????????????????
- 上一篇: Debian系統 如何手動掛載數據盤?
- 下一篇: Linux寶塔面板如何修改MySQL默認保存位置?