Loading...

当前位置:资讯中心主页 >网管技术其他 >文章内容

  • 怎么设置和使用SSH验证的CVS服务器
  • 来源:作者: 发布时间:2006-09-21 08:00:00
    • 域名注册

    • 域名惊喜价格 cn域名1元注册
    • com域名39.9

      虚拟主机

    • 主机按月支付,低至19元/月
    • 超大流量,可开子站点

      VPS主机

    • 特惠VPS168元/月,4-8M独享带宽保证
    • 独立操作系统,无限开站点
      CVS服务器的前期设置
      怎么创建cvs repository
      
      怎么设置cvs的commit mail和ACL
      
      怎么设置ssh验证,并限制用户权限
      
      怎么设置cvsweb(web访问)
      下面一步一步地介绍。首先是前期的准备,我们首先需要设置一台Unix的机器,为了简单起见,这里只介绍FreeBSD上的设置方法,其他的*nix系统的设置方法类似,在此不再赘述。
      
      0、前期设置
      首先是安装FreeBSD并应用安全补丁。这一步非常简单,下载一张FreeBSD(即将推出的5.2-RELEASE是个不错的选择,在这篇文章发表时,这个版本可能已能够下载了)的mini iso烧成CD-ROM,然后安装就能了(选择“Minimum”安装)。注意,为了能够使用ssh验证,请务必安装crypto。为这台机器设置网络,等等之后,重新启动就好了。
      
      然后是安装一些必要的package。FreeBSD 4.x内建了perl,而在5.x中,perl被从基本系统中删去了。为了能够更好地使用包括ACL、commit mail在内的一系列功能,必须安装perl。
      我个人推荐使用ports中的5.8.x版本的perl。在安装之前,首先确信系统中没有perl 5.6.x的安装,对于新系统,大能放心地执行下面的命令:
      
      pkg_delete -a
      这将删除已存在的所有package。一般来说,绝大多数FreeBSD用户都使用cvsup来更新系统,然而在发行的光盘中,cvsup-without-gui并没有包含在内,而普通的cvsup package则需要X11的一系列库。为了避免麻烦,能考虑下面两种不同的途径来完成第一次的代码更新工作:
      
      1、使用FreeBSD中的cvs来同步代码:
      cvs -d :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs login
      输入“anoncvs”,回车
      cd /usr
      cvs -R -d :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs export -r RELENG_5_2 src ports
      注意:如果你使用的不是5.2-RELEASE,请适当地修改RELENG_5_2(例如,4-STABLE是RELENG_4,-CURRENT是HEAD,等等)
      
      2、安装cvsup-without-gui:
      pkg_add -r cvsup-without-gui
      然后用cvsup来同步代码,限于篇幅,这里不再赘述
      我个人推荐使用第一种方法,当然,第二种方法应该会更快一些,而且不必手工编译cvsup。随后,安装Perl 5.8.x:
      
      cd /usr/ports/lang/perl5.8 && make all install clean && rehash
      紧接着我们会遇见一个非常严重的问题:ports里面的use.perl脚本并不知道系统中原本没有安装perl,因此在执行的时候会出错??这时,只需要为perl做一个符号连接就能了。做好之后,执行:
      
      use.perl port
      这样use.perl脚本会帮助你完成修改设置文件(如/etc/make.conf)等一系列工作。此处不表,稍微设置一下OpenSSH(sshd)的设置,一般来说,增加下面两行:
      
      Protocol 2
      PasswordAuthentication no
      这么做的好处:(1)只允许ssh2协议登录,这能够提供更好的安全性(2)不允许使用口令登录,这毫无疑问地将提高安全性。
      
      1、创建cvs repository
      好了,前期设置基本上就结束了。不要忘了创建一个用于cvs用户的组,例如,ncvs,及一个用于管理cvs repository的用户,如repoman(他当然要属于ncvs那个组),然后,创建一个目录来保存cvs repository,本例中,我们把他放到/home/ncvs中:
      
      rm -rf /home/ncvs
      mkdir -p /home/ncvs
      chown -R repoman:ncvs /home/ncvs
      chmod -R 775 /home/ncvs
      接下来就是初始化这个repository了,简单地执行:
      
      su -l repoman
      cvs -d /home/ncvs init
      就能了。
      
      目前,所有的FreeBSD版本中包含的cvs都存在一个微小的安全漏洞,尽管这个漏洞只能在本地利用,但建议你把他补上方法是找到 /usr/src/contrib/cvs/src/expand_path.c 中的
      
      return current_parsed_root->original;
      一行,把他改为
      
      return current_parsed_root->directory;
      当然,接下来就是重新make world kernel了。需要说明的是,如果你使用的是5-CURRENT,还需要修改一些代码才能让他达到5.2-RELEASE那样的性能(-CURRENT中打开了大量的调试选项),具体方法这里不再赘述。
      
      2、设置commitmail和ACL
      接着设置cvs commitmail和ACL。我个人认为commitmail是团队软件研发中非常重要的一件东西,对于cvs来说,这一点尤为重要,因为cvs没有原子提交功能,而commitmail恰好弥补了这个不足。
      
      FreeBSD的研发团队使用了一套非常好的perl脚本来完成commitmail的功能,同时,他们还使用cvs的hook实现了简单的访问控制功能(ACL)。我本人使用的cvs repository基于FreeBSD的CVSROOT,并且作了少量的修改,你能从 http://resources.delphij.net/projects/CVSROOT.tbz 下载。
      
      使用这个CVSROOT覆盖你的CVSROOT,并且,你还需要把其中freebsd目录下的mailsend.c编译并将结果放到/usr/local/bin中(这个CVSROOT中的脚本假定这件事)。另外,这个CVSROOT需要一些修改才能正式投入使用(例如,机器名,等等)。这些设置能在cfg_local.pm里面找到:
      
      $MAILADDRS = ’cvs-all@example.org’;
      这个是commitmail将要发送到的地方。
      
      $MAIL_BRANCH_HDR = "X-Phantasm-CVS-Branch";
      这个是将要添加到commitmail头部的信息,如果你使用邮件列表的话,他能够帮助邮件列表自动分拣。
      
      $MAILBANNER = "The Phantasm Studio repository";
      这一行将出目前commitmail中,表示commit到了哪一个repository。
      
      if ($hostname =~ /^cvs\.example\.org$/i)
      这个是判断commit的主机名的
      
      $CVSWEB_URL = "http://cvsweb.example.org/cgi-bin/cvsweb.cgi";
      这个是cvsweb服务的网址
      
      简单介绍一下CVSROOT中的其他文件
      avail: 这个文件用于控制用户组的访问权限。
      access: 这个文件用于控制谁能够执行cvs操作。
      exclude: 这个文件用于控制那些文件不必检查cvs tag
      options: 这个文件用于控制cvs tag的展开,例如,能定义$Phantasm$,等等
      
      3、设置用户和限制ssh权限
      使用ssh验证的一个比较让人头疼的问题就是,ssh意味着用户拥有一个系统账号,并且,他们能够登录进来。如果设置不当,他们还能得到一个shell,这非常自然地会成为潜在的安全隐患。
      
      因此,必须非常小心地处理cvs的ssh验证问题。基本的原则是:禁止用户作所有操作,除非我们允许他们这么做。
      
      按照下面的规则创建用户:
      
      用户的“主”组是ncvs(这不仅限制用户的权限,也让我们能够更容易地控制其他用户不能在cvs repository里面随意commit)
      
      用户不使用口令验证,这将缓解由于不正确地设置ftp等造成的安全隐患
      
      仍然给用户一个shell,这个“shell”能是个perl脚本,他只允许执行cvs 开头的命令
      
      随后,让用户使用openssh的ssh-keygen生成自己的密钥对。OpenSSH在绝大多数*BSD和Linux发行版中都能找到,如果用户使用的是视窗系统桌面,则需要安装cygwin(特别地,安装net中的OpenSSH),当然,执行的命令是相同的:
      
      ssh-keygen -t dsa -b 2048
      对于偏执狂型安全爱好者,能考虑将-b后面的2048换成4096。当然,根据木桶原理,如果你真是个偏执狂的话,显然也应该强迫你的所有合作者也都使用至少和你相同长的密钥:)
      
      之后,管理员应该把用户(committer)的key放到服务器上用户对应的目录中的authorized_keys里面。例如,我的一个public key如下:
      ssh-dss AAAAB3NzaC1kc3MAAAEBAL+1jinOw+86RcTEaSM5/Hz4Lr9tIS0IQsX8ebo
      TwLzWnqpOHRh2KBCGn/e0xGCIAai7PGz7c+SZCvrLiRvG9mCsMMMue8ZIL+QF4OAmMd
      Cz8Qoyg0cc4YXImOd+UEpdOX29PC4aMAz28v/GO2yf58/Qa49Clfq1kHa/8q3IAgs9o
      W95/ArG+IWFOsN1Tv9nh4XJb5AQjpa5uMlB5SEmvKGTXQ2oYiRVIxL8vzHL6MtO/8x1
      j8+RioSH6FCpEXS7UJbYxE7vF3m5Fa5o6g2dIZewphsleOeHkvYJ442Hqvsly3p4+4N
      dvim4bY2HMDha5r5zeTV8tTlOz4wQVgKyWoEAAAAVAINGzX7uU0vR8l63qhBhUeWGZt
      C9AAABADWiO+9bvV7DApsn08LR1eoEnMjJFQgEfGlbV+EvZHkO0bkHZAdRIKtVmgNUw
      G6uufykkt2Tb+q5SbVNZkzeaFVv4ZMtnjSvEPIZrEXcQFFguGk1it5v5EYcmq4G8+j1
      BFTVHef4b1wMTSt11WtEz0LUYncuZ6LA48/WGTuZiSm8JkchgVm8HhR9NqjdeFJH8sO
      RUhUBoxyWjo/hv7zFg7HqoJGzeNfrEhFg36psR2RDaRvSP0vN1W2q4j5OZy3gB6ZyVt
      nsEPl1HELhlaCFifmdz1LVxDx+FyPy6wMsPQLTmB1g6N1J6PWy3qCTJ0NyQgarSt3/A
      TQ0InF1BOdJn8QAAAEAPb1OgswuMHdEsHk2ETZVmOKOkI9Rjf72vjZ3xG45iEbCH/7p
      aTP8OQmJMW9FD4MHjdmtktPVYXDIa9Hj/IM44zhfMHEdKs9LlFUK5dBgNUps+yPj2Ns
      Mr2rl771ODR0mB52FwrXm1FCmNTM7WQpFOEy/QhtZRpHK+7/YZp7PBggt17Fw7rbjP2
      zhWnZluoSKLgvfkhxhJuOMm/ElNJx2c+XHdxPqI3eR5UxzLNjDUNh59I8+h+E69bFB3
      b2uhKqziziHOQcqoH5r0Kud/DBBE79lU3mRUF8FQNygCRh/V3yFzed40rc0nF0PQpNZ
      6zodDTJByrm6vX5wr2lI4RgA9w== bitripper@grimreaper.delphij.net
      
      说明:public key是不允许折行,这里是为了排版方便。我们刚才给用户开了shell,这仍然是潜在的隐患,于是我们收紧这方面的安全性,在public key项目前加入下面的文字:
      
      command="/usr/bin/cvs --allow-root=/home/ncvs server"
      于是,整个行看起

  • 以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。

      “华夏名网” http://www.sudu.cn 和 http://www.bigwww.com 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构webhosting.info评价为25大IDC服务商之一。

    华夏名网网址导航: 虚拟主机 双线主机 主机 域名注册 cn域名 域名 服务器租用 酷睿服务器 vps vps主机

  • (阅读次数:279)
  • 上一篇: 配置三层交换的综合事例(一)    下一篇: 宽带接入网的管理现状及发展策略
  • [收藏] [推荐] [评论] [打印本页] [返回上一页][关闭窗口]
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。