ufw簡易防火墻管理工具“食用指南”
前段時間在自己的“吃灰派”上部署了一些服務(wù),用到了ufw來便捷地管理防火墻規(guī)則。對于一般安全需求的服務(wù)來說,整體的使用體驗還不錯,所以準(zhǔn)備用一篇專欄的篇幅來記錄使用方法,方便自己以后隨時能快速查閱與應(yīng)用。
簡單介紹一下ufw,全稱是Uncomplicated Firewall,是Debian類GNU/Linux發(fā)行版默認(rèn)防火墻工具。相比于直接操作iptabels,ufw工具對不熟悉防火墻概念的初學(xué)者更加友好,同時支持IPv4和IPv6。
。。。(  ̄ ︶  ̄ ) ↗ 。。。
以Debian10 GNU/Linux為例,下載和安裝ufw,在命令行中執(zhí)行:
等待ufw及其相關(guān)的依賴包下載、安裝完成……
安裝完成后,可以通過以下命令啟動ufw服務(wù),并在服務(wù)重啟后生效:
且慢,先別著急啟動服務(wù),在此之前還得調(diào)整現(xiàn)有的防火墻規(guī)則。默認(rèn)情況下,ufw默認(rèn)策略設(shè)置為阻止所有傳入流量并允許所有傳出流量,效果與以下設(shè)置相同:
如果當(dāng)前重啟ufw服務(wù)的話(暫且先別這么做),默認(rèn)規(guī)則會在服務(wù)重啟后生效,防火墻將拒絕所有傳入的連接。倘若當(dāng)前正在使用的是ssh連接,這意味著重啟過后將無法遠(yuǎn)程連接到這臺服務(wù)器,所以在此之前需要明確指定放行規(guī)則 。
允許防火墻傳入ssh連接,可以使用以下命令:
如果你已經(jīng)提前了解到ssh服務(wù)默認(rèn)監(jiān)聽的是22號端口的話,等效命令如下:
如果為了安全考慮,你的ssh服務(wù)不再使用默認(rèn)的端口,則需要手動指定相應(yīng)的端口
除此之外,ufw服務(wù)還可以根據(jù)TCP/UDP協(xié)議來過濾某個端口的數(shù)據(jù)包,例如:
與之對應(yīng)的是,想要過濾某個端口的傳入數(shù)據(jù)包,例如:
現(xiàn)在可以使用以下命令查看當(dāng)前已設(shè)置的規(guī)則:
如果需要刪除某一個規(guī)則,只需要在原始規(guī)則之前加上delete就可,或者按照編號刪除規(guī)則:
什么?不知道當(dāng)前規(guī)則編號,請見上一條第三項灰色注釋:
善用幫助命令與文檔,能夠解決99%的問題:
。。。 ( ? ? ? ) 。。。
下面加深一下難度,
操作特定范圍的端口規(guī)則:
你甚至還可以設(shè)置指定的協(xié)議規(guī)則:
某些特殊的情況下,需要允許或禁止特定的ip連接服務(wù)器的所有端口:
高級一點的還有,對某特定范圍的ip進(jìn)行操作:
允許特定的ip連接特定端口:
進(jìn)一步可以指定協(xié)議:
這些高級規(guī)則配置歸根結(jié)底是一些基本配置命令的組合應(yīng)用。
再來舉一些復(fù)雜的例子:
熟悉基礎(chǔ)規(guī)則的話,只需要將復(fù)雜規(guī)則拆分就能很好地理解實際作用。
ufw默認(rèn)啟用了IPV6設(shè)置,相關(guān)的配置文件位于:
查看配置內(nèi)容,找到IPV6=yes
,如果在平時使用的過程中不需要用到ipv6的規(guī)則,可以使用編輯該配置將其改為no,重啟服務(wù)后生效。
之前有提到一條命令 sudo ufw allow ssh?,讓人不解的是ufw是怎么知道ssh服務(wù)具體綁定哪些端口的呢?其實一些主流的服務(wù)都會有默認(rèn)綁定的端口,只要這個服務(wù)名聲在外、用戶群體龐大,那么默認(rèn)端口也就約定俗成了(不服?不服來干  ̄へ ̄ )
ufw內(nèi)置了一些應(yīng)用服務(wù)配置,無需用戶詳細(xì)了解一些主流服務(wù)需要的端口信息,只要用戶自己沒有修改默認(rèn)端口配置,就可以快速使用ufw命令進(jìn)行操作,使用以下命令查看ufw可用的內(nèi)置應(yīng)用服務(wù)信息:
種類繁多,任君挑選!
另外,在此基礎(chǔ)上補充一條常用的規(guī)則:
ufw工具的強大之處既在于它的簡單易用,也在于操作的靈活性,得到了iptables的真?zhèn)鳌?/p>
。。。 [ ] ~ (  ̄ ▽  ̄ ) ~ * 。。。
參考文獻(xiàn):https://help.ubuntu.com/community/UFW