技術(shù)文檔
UFW或Uncomplicated Firewall是iptables一個接口,旨在簡化配置防火墻的過程。 雖然iptables是一個可靠而靈活的工具,但初學(xué)者很難學(xué)會如何使用它來正確配置防火墻。 如果您希望開始保護(hù)網(wǎng)絡(luò)并且不確定使用哪種工具,UFW可能是您的正確選擇。本教程將向您展示如何在debian10上使用UFW設(shè)置防火墻。
先決條件:要學(xué)習(xí)本教程,您需要一臺帶有sudo非root用戶的Debian 10服務(wù)器,您可以按照Debian 10初始香港服務(wù)器設(shè)置教程中的第1步-3進(jìn)行設(shè)置 。
第1步 安裝UFW
Debian默認(rèn)不安裝UFW。 如果您遵循整個初始服務(wù)器安裝教程 ,則您將安裝并啟用UFW。 如果沒有,請使用apt立即安裝:
sudo apt install ufw
我們將設(shè)置UFW并按以下步驟啟用它。
第2步 將IPv6與UFW一起使用(可選)
本教程是以IPv4編寫的,但只要您啟用它就適用于IPv6。 如果您的Debian服務(wù)器啟用了IPv6,您需要確保將UFW配置為支持IPv6; 這將確保UFW除了IPv4之外還將管理IPv6的防火墻規(guī)則。 要配置它,請使用nano或您喜歡的編輯器打開UFW配置文件/etc/default/ufw :
sudo nano /etc/default/ufw
然后確保IPV6值為yes 。 它應(yīng)該如下所示:
/ etc / default / ufw摘錄
IPV6=yes
保存并關(guān)閉文件。 現(xiàn)在,當(dāng)啟用UFW時,它將配置為同時寫入IPv4和IPv6防火墻規(guī)則。 但是,在啟用UFW之前,您需要確保將防火墻配置為允許您通過SSH進(jìn)行連接。 讓我們從設(shè)置默認(rèn)策略開始。
第3步 設(shè)置默認(rèn)策略
如果您剛開始使用防火墻,則要定義的第一個規(guī)則是您的默認(rèn)策略。 這些規(guī)則處理未明確匹配任何其他規(guī)則的流量。默認(rèn)情況下,UFW設(shè)置為拒絕所有傳入連接并允許所有傳出連接。 這意味著任何嘗試訪問您服務(wù)器的人都無法連接,而服務(wù)器中的任何應(yīng)用程序都可以訪問外部世界。
讓我們將您的UFW規(guī)則設(shè)置回默認(rèn)值,以便我們確保您能夠按照本教程進(jìn)行操作。 要設(shè)置UFW使用的默認(rèn)值,請使用以下命令:
sudo ufw default deny incoming
sudo ufw default allow outgoing
這些命令將默認(rèn)值設(shè)置為拒絕傳入并允許傳出連接。 僅這些防火墻默認(rèn)值可能足以用于個人計算機,但服務(wù)器通常需要響應(yīng)來自外部用戶的傳入請求。 我們接下來會調(diào)查一下。
第4步 允許SSH連接
如果我們現(xiàn)在啟用了我們的ufw防火墻,它將拒絕所有傳入的連接。 這意味著,如果我們希望服務(wù)器響應(yīng)這些類型的請求,我們將需要創(chuàng)建明確允許合法傳入連接的規(guī)則 例如SSH或HTTP連接。 如果您使用的是云服務(wù)器,則可能需要允許傳入的SSH連接,以便連接和管理服務(wù)器。
要將服務(wù)器配置為允許傳入SSH連接,可以使用以下命令:
sudo ufw allow ssh
這將創(chuàng)建防火墻規(guī)則,允許端口22上的所有連接,這是SSH守護(hù)程序默認(rèn)監(jiān)聽的端口。 UFW知道什么端口allow ssh意思,因為它在/etc/services文件中列為/etc/services 。
但是,我們實際上可以通過指定端口而不是服務(wù)名來編寫等效規(guī)則。 例如,此命令產(chǎn)生與上面相同的結(jié)果:
sudo ufw allow 22
如果將SSH守護(hù)程序配置為使用其他端口,則必須指定相應(yīng)的端口。 例如,如果SSH服務(wù)器正在監(jiān)聽端口2222 ,則可以使用此命令允許該端口上的連接:
sudo ufw allow 2222
現(xiàn)在您的防火墻已配置為允許傳入SSH連接,您可以啟用它。
第5步 啟用UFW
要啟用UFW,請使用以下命令:
sudo ufw enable
您將收到一條警告,指出該命令可能會破壞現(xiàn)有的SSH連接。 我們已經(jīng)設(shè)置了允許SSH連接的防火墻規(guī)則,因此可以繼續(xù)。 用y回應(yīng)提示ENTER 。
防火墻現(xiàn)在處于活動狀態(tài)。 運行sudo ufw status verbose命令以查看已設(shè)置的規(guī)則。 本教程的其余部分將介紹如何更詳細(xì)地使用UFW,包括允許和拒絕不同類型的連接。
第6步 允許其他連接
此時,您應(yīng)該允許服務(wù)器需要的所有其他連接正常運行。 您應(yīng)該允許的連接取決于您的特定需求。 幸運的是,您已經(jīng)知道如何編寫允許基于服務(wù)名稱或端口的連接的規(guī)則; 我們已經(jīng)在端口22上為SSH做了這個。 你也可以這樣做:
端口80上的HTTP,這是未加密的Web服務(wù)器使用的。 要允許此類流量,您可以鍵入sudo ufw allow http或sudo ufw allow 80 。
端口443上的HTTPS,這是加密的Web服務(wù)器使用的。 要允許此類流量,您可以鍵入sudo ufw allow https或sudo ufw allow 443 。
但是,除了指定端口或已知服務(wù)之外,還有其他方法可以允許連接。 我們將討論下一步。
特定端口范圍
您可以使用UFW指定端口范圍。 例如,某些應(yīng)用程序使用多個端口而不是單個端口。
例如,要允許使用端口6000 6007 X11連接,請使用以下命令:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
使用UFW指定端口范圍時,必須指定規(guī)則應(yīng)適用的協(xié)議( tcp或udp )。 我們之前沒有提到這一點,因為沒有指定協(xié)議會自動允許兩種協(xié)議,這在大多數(shù)情況下都可以。
特定的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
子網(wǎng)
如果要允許IP地址子網(wǎng),可以使用CIDR表示法指定網(wǎng)絡(luò)掩碼。 例如,如果要允許所有IP地址范圍從203.0.113.1到203.0.113.254 ,則可以使用此命令:
sudo ufw allow from 203.0.113.0/24
同樣,您也可以指定允許子網(wǎng)203.0.113.0/24連接的目標(biāo)端口。 同樣,我們將使用端口22 (SSH)作為示例:
sudo ufw allow from 203.0.113.0/24 to any port 22
與特定網(wǎng)絡(luò)接口的連接
如果要創(chuàng)建僅適用于特定網(wǎng)絡(luò)接口的防火墻規(guī)則,可以通過指定allow in on ,然后指定網(wǎng)絡(luò)接口的名稱來執(zhí)行此操作。
您可能希望在繼續(xù)之前查找網(wǎng)絡(luò)接口。 為此,請使用以下命令:
ip addr
Output2: eth0: mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: mtu 1500 qdisc noop state DOWN group default
. . .
突出顯示的輸出表示網(wǎng)絡(luò)接口名稱。 它們通常被命名為eth0或enp3s2 。
例如,如果您的服務(wù)器具有名為eth0的公共網(wǎng)絡(luò)接口,則可以使用以下命令允許HTTP流量:
sudo ufw allow in on eth0 to any port 80
這樣做將允許您的服務(wù)器從公共互聯(lián)網(wǎng)接收HTTP請求。
或者,如果您希望MySQL數(shù)據(jù)庫服務(wù)器(端口3306 )監(jiān)聽專用網(wǎng)絡(luò)接口eth1上的連接,則可以使用以下命令:
sudo ufw allow in on eth1 to any port 3306
這將允許專用網(wǎng)絡(luò)上的其他服務(wù)器連接到MySQL數(shù)據(jù)庫。
第7步 拒絕連接
如果尚未更改傳入連接的默認(rèn)策略,則UFW配置為拒絕所有傳入連接。 通常,這會通過要求您創(chuàng)建明確允許特定端口和IP地址的規(guī)則來簡化創(chuàng)建安全防火墻策略的過程。??????????????????????????