2008-05-05

談談 ufw

有使用過 iptables 防火牆的朋友,相信都會認為這不是件 "好玩" 的事。在 ubuntu 8.04 中一個新的特性就是加入了 ufw 這個東東,它可以簡化 iptables 的設定。

ufw 是 Uncomplicated Firewall 的簡稱,意謂著 "不複雜的防火牆" 設定,ufw 是一個前端程式,骨子里仍然是 iptables,所以使用 ufw 就可以讓我們很容易的設定 iptables。

要強調的是 ufw 只是一個簡單的 iptables 前端定工具,無法完全取代 iptables 的有設定,所以若想做進一步複雜的 firewall 設定,還是得回到 iptables 層面。

另外,ufw 主要是針對由外網連至內部的設定,所以它不會影響你電腦連至外部的任何連結。

個人以為 ufw 適合以下兩個場合使用:

1. 簡單的防火牆設定
2. 個人使用的 desktop 設定

其實,ufw 的設定真的很簡單,看一下 man ufw 就大概了解其用法了,以下簡單的說明:

● ufw 的設定檔

在 /etc/ufw/ 這個目錄下有著 ufw 的設定檔,如 before.rules、after.rules、sysctl.conf、ufw.conf,另外還有 for ip6 的 before6.rule 及 after6.rules

before.rules、after.rules 及 sysctl.conf 一般照內定的值即可,不用特殊的設定,其詳細內容請自行參照 man ufw 中相關說明。

而 ufw.conf 是用來啟動或是關閉 ufw 之用的,里面就只有這樣的的內容:

# /etc/ufw/ufw.conf
#

# set to yes to start on boot
ENABLED=yes

當我們使用 sudo ufw enable,這個檔案就會設為 ENABLE=yes,反之若是執行 sudo ufw disable 的話,這個檔案內容就是 ENABLE=no 了。

另外一個重要的檔案就是 /var/lib/ufw/user.rules 這個檔案了,我們使用 ufw 設定的防火牆內容都是放在這個檔案內(以下會說明)。

● ufw 的參數

不妨自行使用 ufw --help 來看看有那些參數可使用(如附圖一)。

附圖一


由於 ufw 位於 /usr/sbin/ 這個目錄之下,所以要設定時需使用 sudo ufw [參數] 這樣的語法。

介紹幾個重要的參數:

開啟(enable)或停止(disable) ufw
# sudo ufw enable[disable]

內定是允許或是禁止
# sudo default allow[deny]

個人建議先使用 sudo ufw default deny 將所有的由外連結至內的連結通通關掉,再使用 ufw allow 開放想開放的內容。

● 設定想開放的 protocol

格式約有以下幾種:

sudo ufw allow [開放的 protocal(port)]

ufw 會去參考 /etc/services 這個檔案的設定,如 smtp 的代號(port)是 25,www 的代號是 80,如果在 /etc/services 中無相關關設定,那麼可用代號(port no)來替代,如 vnc 的代號是 5900,在 /etc/services 中沒設定,我們可用:

# sudo ufw allow 5900

在 protocal 後可加上 tcp 或是 udp,如:

# sudo ufw allow 25/tcp

我們也可指定那些 ip 可連到本機的某個 protocol(port),如

sudo ufw alow proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25

● 範例

若我們想開放本機的 80 及 53 給外部使用,不妨照以下設定:

為方便設定,少打一些 "ufw",所以先切換到 root
# sudo su

# ufw enable
# ufw default deny
# ufw allow 80
# ufw allow 53

顯示 ufw 設定(附圖二)
# ufw status

附圖二


● 刪除某一個 ufw 設定規則

ufw 雖然提供一個 delete 用來刪除某一項 ufw 設定規則,但個人覺得不是很好用,其實這些設定規則都放在 /var/lib/ufw/user.rules 這個檔案之中,所以直接改這個檔案是不是比較有效率呢?

修改後記得重新執行:

# sudo su
# ufw disable
# ufw default deny
# ufw enable

附圖三

1 則留言 :

  1. ufw有辦法開啟虛擬網路卡嗎?
    (虛擬網路卡一律放行)


    virtualbox

    vbh.sh開機時啟動....新增虛擬網路卡為br0
    tunctl -t tap2 -u msavr
    brctl addbr br0
    ifconfig eth0 0.0.0.0 promisc
    brctl addif br0 eth0
    dhclient br0
    brctl addif br0 tap2
    ifconfig tap2 up
    chmod 666 /dev/net/tun

    回覆刪除