歡迎您光臨本站 註冊首頁

打造Linux網路自動補丁機(圖)

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

  Windows下實現自動打補丁的方法《網管員世界》曾經在以前的雜誌上詳細介紹過,得到了大家的一致好評,不過,對於Linux方面自動打補丁的方法,卻沒有涉及,本文將幫助您打造Linux網路中的自動補丁機。

  筆者是一個Red Hat Linux系統管理員,管理著網路中幾十台Redhat Linux 9主機。對於Linux這樣的開放式系統,和其他私有操作系統(Windows/Solais)相比, 發行商的短期支持策略使得網管經常需要上相應的網站看,是否有補丁,是否有了bug 修復,是否需要升級。千萬不要報僥倖心理,否則一個Shell腳本就可能拿下您的網站。套用一句名言:您的伺服器永遠可能在第二天被黑客接管。

  沒有經過很好整合和測試的補丁,伺服器的維護工作將是一個非常繁重的任務。這是因為系統管理員必須跟蹤系統里安裝的每一個軟體包,有時當補丁發布時還要對子系統進行改造。如果把每個Linux主機分別連接到RadHat的升級網站更新補丁,首先會造成企業網路出口阻塞、浪費寬頻資源,另外也不安全。這裡筆者建立一個獨立的APT伺服器,管理員可以自己先下載軟體包,然後通過網路其他用戶可以方便的進行定期升級。 APT伺服器上面可以安裝多個版本Linux 發行版本的RPM 套件,並且需要提供 WWW服務,因為客戶端是通過伺服器的 WWW協議進行 軟體包和內核更新。網路拓撲機構見圖1。





  APT工作原理基本介紹

  Debian GNU/Linux 是APT(Advanced Package Tool)的締造者。初衷是利用工具來解決軟體安裝時候的依賴性問題。其工作原理大致為:用戶安裝APT客戶端工具,查尋APT伺服器端的資料庫(repositories)上的RPM軟體包信息,並分析軟體包之間的依賴性然後下載並進行安裝。APT 除了可以讓您很方便且快速地安裝 RPM 軟體外,也可以用它來更新系統。雖然APT是基於Debian的軟體包管理工具,但是已經被一個巴西公司Conectiva移植到基於RPM的系統上。因此對於基於RPM軟體包管理的平台,如Red Hat、  TurboLinux、SuSe、Mandrake等Linux發行版本,APT是一個非常優秀的軟體管理工具。

  伺服器端APT安裝配置

  1. 運行APT之前需要確認伺服器上Apache 已經可以提供WWW服務,並且 /var 分分區至少還有 5G 的空間。

  2. 下載安裝APT套件,接著需要加入freshrpms.net的公共鑰匙GPG-KEY, 然後在/etc/apt下建立一個/gpg文件夾,將GPG-KEY保存在那裡,以便日後管理。
     # rpm --import http://ftp.freshrpms.net/pub/freshrpms/RPM-GPG-KEY

  3、修改配置文件/etc/apt/sources.list,這是APT伺服器上最重要的配置文件,記載了軟體倉庫伺服器的地址等信息,這裡只需要把需要升級的版本對應的路徑信息打開,其它版本的路徑信息則可以關閉。
     # Red Hat Linux 9.0
     rpm http://apt.freshrpms.net redhat/9/en/i386 os updates freshrpms
     rpm-src http://apt.freshrpms.net redhat/9/en/i386 os updates freshrpms

  4.使用APT前的準備   

  (1)安裝好APT軟體包以後,管理員需要做的第一個工作就是從默認伺服器下載軟體包資料庫運行:
     #apt-get update
     #apt-get upgrade
  (2)驗證本地系統的完整性和一致性,判斷本地系統的軟體包依賴性是否一致運行:
     # apt-get check
  如果希望定期升級系統,保證系統及時升級,彌補安全漏洞,只需要apt-get update、apt-get dist-upgrade或apt-get upgrade就可以了。
  (3)安裝圖形前端
  freshrpms.net站點提供了一個圖形界面的apt-rpm介面Synaptic,使用圖形界面的apt更加方便,可以直接利用apt安裝Synaptic:
     [root@Linux root]# apt-get install synaptic
  在幾行提示之後Synaptic就安裝好了,進入Xwindow,Synaptic會出現在「系統設置」菜單裡面。界面見圖2。





  5.主要命令

  APT主要有apt-cache、apt-cdrom、apt-config和apt-get四個命令,用戶使用最多的就是apt-get命令。APT常用命令功能見表1。

  6.建立放置相關source 的目錄:
     #mkdir -p /var/ftp/pub/redhathttp://Linux.chinaitlab.com/9/en/os/i386
     #mkdir -p /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os

  7.製作mirror Red Hat Linux 9 source。
  使用CD-ROM光碟複製所需的 .os 的 到RPM 文件目錄:
     mount /mnt/cdrom
     cp -rf /mnt/cdrom/* /var/ftp/pub/redhathttp://Linux.chinaitlab.com/9/en/os/i386
     umount /mnt/cdrom
  依照上面方法,複製第二片、第三片CD-ROM片內的rpm文件。

  8.mirror Red Hat Linux 9 updates
  cd /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os
     wget -r -nH --cut-dirs=6 ftp://ftp.redhat.com/pub/redhath ... dates/9/en/os/i386/

  9. 建立 apt 的目錄和相關鏈接
     mkdir -p /var/ftp/pub/redhat/apt/9/i386
     ln -s /var/ftp/pub/redhathttp://Linux.chinaitlab.com/9/en/os/i386/RedHat/RPMS /var/ftp/pub/redhat/apt/9/i386/RPMS.os
     ln -s /var/ftp/pub/redhathttp://Linux.chinaitlab.com/9/en/os/i386/SRPMS /var/ftp/pub/redhat/apt/9/i386/SRPMS.os
     ln-s /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/SRPMS /var/ftp/pub/redhat/apt/9/i386/SRPMS.updates

  將 Red Hat Linux 9的RPMS、SRPMS目錄和updates的SRPMS目錄建立軟鏈接到/var/ftp/pub/redhat/apt目錄下,命名RPMS.os、SRPMS.os、SRPMS.updates。

  10. 建立 RPMS.updates 目錄和產生 rpm相關軟鏈接
     mkdir /var/ftp/pub/redhat/apt/9/i386/RPMS.updates
     cd /var/ftp/pub/redhat/apt/9/i386/RPMS.updates
     find /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/ -type f ! -name "*.src.rpm" -name "*.rpm" -exec ln -sf {} ;

  有些軟體安裝的時候若用的是 i386(或i686),升級的時候也必須要用相同結構的軟體包才可以,否則會出現錯誤,而最常出現錯誤的地方就是升級glibc的時候,所以上面的script就是為了避免發生這樣的錯誤而寫,它會將不同架構的updates rpm全部連結到同一個目錄,這樣apt才有辦法取得適合計算機架構的updates rpm來升級。

  11. 使用 genbasedir 指令產生 base 目錄和文件索引清單。
     genbasedir --flat --bloat --bz2only /var/ftp/pub/redhat/apt/9/i386 os updates
  以上指令列會在 /var/ftp/pub/redhat/apt/9/i386 目錄下建立 base子目錄,然後產生相關的文件索引清單 bz2 壓縮文件和 release文件。

  12. 建立鏈接關係
     ln -s /var/ftp/pub/redhat /var/www/html/redhat
  只有將ftp和html內的文件建立軟鏈接,才可以用http的方式使用apt伺服器。

  13. 定期 mirror updates rpm
  到此為止Apt伺服器已經安裝結束。互聯網上的update套件是隨時在更新的,所以我們的APT伺服器上的RPMS.updates目錄也應該要隨時更新。這個時候,我們可以利用映射 (mirror) 的方式來進行更新:
     rpm -ivh http://mirrordir.sourceforge.net/mirrordir-0.10.49-1.i386.rpm
     mirrordir v /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/ f   tp://ftp.redhat.com/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/i386/
     vi /etc/cron.daily/mirrorupdates
     #! /bin/sh
     mirrordir ftp://ftp.redhat.com/pub/redhath ... dates/9/en/os/i386/
     /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/
     rm -rf /var/ftp/pub/redhat/apt/9/i386/RPMS.updates/*
     cd /var/ftp/pub/redhat/apt/9/i386/RPMS.updates
     find /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/ -type f ! -name "*.src.rpm" -name "*.rpm" -exec ln -sf {} ;
     genbasedir --flat --bloat --bz2only /var/ftp/pub/redhat/apt/9/i386 os updates
  賦予許可權:
     #chmod 755 /etc/cron.daily/mirrorupdates
  啟動crond
     #chkconfig --level 345 crond on
  這樣APT伺服器就會每天定時去 mirror updates rpm 和產生 rpm 索引清單了。APT伺服器目錄結構見圖3。





  客戶端Linux計算機設定

  1. 首先也要安裝APT套件。如果本地系統一致性被嚴重破壞,則可以使用apt-get-f install命令在使用APT以前手工修復被破壞的依賴性。

  2. 重要的是修改 sources.list,vi /etc/apt/sources.list添加一下內容:
     rpm http://server_ip/redhat/apt/9 i386 os updates
     rpm-src http://server_ip/redhat/apt/9 i386 os updates
  說明:其中server_ip 是APT伺服器的IP地址如:192.168.1.9。
  os代表Red Hat Linux 9的原始 rpm
  updates代表Red Hat所出的更新(updates)rpm

  3.客戶端定時更新:
  首先建立定時器設置文件,文件名稱mytype(名稱自己設定):
     #crontab -e
  文件內容:
     15 09 * * * apt-get update;apt-get -y dist-upgrade ;apt-get clean
  用vi或其他編輯器存檔退出。
  (3)使用crontab命令添加到任務列表中:
     #crontab -u user1 mytype

  這樣Linux客戶端在每天的9點15分會自動進行升級。注意每台Linux客戶端的升級最好相隔10分鐘。避免造成阻塞網路帶寬。

  上面所使用的APT伺服器,是用 HTTP的方式在服務,若想要改成FTP 的方式也是可以的,不過必須要先將匿名(anonymous)FTP架設好。使用FTP的方式,可以限制同時登入的人數,作較嚴格的控管,不過FTP方式登錄過程(即使是匿名登入),速度比HTTP方式慢。

  以上介紹的APT伺服器就像 Microsoft 的補丁機一樣,它可以自動對網路中的Linux主機打補丁,無論是伺服器端還是客戶機都可以自動完成操作。而且 APT 不需註冊,完全免費,更可以安裝非 RedHat 提供的軟體。所以APT能夠在發現軟體包依賴性的同時,自動下載相應的軟體包並加以安裝,使得管理員能毫無故障地執行系統軟體的升級。APT使得零停機時間升級成為現實。

  使用Connectiva進行改裝后的Debian的APT軟體包管理工具,它可以對RedHat的RPM格式進行管理。運行一個APT軟體庫(http://apt-rpm.tuxfamily.org/)並不是一件非常困難的事情,它可以為持續的安全升級提供一個非常好的機制。可以定時更新系統軟體,彌補網路和系統的安全漏洞。所以Linux網管員要經常的關注相關網站的bug fix和升級,及時升級或添加補丁。

[火星人 ] 打造Linux網路自動補丁機(圖)已經有730次圍觀

http://coctec.com/docs/linux/show-post-204589.html