Linux中國

Debian/Ubuntu系統中安裝和配置UFW-簡單的防火牆

安裝 UFW 防火牆

作為最大的計算機網路,互聯網上可並不都是善意的用戶。因此,為了確保我們的計算機或伺服器安全,我們需要進行保護。

在你的計算機或伺服器上一個必須有的組件就是防火牆。在維基百科中,其定義是:

防火牆是計算機中一款應用軟體或基於硬體的網路安全系統。它根據應用配置的規則,分析數據包,然後決定是否允許此數據包通過,來控制整個系統的網路數據進出訪問許可權。

iptables 是一款廣泛使用於伺服器的防火牆。它是一款應用程序,它會根據一系列規則來管理伺服器上的進出數據流。一般來說,只有可信任的連接才允許進入伺服器。但 iptables 是在控制台模式下運行,它非常的複雜。不熟悉 iptables 配置規則和命令的用戶可以讀讀下面的文章,它描述了如何使用iptables防火牆。

Debian/Ubuntu 系統中安裝 UFW 防火牆

為了降低 iptables 設置的複雜度,有許多對應的前端應用。如果你運行的是 Ubuntu linux 系統的話, UFW 就是一款默認的防火牆工具。我們開始來探討 UFW 防火牆吧。

什麼是 UFW

UFW (簡單的防火牆) 是廣泛使用的 iptables 防火牆 的前端應用,這是非常適合於基於主機的防火牆。UFW 即提供了一套管理網路過濾器的框架,又提供了控制防火牆的命令行界面介面。它給那些不熟悉防火牆概念的 Linux 新用戶提供了友好、易使用的用戶界面。

同時,另一方面,它也提供了命令行界面,為系統管理員準備了一套複雜的命令,用來設置複雜的防火牆規則。UFW 對像 Debian、UbuntuLinux Mint 這些發布版本來說也是上上之選。

UFW 基本用法

首先,用如下命令來檢查下系統上是否已經安裝了 UFW

$ sudo dpkg --get-selections | grep ufw

如還沒有安裝,可以使用 apt 命令來安裝,如下所示:

$ sudo apt-get install ufw

在使用前,你應該檢查下 UFW 是否已經在運行。用下面的命令來檢查。

$ sudo ufw status

如果你發現狀態是: inactive , 意思是沒有被激活或不起作用。

啟用/禁用 UFW

要啟用它,你只需在終端下鍵入如下命令:

$ sudo ufw enable

在系統啟動時啟用和激活防火牆

要禁用,只需輸入:

$ sudo ufw disable

列出當前UFW規則

在防火牆被激活後,你可以向裡面添加你自己的規則。如果你想看看默認的規則,可以輸入。

$ sudo ufw status verbose

輸出樣例:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
$

添加UFW規則

如你所見,默認是不允許所有外部訪問連接的。如果你想遠程連接你的機器,就得開放相應的埠。例如,你想用 ssh 來連接,下面是添加的命令。

允許訪問

$ sudo ufw allow ssh

[sudo] password for pungki :
Rule added
Rule added (v6)
$

再一次檢查狀態,會看到如下的一些輸出。

$ sudo ufw status

To      Action          From
--      -----------         ---22      ALLOW           Anywhere
22      ALLOW           Anywhere (v6)

如果你有很多條規則,想快速的在每條規則上加個序號數字的話,請使用 numbered 參數。

$ sudo ufw status numbered

To      Action          From
------      -----------         ---[1] 22      ALLOW           Anywhere
[2] 22      ALLOW           Anywhere (v6)

第一條規則的意思是所有通過22埠訪問機器的 tcpudp 數據包都是允許的。如果你希望僅允許 tcp 數據包訪問應該怎麼辦?可以在服務埠後加個 tcp 參數。下面的示例及相應的輸出。

$ sudo ufw allow ssh/tcp

To      Action          From
------      -----------         ---22/tcp      ALLOW           Anywhere
22/tcp      ALLOW           Anywhere (v6)

拒絕訪問

添加拒絕規則也是同樣的招數。我們假設你想拒絕 ftp 訪問, 你只需輸入

$ sudo ufw deny ftp

To      Action          From
------      -----------         ---21/tcp      DENY            Anywhere
21/tcp      DENY            Anywhere (v6)

添加特定埠

有時候,我們會自定義一個埠而不是使用標準提供的。讓我們試著把機器上 ssh22 埠換成 2290 埠,然後允許從 2290 埠訪問,我們像這樣添加:

$ sudo ufw allow 2290/ssh (譯者註:些處演示例子有問題)

To      Action          From
--      -----------         ---2290        ALLOW           Anywhere
2290        ALLOW           Anywhere (v6)

你也可以把埠範圍添加進規則。如果我們想打開從 2290到2300 的埠以供 tcp 協議使用,命令如下示:

$ sudo ufw allow 2290:2300/tcp

To          Action          From
------          -----------         ---2290:2300/tcp       ALLOW           Anywhere
2290:2300/tcp       ALLOW           Anywhere (v6)

同樣你想使用 udp 的話,如下操作。

$ sudo ufw allow 2290:2300/udp

