ufw防火牆配置命令

本文轉自:Ubuntu ufw防火牆配置命令


前言

最近纔想起來關注自己的操作系統的安全,所以特地找了一個稍微清楚的文章來學習一下。

1.安裝

sudo apt-get install ufw

2.啓用

sudo ufw enable
sudo ufw default deny

運行以上兩條命令後,開啓了防火牆,並在系統啓動時自動開啓。關閉所有外部對本機的訪問,但本機訪問外部正常。

3.開啓/禁用

sudo ufw allow|deny [service]

打開或關閉某個端口,例如:

sudo ufw allow smtp 允許所有的外部IP訪問本機的25/tcp (smtp)端口
sudo ufw allow 22/tcp 允許所有的外部IP訪問本機的22/tcp (ssh)端口
sudo ufw allow 53 允許外部訪問53端口(tcp/udp)
sudo ufw allow from 192.168.1.100 允許此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 delete allow smtp 刪除上面建立的某條規則

4.查看防火牆狀態

sudo ufw status

一般用戶,只需如下設置:

sudo apt-get install ufw
sudo ufw enable
sudo ufw default deny

以上三條命令已經足夠安全了,如果你需要開放某些服務,再使用sudo ufw allow開啓。


開啓/關閉防火牆 (默認設置是’disable’)

sudo  ufw enable|disable

轉換日誌狀態

sudo  ufw logging on|off

設置默認策略 (比如 “mostly open” vs “mostly closed”)

sudo  ufw default allow|deny

許可或者屏蔽端口 (可以在“status” 中查看到服務列表)。可以用“協議:端口”的方式指定一個存在於/etc/services中的服務

名稱,也可以通過包的meta-data。 ‘allow’ 參數將把條目加入 /etc/ufw/maps ,而 ‘deny’ 則相反。基本語法如下:

sudo  ufw allow|deny [service]

顯示防火牆和端口的偵聽狀態,參見 /var/lib/ufw/maps。括號中的數字將不會被顯示出來。

sudo  ufw status


UFW 使用範例:

允許 53 端口
$ sudo ufw allow 53

禁用 53 端口
$ sudo ufw delete allow 53

允許 80 端口
$ sudo ufw allow 80/tcp

禁用 80 端口
$ sudo ufw delete allow 80/tcp

允許 smtp 端口
$ sudo ufw allow smtp

刪除 smtp 端口的許可
$ sudo ufw delete allow smtp

允許某特定 IP
$ sudo ufw allow from 192.168.254.254

刪除上面的規則
$ sudo ufw delete allow from 192.168.254.254

5、開啓/禁用相應端口或服務(舉例說明)

sudo ufw allow 80 允許外部訪問本機80端口
sudo ufw delete allow 80 禁止外部訪問本機80 端口
sudo ufw allow from 192.168.1.1 允許此IP訪問所有的本機端口
sudo ufw deny smtp 禁止外部訪問smtp服務
sudo ufw delete allow smtp 刪除上面建立的某條規則
sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 要拒絕所有的流量從TCP的10.0.0.0/8 到端口22的地址192.168.0.1

可以允許所有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

6、更詳細的說明
[]是代表可選內容。可能需要root權限,如無法運行,請使用 sudo ufw……的命令結構。“”中的內容不能照抄,要按需要更改。

ufw [--dry-run] enable|disable|reload
命令[–試運行]激活|關閉|重新載入

ufw [--dry-run] default allow|deny|reject [incoming|outgoing]
命令[–試運行]默認 允許|阻止|拒絕 [訪問本機的規則|向外訪問的規則]

注:reject讓訪問者知道數據被拒絕(回饋拒絕信息)。deny則直接丟棄訪問數據,訪問者不知道是訪問被拒絕還是不存在該主機。

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級別及更上級會記錄許多內容,有可能短時間內撐爆你的硬盤。特別是用在服務器一類的機器上。

on與off只是起開關作用,不代表級別。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章