• Debian/Ubuntu系統中安裝和配置UFW防火墻
  • 作為最大的計算機網絡,互聯網上可并不都是善意的用戶。因此,為了確保我們的計算機或服務器安全,我們需要進行?;?。
    在你的計算機或服務器上一個必須有的組件就是防火墻。

    在維基百科中定義是:防火墻是計算機中一款應用軟件或基于硬件的網絡安全系統。它根據應用配置的規則,分析數據包,然后決定是否允許此數據包通過,來控制整個系統的網絡數據進出訪問權限。
    iptables 是一款廣泛使用于服務器的防火墻。它是一款應用程序,它會根據一系列規則來管理服務器上的進出數據流。一般來說,只有可信任的連接才允許進入服務器。但 iptables 是在控制臺模式下運行,它非常的復雜。

    不熟悉 iptables 配置規則和命令的用戶可以讀讀下面的文章,它描述了如何使用iptables防火墻。

    Debian/Ubuntu 系統中安裝 UFW 防火墻
    為了降低 iptables 設置的復雜度,有許多對應的前端應用。如果你運行的是 Ubuntu linux 系統的話, UFW 就是一款默認的防火墻工具。我們開始來探討 UFW 防火墻吧。
    什么是 UFW
    UFW (簡單的防火墻) 是廣泛使用的 iptables 防火墻的前端應用,這是非常適合于基于主機的防火墻。UFW 即提供了一套管理網絡過濾器的框架,又提供了控制防火墻的命令行界面接口。它給那些不熟悉防火墻概念的 Linux 新用戶提供了友好、易使用的用戶界面。
    同時,另一方面,它也提供了命令行界面,為系統管理員準備了一套復雜的命令,用來設置復雜的防火墻規則。UFW 對像 Debian、Ubuntu 和 Linux 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端口訪問機器的 tcp 或 udp 數據包都是允許的。如果你希望僅允許 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)

    添加特定端口
    有時候,我們會自定義一個端口而不是使用標準提供的。讓我們試著把機器上 ssh 的 22 端口換成 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 來了解更多相關知識。



    上一篇CentOS7安裝配置LEMP(Nginx/PHP-FPM 5.6/MySQL 5.5)

    下一篇將linux系統中的中文語言改成英文

    2016 迅捷格言:事在人為 莫道萬般皆無奈;境由心造 后退一步萬事寬! 有事您說話,小捷很樂意幫助您!