您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源配置管理工具 > cvs
架設(shè)安全的CVS服務(wù)器
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/12/24 14:17:57 ] 推薦標(biāo)簽:

本文以一家中小型的軟件開(kāi)發(fā)公司為例,來(lái)介紹如何在Internet上架設(shè)一個(gè)安全的CVS服務(wù)器,以供分布在各地的員工通過(guò)Internet來(lái)訪(fǎng)問(wèn)它。

架設(shè)安全的CVS服務(wù)器

日期:2004-08-01   來(lái)源:天極操作系統(tǒng)專(zhuān)區(qū)   作者:Terry Yu

   CVS是一個(gè)的版本控制工具,無(wú)論是對(duì)個(gè)別程序員還是一個(gè)開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō),CVS都是非常有用的版本控制工具,而且它是免費(fèi)的。CVS的功能也很強(qiáng) 大,總體上它是一個(gè)C/S結(jié)構(gòu)的軟件,使用者首先要架設(shè)一個(gè)CVS服務(wù)器,在CVS服務(wù)器上導(dǎo)入項(xiàng)目實(shí)例、設(shè)置CVS項(xiàng)目訪(fǎng)問(wèn)控制等。而客戶(hù)通過(guò)客戶(hù)端來(lái) 訪(fǎng)問(wèn)CVS服務(wù)器,客戶(hù)可以取得項(xiàng)目新代碼副本、提交自己修改的代碼等,而客戶(hù)可以從Internet、LAN、甚至本機(jī)來(lái)訪(fǎng)問(wèn)CVS服務(wù)器。

   事實(shí)上,許多從事軟件開(kāi)發(fā)的個(gè)人或且組織都在使用這個(gè)免費(fèi)的軟件來(lái)幫助進(jìn)行軟件開(kāi)發(fā)。但用戶(hù)一方面在使用CVS的諸多功能進(jìn)行版本控制的時(shí)候,卻忽視了 安全方面的設(shè)定,于是問(wèn)題也因此而產(chǎn)生了。我們都知道軟件作一種特殊的產(chǎn)品,它是有價(jià)值的。對(duì)于一個(gè)軟件公司來(lái)說(shuō),軟件的源代碼是企業(yè)寶貴的資源,如 果泄漏出去,可能會(huì)給企業(yè)帶到重大的損失,甚至?xí)绊懙狡髽I(yè)的生存。許多公司為了讓在家或是出差在外的同事也可以進(jìn)行工作,通常會(huì)把CVS服務(wù)器放在 Internet上,而放在Internet上的CVS服務(wù)器是一個(gè)可以泄漏源代碼的重要途徑,所以也更要認(rèn)真考慮其安全性的問(wèn)題。

  本文以一家中小型的軟件開(kāi)發(fā)公司為例,來(lái)介紹如何在Internet上架設(shè)一個(gè)安全的CVS服務(wù)器,以供分布在各地的員工通過(guò)Internet來(lái)訪(fǎng)問(wèn)它。

  在這個(gè)假設(shè)的例子當(dāng)中,這家軟件公司采用10M的ADSL專(zhuān)線(xiàn)接入Internet,并擁有一組固定IP。為了達(dá)到較高級(jí)別的安全,公司逐級(jí)采用了以下的策略和方法:


  第一層保護(hù):在網(wǎng)關(guān)使用防火墻

  在接口網(wǎng)關(guān)處安裝了防火墻,并劃分了DMZ、內(nèi)網(wǎng)、外網(wǎng)三個(gè)區(qū)域。CVS服務(wù)器和公司其它的對(duì)外服務(wù)器都放置在DMZ區(qū)域中,防火墻對(duì)DMZ區(qū)域?qū)嵤┎煌瑑?nèi)網(wǎng)、外網(wǎng)的專(zhuān)門(mén)安全策略,對(duì)于CVS服務(wù)器也實(shí)施專(zhuān)門(mén)安全策略。

  第二層保護(hù):對(duì)安裝CVS服務(wù)的機(jī)器進(jìn)行操作系統(tǒng)加固

  公司使用的是Red Hat Linux,初安裝的Linux中缺乏嚴(yán)格的安全設(shè)定,需要進(jìn)行操作系統(tǒng)加固才能達(dá)到更高的安全。

  第三層保護(hù):利用CVS自身的安全特性

  這一部分,筆者將會(huì)在后文詳細(xì)講解CVS服務(wù)器的安裝配置等

  第四層保護(hù):人員培訓(xùn)和制度

   對(duì)于使用CVS的員工進(jìn)行CVS的使用培訓(xùn),介紹如何安全的從外部連入CVS服務(wù)器,以及如何保護(hù)個(gè)人的CVS賬號(hào)等信息。由于開(kāi)發(fā)人員可能從公司內(nèi)網(wǎng) 中來(lái)訪(fǎng)問(wèn)DMZ中的CVS服務(wù)器,也可能通過(guò)Internet從公司以外的地方來(lái)訪(fǎng)問(wèn)DMZ中的CVS服務(wù)器。所要要針對(duì)這兩種情況制定相應(yīng)的CVS訪(fǎng)問(wèn) 制度,同時(shí)要求員工保護(hù)好自己的用戶(hù)名和密碼。

  在以上四層保護(hù)中,本文重點(diǎn)要介紹的是第三層保護(hù)。

  首先是CVS基本的安裝:

  1.下載源碼

   通過(guò)摸索引擎可以找到CVS的源代碼包,也可從CVS的官方網(wǎng)站cvshome.org上開(kāi)始尋找,由于CVS歷史上也出現(xiàn)過(guò)一些安全漏洞,所以建議要 定期去其官方網(wǎng)站看看有沒(méi)有新版本推出。目前新的是2003年12月18日推出的1.12.5版本,大家嘗試從以下鏈接下載:

  http://ccvs.cvshome.org/servlets/ProjectDownloadList?action=download&dlID=351

  2. 編譯安裝

  [root@terry src]# tar -xjpvf cvs-1.12.5.tar.bz2
  [root@terry src]# cd cvs-1.12.5
  [root@terry cvs-1.12.5]# ./configure --prefix=/usr/local/terry_yu/cvs
  --disable-server-flow-control
  [root@terry cvs-1.12.5]# make
  [root@terry cvs-1.12.5]# make install

  以上指令將CVS安裝到/usr/local/terry_yu/cvs這個(gè)目錄上。

  注:除了使用源碼包進(jìn)行安裝之外,還可以使用RPM包來(lái)安裝。

  3. 設(shè)置啟動(dòng)CVS服務(wù)

  在Linux上CVS服務(wù)可以通過(guò)inetd、xinetd或tcpwrapper等來(lái)啟動(dòng),其中inetd由于安全理由在許多場(chǎng)合已經(jīng)被xinetd所取代了。這里我們使用xinetd來(lái)啟動(dòng)CVS服務(wù)。

  在/etc/xinetd.d目錄下為CVS服務(wù)創(chuàng)建一個(gè)配置文件,比如:/etc/xinetd.d/cvspserver,編輯/etc/xinetd.d/cvspserver,輸入如下內(nèi)容:

  service cvspserver
  {
  disable = no
  socket_type = stream
  wait = no
  user = root
  env = HOME=
  server = /usr/bin/cvs
  server_args = -f --allow-root=/home/cvsroot pserver
  }

  注:

  1)pserver表示是口令認(rèn)證的訪(fǎng)問(wèn)方式,這是常用的方式,其他還有g(shù)server,kserver,ext,如果想要更高的安全性可以使用ssh來(lái)加密口令和數(shù)據(jù)流,不過(guò)這里為了用戶(hù)使用的方便,仍然選的是pserver
  2)--allow-root是指定Repository的目錄,可以建立多個(gè)Repository

  然后重新啟動(dòng)xinetd:

  [root@terry bin]# /etc/rc.d/init.d/xinetd restart
  Stopping xinetd:  [  OK  ]
  Starting xinetd:  [  OK  ]

  重新啟動(dòng)xinetd服務(wù)后,CVS服務(wù)也開(kāi)始工作了:

