Ubuntu 防火墙 ufw
?
UbuntuHelp:UFW :http://wiki.ubuntu.org.cn/UbuntuHelp:UFW
Ufw使用指南:http://wiki.ubuntu.org.cn/Ufw使用指南
ubuntu ufw防火墻:http://wap.dongnanshan.com/fn.php?s=ubuntu ufw防火墻
UFW要領:通用防火墻規則和命令:https://www.howtoing.com/ufw-essentials-common-firewall-rules-and-commands/
Linux 防火墻:https://blog.csdn.net/freeking101/article/details/70239637
?
在 Ubuntu 中用 UFW 配置防火墻
?
1. 說明
? ? ? ? 自 2.4 版本以后的 Linux 內核中, 提供了一個非常優秀的防火墻工具。這個工具可以對出入服務的網絡數據進行分割、過濾、轉發等等細微的控制,進而實現諸如防火墻、NAT 等功能。
? ? ? ? 一般來說, 我們會使用名氣比較的大 iptables 等程序對這個防火墻的規則進行管理。iptables 可以靈活的定義防火墻規則, 功能非常強大。但是由此產生的副作用便是配置過于復雜。一向以簡單易用著稱 Ubuntu 在它的發行版中,附帶了一個相對iptables 簡單很多的防火墻配置工具:ufw 。
? ? ? ? ufw 防火墻 即 uncomplicated firewall(不復雜的防火墻)是 iptables 的接口,旨在簡化配置防火墻的過程。 繁瑣部分的設置還是需要去到 iptables。雖然 iptables 是一個堅實和靈活的工具,但是初學者可能很難學會如何使用它來正確配置防火墻。如果您希望開始保護網絡安全,并且不確定使用哪種工具,UFW 可能是您的最佳選擇。
? ? ? ? Ubuntu下使用 UFW 配置防火墻是為了簡化 iptables 的操作。UFW 是 Ubuntu系統上配置 iptables 防火墻的工具,即 ufw 是一個 iptables 的前端應用程序。UFW 提供一個非常友好的命令用于創建基于 IPV4,IPV6 的防火墻規則。但是,UFW 是沒有界面的,就是用命令的那一種,所以,操作起來就不是那么的方便,有人幫它寫了個界面,名字就叫做 “Gufw”。
? ? ? ? 由于 Ubuntu 下的 iptables 操作起來比較復雜,依賴關系比較多,所以使用 UFW 時可以簡化很多操作。當然 Debian 同樣適用。無論是桌面版還是服務器版, UFW 的命令行用法是一樣的。
?
2. 安裝
Ubuntu 的防火墻默認已安裝,如果沒有安裝,執行以下命令安裝 sudo apt-get install ufw查看防火墻狀態 sudo ufw status sudo ufw status numbered? # 按編號顯示防火墻版本 sudo ufw version?
3. ufw 命令參數說明
ufw 幫助:sudo ufw --help? 。更詳細說明:man ufw? 或者 info ufw
$ sudo ufw --help用法: ufw COMMAND Commands:enable enables the firewalldisable disables the firewalldefault ARG set default policylogging LEVEL set logging to LEVELallow ARGS add allow ruledeny ARGS add deny rulereject ARGS add reject rulelimit ARGS add limit ruledelete RULE|NUM delete RULEinsert NUM RULE insert RULE at NUMroute RULE add route RULEroute delete RULE|NUM delete route RULEroute insert NUM RULE insert route RULE at NUMreload reload firewallreset reset firewallstatus show firewall statusstatus numbered show firewall status as numbered list of RULESstatus verbose show verbose firewall statusshow ARG show firewall reportversion display version informationApplication profile commands:app list list application profilesapp info PROFILE show information on PROFILEapp update PROFILE update PROFILEapp default ARG set default application policy詳細說明( man ufw 或者 info ufw )
[]是代表可選內容。可能需要root權限。 ufw [--dry-run] enable|disable|reload # 命令[–試運行]激活|關閉|重新載入ufw [--dry-run] default allow|deny|reject [incoming|outgoing] # 命令[–試運行]默認 允許|阻止|拒絕 [訪問本機的規則|向外訪問的規則]ufw [--dry-run] logging on|off|LEVEL # 命令[–試運行]日志 開啟|關閉|“級別” ufw [--dry-run] reset # 命令[–試運行]復位 ufw [--dry-run] status [verbose|numbered] # 命令[–試運行]狀態 [詳細|被編號的規則] ufw [--dry-run] show REPORT # 命令[–試運行]顯示 “報告類型”ufw [--dry-run] [delete] [insert NUM] allow|deny|reject|limit? [in|out][log|log-all] PORT[/protocol] 命令[–試運行][刪除] [插到“x號規則”之前] 允許|阻止|拒絕|限制 [進|出] [記錄新連接|記錄所有數據包] “端口” [/“協議”]ufw? [--dry-run]? [delete] [insert NUM] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]] 命令 [–試運行][刪除][插到x號規則之前] 允許|阻止|拒絕|限制 [進|出 基于“什么網絡設備”] [協議 “協議”] [來源 “地址” [端口 “端口”]] [目標 “地址” [端口 “端口”]]ufw [--dry-run] delete NUM # 命令[–試運行] 刪除 “第X號規則” ufw [--dry-run] app list|info|default|update # 命令 [–試運行] 程序 清單|信息|默認|更新參數 –version 顯示程序版本號 -h , –help 顯示幫助信息 –dry-run 不實際運行,只是把涉及的更改顯示出來。 enable 激活防火墻,開機時自動啟動 disable 關閉防火墻,開機時不啟動 reload 重新載入防火墻default allow|deny|reject 方向 方向是指:向內(incoming)|向外(outgoing)。如果更改了默認策略,一些已經存在的規則可能需要手動修改。更多內容看“規則示例”一節。 logging on|off|“級別” # 切換日志狀態。日志記錄包使用的是系統日志。“級別”有好幾個,默認是低級(low)。詳細內容看“日志”一節。 reset [--force] # 關閉防火墻,并復位至初始安裝狀態。如果使用–force選項,則忽略確認提示。 status # 顯示防火墻的狀態和已經設定的規則。使用status verbose顯示更詳細的信息。‘anywhere’與‘any’、‘0.0.0.0/0’一個意思。 show “報告類型” # 顯示防火墻運行信息。詳細內容看“報告類型” limit “規則” # 此命令目前只能用于IPv4。還不支持IPv6.規則示例* 規則可以簡寫也可以完整表達。簡寫的規則只能指定端口和(或)協議被允許或阻止。默認是訪問本機的規則(incoming)。例如: ufw allow 53 允許其它機子訪問本機53端口,協議包含tcp和udp。* 如果要控制協議,只要加入“/協議”在端口后面就行了。例如: ufw allow 25/tcp 允許其它機子使用tcp協議訪問25端口。* UFW也可以檢查 /etc/services文件,明白服務的名字及對應的端口和協議。我們使用服務的名稱即可。 ufw allow smtp* UFW同時支持出入口過濾。用戶可以使用in或out來指定向內還是向外。如果未指定,默認是in。例如: ufw allow in http ufw reject out smtp ufw deny out to 192.168.1.1 阻止向192.168.1.1發送信息* 用戶也可使用完整的規則來指定來源與目的地,還有端口。書寫規則基于OpenBSD PF。舉例: ufw deny proto tcp to any port 80 阻止本機用tcp協議在80端口發數據 ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25 This will deny all traffic from the RFC1918 Class A network to tcp port 25 with the address 192.168.0.1.(這條命令目前無法翻譯 from 和 to的關系,希望后來者更改)* ufw也可以使用IPv6協議。但要事先在/etc/default/ufw 中設定IPv6為啟動狀態。舉例: ufw deny proto tcp from 2001:db8::/32 to any port 25 阻止IPv6為2001:db8::/32類型的地址,連接本機25端口* ufw可以連續例舉端口號。端口號間必須使用逗號或分號,不能使用空格。“輸入端口號”字符數最多不能超過15過(8080:8090算兩個字符)。比如允許80,443,8080~8090這幾個端口接受tcp傳入連接。 ufw allow proto tcp from any to any port 80,443,8080:8090 此例,“輸入端口號”字符數為4個。* ufw可以對連接數率進行限制,以防范暴力登錄攻擊。如果同一個IP地址在30秒之內進行了6次及6次以上的連接,ufw將阻止(deny)該連接。可以查看更多信息。 ufw limit ssh/tcp* 當然有些時候我們想讓訪問者知道他的訪問被拒絕了,而不是保持沉默讓他不知道哪出了問題。就使用reject代替deny ufw reject auth* 默認情況下ufw的所有規則針對所有網絡設備(比如網卡1,網卡2,無線網卡1,虛擬網卡1……)。但是我們可以特別指定,某規則在什么網絡設備上生效。注意只能使用設備號,不能用別名。比如有線網卡:eth0(你可以使用ifconfig命令查看你現有的網絡設備) ufw allow in on eth0 to any port 80 proto tcp* 要刪除規則,只要在命令中加入delete就行了。比如: ufw deny 80/tcp 要刪除條命令建立的規則,使用: ufw delete deny 80/tcp 當然,也可以使用規則號來進行刪除。比如要第3號規則 ufw delete 3 注意,如果你開啟IPv6功能。要同時刪除IPv4和IPv6的規則(比如:ufw allow 22/tcp),如果用規則號的方式刪除可能只刪除了一個。* 顯示第幾號規則,可以使用這樣的命令 ufw status numbered(也就是規則號)* 日志功能。如果使用log將記錄所有符合規則的新連接,如果使用log-all將記錄所有符合規則的數據包。例如,要允許并記錄shh(22/tcp)上的新連接: ufw allow log 22/tcp 更多內容看“日志”一節 特殊例子: 允許RFC1918網絡結構訪問本機: ufw allow from 10.0.0.0/8 ufw allow from 172.16.0.0/12 ufw allow from 192.168.0.0/16 最后一條經過測試,范圍大約是192.168.0.0~192.168.225.225。當然,涉及很多專業知識,希望有人補充。 遠程管理 此章節還未被編輯 應用程序集成管理 * ufw能從 /etc/ufw/applications.d. 中讀取應用程序清單。你可以使用命令查看: ufw app list* 大家可以使用應用程序名字來增加規則。比如 ufw allow <程序名字> ufw allow CUPS ufw allow from 192.168.0.0/16 to any app <程序名字> 注意,端口號已經被程序名所對應的策略所包括,不要再重新列舉端口號。 * 查看程序名所對應的策略內容,命令: ufw app into <程序名字> 注意:程序名字是清單上有的才行。程序名字改用用all,可以看全部策略。 * 如果你編輯或者增加了程序清單,你可使用此命令更新防火墻: ufw app update <程序名字> 程序名字改用用all,則更新整個清單。 * 更新清單同時增加規則可以使用如下命令: ufw app update –add-new <程序名字> 注意:update –add-new參數的行為由此命令配置: ufw app default skip|allow|deny 默認是skip,也就是沒有設定。 警告:如果程序規則設定為default allow ,將會引起很大的風險。請三思而后行! 日志 ufw支持許多日志級別。默認是低級(low),用戶也可以自己指定: ufw logging on|off|low|medium|high|full* off 就是關閉日志* low 記錄與默認策略沖突的封裝數據包(記錄速度被限制)。記錄與規則符合的數據包(沒有要求關閉記錄的)* medium 記錄與默認策略沖突的數據包(包括被規則允許的)、無效數據包、所有新連接。記錄速度被限制。* high 同medium,只是沒有記錄速度限制。附加記錄所有數據包(有記錄速度限制)。* full 與high等同,只是取消記錄限制。 medium 級別及更上級會記錄許多內容,有可能短時間內撐爆你的硬盤。特別是用在服務器一類的機器上。?
4. 啟動、禁用、重置 UFW
sudo ufw enable|disable # 設置開機 開啟/關閉防火墻 (默認設置是 disable?) sudo ufw deny? ? ? ? # 關閉所有外部對本機的訪問,但本機訪問外部正常。? ?? sudo ufw reset? ? ? # 重置防火墻一般用戶,只需如下設置:
sudo apt-get install ufw # 安裝 ufw sudo ufw enable # 設置開機啟動 sudo ufw default deny # 設置 ufw 默認為拒絕以上三條命令已經足夠安全了,如果你需要開放某些服務,再使用 sudo ufw allow 開啟相應服務即可。
?
5. 開啟/禁用
用法:sudo ufw allow|deny [service]
reject 讓訪問者知道數據被拒絕(回饋拒絕信息)。deny則直接丟棄訪問數據,訪問者不知道是訪問被拒絕還是不存在該主機。
# 設置默認策略(默認策略即為拒絕所有傳入連接,允許所有傳出鏈接) sudo ufw default deny incoming sudo ufw default allow outgoing# 基于端口的允許/阻止 # 允許 SSH 連接。以下兩條命令效果是一樣的 sudo ufw allow ssh # 允許外部到本機的 ssh sudo ufw allow 22 # 允許外部連接到本機的 22 端口# 基于 IP地址/子網/端口 的組合來 允許/阻止。 # 用法:ufw deny from {ip-address-here} to any port {port-number-here}# 阻斷或拒絕IP地址 202.54.1.5 訪問 80 端口的請求 sudo ufw deny from 202.54.1.5 to any port 80 # 攔截特定 IP、端口以及協議 # 用法:sudo ufw deny proto {tcp|udp} from {ip-address-here} to any port {port-number-here} # 例如,阻斷 IP地址 202.54.1.1 訪問 tcp 22 端口(FTP協議),可以輸入: sudo ufw deny proto tcp from 202.54.1.1 to any port 22 sudo ufw status numbered# UFW 攔截子網 # 用法:sudo ufw deny proto tcp from sub/net to any port 22sudo ufw deny proto tcp from 202.54.1.0/24 to any port 22sudo ufw deny from 192.168.1.5 to any # 攔截或拒絕來自192.168.1.5的所有數據包 sudo ufw allow from 123.45.67.89 # 允許從一個 IP 地址連接: sudo ufw allow from 123.45.67.89/24 # 允許特定子網的連接:# 允許特定 IP/端口 的組合: sudo ufw allow from 123.45.67.89 to any port 22 proto tcp # proto tcp 可以刪除或者根據你的需求改成 proto udp,所有例子的 allow 都可以根據需要變成 deny。sudo ufw allow www 或 sudo ufw allow 80/tcp sudo ufw allow ftp 或 sudo ufw allow 21/tcp sudo ufw allow 22/tcp # 允許所有的外部IP訪問本機的22/tcp (ssh)端口 sudo ufw allow 53 # 允許外部訪問53端口(tcp/udp) sudo ufw allow 80 # 允許外部訪問80端口 等價 sudo ufw allow http sudo ufw delete allow 80 # 禁止外部訪問80 端口 sudo ufw allow from 192.168.1.1 # 允許此IP訪問所有的本機端口 sudo ufw allow from 111.111.111.111 to any port 22 # 允許特定IP特定端口的連接 sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53 sudo ufw deny smtp # 禁止外部訪問smtp服務 sudo ufw allow smtp # 允許所有的外部IP訪問本機的25/tcp (smtp)端口 sudo ufw delete allow smtp # 刪除上面建立的某條規則sudo ufw deny http # 拒絕http連接 sudo ufw deny from 111.111.111.111 # 拒絕特定IP連接# 允許特定端口范圍連接 sudo ufw allow 1000:2000/tcp sudo ufw allow 2001:3000/udp# 拒絕所有的TCP流量從10.0.0.0/8 到192.168.0.1地址的22端口 sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22# 可以允許所有RFC1918網絡(局域網/無線局域網的)訪問這個主機(/8,/16,/12是一種網絡分級): sudo ufw allow from 10.0.0.0/8 sudo ufw allow from 172.16.0.0/12 sudo ufw allow from 192.168.0.0/16 # 這樣設置已經很安全,如果有特殊需要,可以使用sudo ufw allow開啟相應服務?
6. 刪除規則
有兩種刪除防火墻規則的方法,最直接的方法是: sudo ufw delete allow ssh 如上,我們在 delete 指令后面輸入要刪除的規則即可。還可以這樣: sudo ufw delete allow 80/tcp 或 sudo ufw delete allow 1000:2000/tcp如果規則又長又復雜,問題就比較棘手了。這里有一個更簡單的方法,需要分成兩個步驟: sudo ufw status numbered # 按規則來編號防火墻規則。命令會將所有防火墻規則以數字列表形式列出來 # 請將 [number] 替換成規則列表對應的數字序號。 sudo ufw delete 1 # 按規則編號刪除防火墻規則 sudo ufw delete [number] sudo ufw delete 4 # 刪除編號為4的規則?
7. 編輯 UFW 的配置文件
? ? ? ? 雖然可以通過命令行添加簡單的規則,但仍有可能需要添加或刪除更高級或特定的規則。
?
啟用 IPv6 支持
如果你的云服務器啟用了 IPv6,則需要配置 UFW 以啟用支持,編輯 UFW 配置文件: sudo nano /etc/default/ufw 在配置文件中將 IPV6 設置為 yes : IPV6=yes 保存并退出編輯器,重啟 UFW: sudo ufw disable sudo ufw enable 這樣,UFW 就同時支持 IPv4 和 IPv6 兩種協議了。
?
?
?
總結
以上是生活随笔為你收集整理的Ubuntu 防火墙 ufw的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lambda 表达式详解~简化匿名内部类
- 下一篇: Scrapy 爬虫教程导航