To          Action          From
------          -----------         ---2290:2300/udp       ALLOW           Anywhere
2290:2300/udp       ALLOW           Anywhere (v6)

請注意你得明確的指定是 『tcp』 或 『udp』,否則會出現跟下面類似的錯誤信息。

ERROR: Must specify 『tcp』 or 『udp』 with multiple ports

添加特定 IP

前面我們添加的規則都是基於 服務程序 的,UFW 也可以添加基於 IP 地址的規則。下面是命令樣例。

$ sudo ufw allow from 192.168.0.104

你也可以使用子網掩碼來擴寬範圍。

$ sudo ufw allow form 192.168.0.0/24

To      Action          From
--      -----------         ---Anywhere    ALLOW           192.168.0.104
Anywhere    ALLOW           192.168.0.0/24

如你所見, from 參數僅僅限制連接的來源,而目的(用 To 列表示)是所有地方。讓我們看看允許訪問 22埠(ssh)的例子。

$ sudo ufw allow to any port 22

上面的命令會允許從任何地方以及任何協議都可以訪問22埠

組合參數

對於更具體的規則,你也可以把 IP 地址協議這些組合在一起用。我們想創建一條規則,限制僅僅來自於 192.168.0.104 的 IP ,而且只能使用 tcp 協議和通過 22埠 來訪問本地資源。我們可以用如下所示的命令。

$ sudo ufw allow from 192.168.0.104 proto tcp to any port 22

創建拒絕規則的命令和允許的規則類似,僅需要把 allow 參數換成 deny 參數就可以。

刪除規則

某些時候需要刪除現有的規則。再一次使用 UFW 刪除規則是很簡單的。在上面的示例中,已經創建了如下的規則,現在你想刪除它們。

To      Action          From
--      -----------         ---22/tcp      ALLOW           192.168.0.104
21/tcp      ALLOW           Anywhere
21/tcp      ALLOW           Anywhere (v6)

刪除規則有兩個方法。

方法1

下面的命令將會 刪除ftp 相關的規則。所以像 21/tcp 這條 ftp 默認訪問埠的規則將會被刪除掉。

$ sudo ufw delete allow ftp

方法2

但當你使用如下命令來刪除上面例子中的規則時,

$ sudo ufw delete allow ssh

或者 

$ sudo ufw delete allow 22/tcp

會出現如下所示的一些錯誤

Could not delete non-existent rule
Could not delete non-existent rule (v6)

我們還有一招。上面已經提到過,可以序列數字來代替你想刪除的規則。讓我們試試。

$ sudo ufw status numbered

To      Action          From
--      -----------         ---[1] 22/tcp      ALLOW           192.168.0.104
[2] 21/tcp      ALLOW           Anywhere
[3] 21/tcp      ALLOW           Anywhere (v6)

然後我們刪除正在使用的第一條規則。按 「 y 」 就會永久的刪除這條規則。

$ sudo ufw delete 1

Deleting :
Allow from 192.168.0.104 to any port 22 proto tcp
Proceed with operation (y|n)? y

從這些用法中你就可以發現它們的不同。 方法2 在刪除前需要 用戶確認 ,而 方法1 不需要。

重置所有規則

某些情況下,你也許需要 刪除/重置 所有的規則。可以輸入。

$ sudo ufw reset

Resetting all rules to installed defaults. Proceed with operation (y|n)? y

如果你輸入「 y 」, UFW 在重置你的 ufw 前會備份所有已經存在規則,然後重置。重置操作也會使你的防火牆處於不可用狀態,如果你想使用得再一次啟用它。

高級功能

正如我上面所說,UFW防火牆能夠做到iptables可以做到的一切。這是通過一些規則文件來完成的,他們只不過是 iptables-restore 所對應的文本文件而已。是否可以通過 ufw 命令微調 UFW 的與/或邏輯來增加 iptables 命令其實就是編輯幾個文本文件的事。

  • /etc/default/ufw: 默認策略的主配置文件,支持 IPv6 和 內核模塊。
  • /etc/ufw/before[6].rules: 通過 ufw 命令添加進規則之前裡面存在的規則會首先計算。
  • /etc/ufw/after[6].rules: 通過 ufw 命令添加進規則之后里面存在的規則會進行計算。
  • /etc/ufw/sysctl.conf: 內核網路可調參數。
  • /etc/ufw/ufw.conf: 設置系統啟動時 UFW 是否可用,和設置日誌級別。

結論

UFW 作為 iptables 的前端應用,給用戶提供了簡單的介面界面。使用著不需要去記非常複雜的 iptables 語法。UFW 也使用了『 簡單英語 』作為它的參數。

Allow、deny、reset 就是他們當中的一部分。我相信有很多很多 iptables 前端應用,但 UFW 絕對是那些想要快速、簡單的就建立自己的防火牆,而且還很安全的用戶的最佳替代品之一。請輸入 man ufw 查看 ufw 用戶手冊,來了解更多詳情。

via: http://www.tecmint.com/how-to-install-and-configure-ufw-firewall/

譯者:runningwater 校對:Caroline

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。