4.在CVS服務(wù)器端建立Repository

  首先要?jiǎng)?chuàng)建一個(gè)名為cvs的組和一個(gè)名為cvsroot的用戶(hù),以后要訪(fǎng)問(wèn)CVS服務(wù)的用戶(hù)加入cvs這個(gè)組:

  [root@terry root]# groupadd cvs
  [root@terry root]# useradd -g cvs -s /sbin/nologin cvsroot
  [root@terry root]# chown -R cvsroot /home/cvsroot

  接下來(lái)進(jìn)行初始化:

  [root@terry root]# cvs -d /home/cvsroot init

  這樣在/home/cvsroot目錄中產(chǎn)生了CVSROOT目錄,其中存放了一些配置文件,如config等,然后設(shè)置權(quán)限:

  [root@terry root]# chown -R cvsroot.cvs /home/cvsroot
  [root@terry root]# chmod -R ug+rwx /home/cvsroot
  [root@terry root]# chmod 644 /home/cvsroot/CVSROOT/config

   為了CVS系統(tǒng)的安全,我們要修改/home/cvsroot/CVSROOT/config文件,將"#SystemAuth =no"的前而的注釋號(hào)#去掉,即改為“SystemAuth =no”,然后給開(kāi)發(fā)者們逐一建立賬號(hào),新建的不要分配用戶(hù)目錄,因?yàn)樗鼘⒆鳛橐粋(gè)虛擬用戶(hù)帳號(hào)來(lái)使用,具體命令如:

  [root@terry root]# useradd -g cvs -M bogus
  [root@terry root]# passwd bogus

  上面的命令創(chuàng)建了一個(gè)并沒(méi)有Home目錄的用戶(hù)bogus,接著將系統(tǒng)的shadow文件復(fù)制到CVSROOT, 并重命名為passwd:

  [root@terry root]# cp /etc/shadow /home/cvsroot/CVSROOT/passwd
  [root@terry root]# chmod 0644 /home/cvsroot/CVSROOT/passwd

  然后修改passwd文件,將除剛才設(shè)定的可使用CVS的用戶(hù)bogus之外的所有行刪除,然后去掉每行第二個(gè)冒號(hào)以后的所有內(nèi)容,并添上字符串cvsroot, 改為如下格式:

  bogus:ND5$J8N9BW5DKV.nPdxfdsh:cvsroot

  然后,刪除掉剛剛在系統(tǒng)中添加的那個(gè)用戶(hù)bogus:

  [root@terry root]# userdel -f bogus

   好了,做到這里,CVS的服務(wù)器端已經(jīng)安裝設(shè)置好了,這樣你的CVS用戶(hù)只能用passwd中規(guī)定的用戶(hù)來(lái)登陸你的CVS服務(wù)器了,要注意的是:本 文介紹的添加用戶(hù)的方法適用于小數(shù)量的用戶(hù),如果是有大規(guī)模的開(kāi)發(fā)人員,推薦采用連接LDAP或者數(shù)據(jù)庫(kù)來(lái)進(jìn)行用戶(hù)的認(rèn)證服務(wù)。通過(guò)這四層保護(hù),相信可以 使用你放心的使用CVS服務(wù)了,不過(guò)本文只是作了簡(jiǎn)單的介紹,希望可以給大家起參考的作用。另外,想要得到CVS的新信息,可以訪(fǎng)問(wèn)CVS的主頁(yè): http://www.cvshome.org/,還有Pascal Molli的CVS網(wǎng)站:http://www.loria.fr/~molli/cvs-index.html

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd