https://www.informationsecurity.com.tw/Seminar/2024_TNSP/register.aspx
https://www.informationsecurity.com.tw/Seminar/2024_TNSP/register.aspx

觀點

新版Linux舊套件 越更新版本卻越舊?

2009 / 07 / 14
盧紹榮
新版Linux舊套件 越更新版本卻越舊?
筆者檢測了幾套Linux,發現特別的現象-「新版Linux的套件更新後,套件的版本可能比舊版Linux的套件更新後還要舊。」

  最近想把某套系統從舊主機搬移到新主機上,系統上線前,照例要拿安全性掃描工具測試一下。雖然安裝的是該種Linux的最新版,使用套件基於安全性考量做了更新,但是掃描結果卻出現了幾個值得注意的警告「PHP版本低於5.2.6,Apache版本低於 2.2.8」,也就是安全掃瞄軟體建議PHP版本至少要5.2.6,而Apache版本至少要2.2.8。(見比較表)

  一般而言,新版的Linux會使用新版的套件,而且更新後也是接近最新版的版本,但是似乎情況並非如此。筆者於是把幾套Linux做了些檢測,發現了一個特別的現象-「新版Linux的套件更新後,套件的版本可能比舊版Linux的套件更新後還要舊。」

測試

  作者測試了幾種版本的Linux,包括:Fedora 7、Fedora 8、Fedora 9、CentOS 5.2、Ubuntu 8.0.41。

  測試版本變化的套件則為Apache、PHP和MySQL,都是經常安裝使用的套件。

Fedora和CentOS的套件版本檢察與更新

  接下來介紹套件版本的顯示方法,以及系統的更新方法。

套件更新

  F e d o r a和C e n t O S的操作方式類似,在Apache、PHP和MySQL的版本顯示和套件更新方式都是相同的,所以一併介紹。在Fedora或CentOS更新Apache套件的方法如下:

[root@fedora7 ~]# yum -y install httpd

  其中yum是Fedora或CentOS常用來檢查更新套件的指令。參數「install」表示要安裝新版套件,因為預設下載更新的每個套件,都會再次詢問是否確定要安裝,很煩人,所以一般習慣用參數「-y」表示對於這些問題都自動回答「yes」。參數「install」後面的參數表示要安裝的套件名稱,Apache的套件名稱是「httpd」(HTTP Daemon)。

在Fedora或CentOS更新PHP套件的方法如下:

  [root@fedora7 ~]# yum -y install php

在Fedora或CentOS更新MySQL套件的方法如下:

  [root@fedora7 ~]# yum -y install mysql-server

套件更新完成後,我們準備檢查套件版本。

版本檢查

  Apache檢查版本的方法為執行「httpd -v」,版本顯示的位置在訊息中找一下可以發現,以下面測試而言,我們可以看到該系統目前的Apache版本為2.2.8。(筆者的版本已經先更新過了,如果是尚未更新的Fedora 7,看到的可能是另一版本編號)[root@fedora7 ~]# httpd -vServer version: Apache/2.2.8 (Unix)Server built: Jan 24 2008 10:44:19PHP檢查版本的方法為執行「php -v」,以下面測試而言,我們可以看到該系統目前的PHP版本為5.2.6。

[root@fedora7 ~]# php -v
PHP 5.2.6 (cli) (built: May 8 2008 08:38:47)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend
Technologies

  要檢查MySQL版本,請執行「mysql」,它會進入MySQL管理介面,我們可以在訊息中看到版本;以下面測試而言,我們可以看到該系統目前的MySQL版本為5.0.45。

[root@fedora7 ~]# mysql
Welcome to the MySQL
monitor. Commands end with
; or \g.
Your MySQL connection id is
137
Server version: 5.0.45 Source distribution
Type ''help;'' or ''\h'' for help. Type ''\c'' to clear the buffer.
mysql> \q
Bye

  進入MySQL管理介面後,要離開請輸入「\q」,如果不想進入管理介面而顯示版本號碼,可以執行「mysqladmin version」,方法如下:

[root@fedora7 ~]# mysqladmin version
mysqladmin Ver 8.41 Distrib 5.0.45, for redhat-linux-gnu
on i686

Ubuntu的套件版本檢查與更新

  Ubuntu和Fedora/CentOS差異較大,某些命令用法或許仍相同,但是某些則迥然不同。

套件更新

  在Ubuntu更新Apache套件是使用「apt-get」,且Ubuntu預設帳號而非root,而「apt-get」是root權限才能執行的指令,所以須用「sudo」切換權限,並且輸入密碼才可以執行。Apache套件更新方法如下:

  lu@lu-desktop:~$ sudo apt-get install apache2
  [sudo] password for lu:

