2015年3月18日 星期三

恢復「Fedora 21 工作站」版的「防火牆」保護

Fedora 一向給我的印象是:安裝完成後,預設的安全防護相當足夠,甚至會影響使用者對某些『服務』的修改(如:更改 SSH 的埠號時,除了「防火牆」外也要動到「SELinux」)。這些不便對一般使用者而言,不一定會受到太大的影響。基於安全考量,筆者是支持這種作法。
  但是,這個情況在「Fedora 21 工作站」版卻有些不同,「防火牆」的預設值竟然是所有埠號全部開啟的狀況。
在「MATE 桌面」的查詢步驟主要有兩個地方,一個是在「網路卡」設定
  • 從『程式選單』的《系統》→《偏好設定》→《系統》點選《網路連線》,出現一個設定「網路連線」的視窗。
  • 接著,點選網卡,按【編輯】。在【一般】這個分頁內的『防火牆地帶』可以看到,預設值為『預設』。
另一個是「防火牆」的設定,
  • 由『程式選單』的《系統》→《管理》點選《防火牆》,出現設定「防火牆」的視窗。
  • 從《功能選單》→《選項》點選《變更預設界域》,會跳出一個名為『預設界域』的視窗,可以看到『預設界域』為『FedoraWorkstation』,按【取消】關閉視窗。
  • 點選底下『界域』清單的『FedoraWorkstation』,在右方的『連接埠』分頁,可以看到開啟的埠號無論是 TCP 或 UDP 都是從 1025 到 65535,其意思就是說『全部開放』,也就是說『形同虛設』。
而「GNOME 桌面」的查詢步驟就不一樣:
  • 點選桌面右上角類似『』,再點選【Wired 已連線 ▸】,及【有線設定值】,按右下角【】,在『身分』欄可看見『防火牆地帶』的設定,仍是『預設』。
  • 在「終端機」中用「文字命令」查詢「防火牆」的設定。
    [SiB@Celeron-D ~]$ firewall-cmd --get-default-zone
    FedoraWorkstation

    [SiB@Celeron-D ~]$ firewall-cmd --list-all
    FedoraWorkstation (default, active)
       interfaces: eth0
       sources:
       services: dhcpv6-client mdns samba-client ssh
       ports: 1025-65535/udp 1025-65535/tcp
       masquerade: no
       forward-ports:
       icmp-blocks:
       rich rules:
    上例中,第一個命令是查詢「防火牆」的預設設定,第二個命令是列出該設定的內容。其中有關 ports(埠號)的設定值也是無論是 TCP 或 UDP 都是從 1025 到 65535,一樣都是全部開放。

    :在 Fedora 21 的「GNOME 桌面」,未預設安裝「圖型化」的「防火牆」管理程式。
在「終端機」查詢就不用管電腦是使用哪一種桌面,或是有否使用桌面環境(如:伺服器),其命令為,
[SiB@Celeron-D ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=enp0s4
UUID=5df89222-4bc8-4582-af81-55bc4565ffba
ONBOOT=yes
HWADDR=00:0C:76:CF:19:EC
PEERDNS=yes
PEERROUTES=yes

[SiB@Celeron-D ~]$ firewall-cmd --get-default-zone
FedoraWorkstation

[SiB@Celeron-D ~]$ firewall-cmd --list-all
FedoraWorkstation (default, active)
   interfaces: eth0
   sources:
   services: dhcpv6-client mdns samba-client ssh
   ports: 1025-65535/udp 1025-65535/tcp
   masquerade: no
   forward-ports:
   icmp-blocks:
   rich rules:
上例中,第一個命令是查詢網路卡的設定檔,沒有任何以『ZONE=』為首的設定文字,即指其「防火牆地帶」的設定值為預設。而第二、三個命令說明同「GNOME 桌面」,請往前查看。

  若確定你的電腦之「防火牆」設定就如上所述,則「防火牆」將如形同虛設,只剩「Linux 本身系統」和「Fedora 的 SELinux」之保護。至於夠不夠?是各有說法(參考篇末之「參考資料」)。
  想多加上一層「防火牆」的保護,就如以前的 Fedora 版本一樣,只要略加修改一下設定即可。

為 Fedora 21 加上「防火牆」保護

修改設定有個,一個是從「網路卡」下手,另一個方法是從「防火牆」的設定。

修改「網路卡」設定

因為這個方法在「MATE 桌面」或「GNOME 3 桌面」都有「圖形化」的操作介面,適合不想再加裝套件或不習慣「文字型」命令操作的使用者。
  彷照上述的查詢步驟,將『防火牆地帶』的設定由『預設』改為『public』即可。不過,要使之生效還要將「網路卡」重啟一下才行(參考前文:『在 Fedora 系統以手動方式『重新取得網路位址』』)。

:筆者較推薦修改「網路卡」,特別是用在筆記型電腦的設定,方便隨使用環境的不同變更。

修改「防火牆」設定

因為「MATE 桌面」有預設安裝「圖形化」的「防火牆」管理程式,而「Fedora 21 工作站」版預設安裝的「GNOME 3 桌面」預設只安裝「文字型」的「防火牆」管理程式。因此,不同桌面的使用者,在不再加裝套件的情形下,要選擇適合自已使用的方法。
  「圖形化」操作的方法,如上述的查詢步驟,但將【組態】先修改為『永久』,並且將『預設界域』更改為『public』。接著,還要從《功能選單》→《選項》點選《重新載入 Firewalld》,剛才的設定才會永久有效。
  而「文字型」操作的方法,要先開啟「終端機」並切換為 root 身分,再下命令
[root@Celeron-D ~]# firewall-cmd --permanent --set-default-zone=public
[root@Celeron-D ~]# firewall-cmd --reload
上例中第一個命令是將『預設界域』永久設定為『public』,第二個命令是立即重新載入「防火牆」設定。

已測試版本:

  • Fedora 21 Workstation

參考資料:

4 則留言:

  1. Sib大大,意識說Fedora 21 Workstation預設並未安裝防火牆?
    小弟使用的是GNOME 桌面

    回覆刪除
    回覆
    1. 「Fedora 21 工作站」是有安裝「防火牆」也有啟動,但是,以往的設定是除了幾個預設埠號開啟外,其它『全部關閉」。但是,這次它預設為所有的埠號『全部開啟』,形同沒有「防火牆」的保護。

      刪除
  2. 點選底下『界域』清單的『FedoraWorkstation』,在右方的『連接埠』分頁,可以看到開啟的埠號無論是 TCP 或 UTP 都是從 1025 到 65535,其意思就是說『全部開放』,也就是說『形同虛設』。

    UTP 打錯了,因該是UDP吧

    回覆刪除

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)