在Ubuntu更新PHP套件的方法如下:

  lu@lu-desktop:~$ sudo apt-get
  install php
  [sudo] password for lu:

在Ubuntu更新MySQL套件的方法如下:
  lu@lu-desktop:~$ sudo apt-get
  install mysql-server
  [sudo] password for lu:

  套件更新完成後,可以使用上面方法再次檢查更新後的套件版本。

版本檢查

  在Ubuntu上,Apache檢查版本的方法為執行「apache2 -v」,以下面測試而言,我們可以看到該系統目前的Apache版本為2.2.8。

lu@ubuntu8041:/usr/sbin$ apache2 -v
Server version: Apache/2.2.8 (Ubuntu)
Server built: Jun 25 2008 13:50:52

  PHP檢查版本的方法為執行「php -v」,以下面測試而言,我們可以看到該系統目前的PHP版本為5.2.4。

lu@ubuntu8041:/usr/sbin$ php -v
PHP 5.2.4-2ubuntu5.3 with Suhosin-Patch 0.9.6.2 (cli) (built:
Jul 23 2008 06:44:49)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend
Technologies

  要檢查M y S Q L 版本, 請執行「mysqladmin version」,以下面測試而言,我們可以看到該系統目前的MySQL版本為5.0.51a。

lu@lu-desktop:~$ mysqladmin version
mysqladmin Ver 8.41 Distrib 5.0.51a, for
debian-linux-gnu on i486

官方的版本

  F e d o r a 用y u m 更新的套件, 是Fedora組織從官方網站下載,編譯後放在yum server上的套件,由於製作需要時間,yum可以更新的版本,有時候並非官方網站的最新版;而CentOS和Ubuntu也有相同的問題。為了知道更新後的版本是後為最新版,是否很久沒有更新了,我們也必須了解一下官方目前版本為何。

  以Apache Web Server而言,官方網站為「http://httpd.apache.org/」,其中Apache 2.2.x系列最新版本為2.2.10。

  以PHP而言,官方網站為「http://www.php.net /」,PHP 5.2.x系列目前最新版是5.2.6。

  以M y S Q L而言,官方網站為「h t t p : / / w w w .mysql.com /」,MySQL版本資訊無法在首頁直接看到,要進入下載畫面才能看到。請讀者先點選左上方的「Downloads」超連結。然後點選「MySQL Community Server」下方的「Downloads」,在下載列表中就可以看到目前最新版為5.0.67。

分析與結論

  我們把得到的資訊做成一個比較表
Apache版本 PHP版本 PHP版本MySQL版本
Fedora 7 2.2.8 5.2.6 5.0.45
Fedora 8 2.2.6 5.2.4 5.0.45
Fedora 9 2.2.8 5.2.5 5.0.51a
CentOS 5.2 2.2.3 5.1.6 5.0.45
Ubuntu 8.0.41 2.2.8 5.2.4 5.0.51a
官方 2.2.10 5.2.6 5.0.67

  我們可以發現,Fedora 7/9和Ubuntu 8.0.41的Apache更新後,都不是官方最新版本的2.2.10,但是起碼達到安全性掃描軟體要求的2.2.8,Fedora 8的Apache更新比Fedora 7更慢;PHP版本更新後,只有Fedora 7的PHP變成5.2.6版,和官方最新版相同,也是唯一達到安全性掃描軟體要求的5.2.6。由於該測試的掃描軟體主要針對網頁安全性,且MySQL一般都是限制localhost存取,並未開放網路直接存取,筆者列在此處只是工作參考。

  而一般Linux的更新的都是對相同系列的提供,避免軟體相容性發生問題,導致系統無法運作。也就是Fedora 8和CentOS 5.2的Apache 2.2.x日後有機會更新到2.2.8或2.2.10;但是CentOS 5.2的PHP為5.1.x系列,再怎樣升級可能也不會到5.2.x系列。

  整個測試研究的結果有點吊詭,因為Fedora 7已經停止更新,所以考慮換Fedora 8/9、CentOS 5.2或Ubuntu 8.0.41,結果卻發現使用套件的安全性
未必比較高。

  當然也有人說直接去官方下載Source Code自己Compile安裝,這樣就是最新版也最安全,但是會有人天天去官方網站看是否有新版嗎?一般還是用yum或apt-get每天自動更新的管理者較多吧。一點小研究,野人獻曝分享於眾。