SVN安装配置及安全注意事项

以下内容为转载

0×00 SVN介绍

Subversion,简称SVN,是一个开放源代码的版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。

这些网站都提供了非常详细、多样的说明文档,有时间大家可以逐一细查。

Subversion使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库,另一端是Subversion的客户端程序,管理着受控数据的一部分在本地的映射(称为“工作副本”)。在这两端之间,是通过各种仓库存取层(Repository Access,简称RA)的多条通道进行访问的。这些通道中,可以通过不同的网络协议,例如HTTP、SSH等,或本地文件的方式来对仓库进行操作。
0×01 安装配置

安装SVN

 代码如下 复制代码

#yum install subversion

测试是否安装成功

 代码如下 复制代码

#svnserve --version

如果显示了版本信息则表示安装成功

创建仓库

 代码如下 复制代码

#svnadmin create /home/svn/repo

给svn设置密码

修改配置文件/home/svn/repo/conf/svnserve.conf
去掉

 代码如下 复制代码

#[general]

前面的#号

匿名访问的权限,可以是read,write,none,默认为read

 代码如下 复制代码

anon-access = none

认证用户的权限,可以是read,write,none,默认为write

 代码如下 复制代码

auth-access = write

密码数据库的路径

 代码如下 复制代码

#password-db = passwd

去掉前面的#

修改配置文件passwd

 代码如下 复制代码

#vim /home/svn/repo/conf/passwd

=前面是用户名,后面是密码:

 代码如下 复制代码

[users]
name = password

启动SVN服务器

对于单个代码仓库

 代码如下 复制代码

#svnserve -d -r /home/svn --listen-host 192.168.1.100

svn默认端口是3690,在防火墙上开放这个端口。

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT
/sbin/service iptables save

把/var/www/html/目录导入到svn的repo目录下

 代码如下 复制代码

svn import /var/www/html/  file:///home/svn/repo  -m "test"

0×02 注意的问题

1、检出(导出结果带.svn文件夹的目录树)

svn  co  http://路径 [本地目录全路径]  --username 用户名 --password 密码
svn  co  svn://路径 [本地目录全路径]  --username 用户名 --password 密码
svn  checkout  http://路径 [本地目录全路径] --username 用户名
svn  checkout  svn://路径 [本地目录全路径]  --username 用户名

如果不带–password 参数传输密码的话,会提示输入密码,建议不要用明文的–password 选项。
其中 username 与 password前是两个短线,不是一个。
不指定本地目录全路径,则检出到当前目录下。

2、导出(导出一个干净的不带.svn文件夹的目录树)

svn  export  [-r 版本号]  http://路径 [本地目录全路径] --username 用户名
svn  export  [-r 版本号]  svn://路径 [本地目录全路径] --username 用户名
svn  export  本地检出的(即带有.svn文件夹的)目录全路径  要导出的本地目录全路径

第一种从版本库导出干净工作目录树的形式是指定URL。
如果指定了修订版本号,会导出相应的版本。
如果没有指定修订版本,则会导出最新的,导出到指定位置。
如果省略 本地目录全路径,URL的最后一部分会作为本地目录的名字。
第二种形式是指定 本地检出的目录全路径 到 要导出的本地目录全路径,所有的本地修改将会保留。
但是不在版本控制下(即没提交的新文件,因为.svn文件夹里没有与之相关的信息记录)的文件不会拷贝。

现实的开发环境中,强烈建议使用导出功能svn export而不是svn co。

由此可能导致非常严重的问题,很多管理员直接吧svn co出来的代码直接放到web目录下。

这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的“entries”文件,逐步摸清站点结构。

svn及entries文件夹暴露于外网环境

更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。

源代码文件副本暴露于外网环境

如果解析了该后缀,可能会有文件解析的漏洞,可能会有扩展解析漏洞,找地方上传xxx.php.gif也许就可以直接得到webshell了。

如果已经线上的生产环境已经有了.svn目录不想删掉可以在服务器上设置禁制访问此目录:

另外svn更新至1.7+ .svn/entries目录就不包含文件目录列表了。

Apache:

 代码如下 复制代码

<Directory ~ "\.svn">
Order allow,deny
Deny from all
</Directory>

Nginx:

location ~ ^(.*)\/\.svn\/ {
return 404;
}

wooyun上也是已经有非常多的svn泄露网站信息的事件,有的甚至由此导致整个服务器沦陷:

好了文章就讲到了这里希望例子对各位同学会带来帮助哦。

时间: 2024-11-05 23:26:12

SVN安装配置及安全注意事项的相关文章

centos下svn安装配置2种方法详解

svn安装一 1.首先下载subversion安装包之后解压,进入subversion目录 wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz tar xfvz subversion-1.6.6.tar.gz tar xfvz subversion-deps-1.6.6

Linux下SVN安装配置全程实录(转)

  一.安装SVN默认安装到/usr/local/bin下面 二.创建仓库 svnadmin create /home/svnrepo /root/svnrepo为所创建仓库的路径,理论上可以是任何目录 三.修改配置文件/home/svnrepo/conf/svnserve.conf #去掉#[general]前面的#号 [general] #匿名访问的权限,可以是read,write,none,默认为read anon-access = none #认证用户的权限,可以是read,write,

SVN安装配置与使用

1.  所选服务器安装包:VisualSVN-Server-2.1.3.msi. 2.  客户端安装包:TortoiseSVN-1.6.2.16344-win32-svn-1.6.2.msi 一.服务器的安装:         注意:location :为安装文件位置,Repositories:为管理的代码仓库的位置,若选中Use secure connection前面的Checkbox,则表示安全连接[https],这里的端口有433/8433可用,若未选中Checkbox,默认端口80/81

[转]CentOS-6.3安装配置SVN

安装说明 系统环境:CentOS-6.3 安装方式:yum install (源码安装容易产生版本兼容的问题) 安装软件:系统自动下载SVN软件   检查已安装版本 #检查是否安装了低版本的SVN [root@localhost /]# rpm -qa subversion #卸载旧版本SVN [root@localhost modules]# yum remove subversion 安装SVN [root@localhost modules]# yum install httpd http

linux下安装配置svn独立服务器

subversion(以下简称svn)是近年来崛起的版本管理工具,是cvs的接班人. svn服务器有2种运行方式:独立服务器和借助apache.2种方式各有利弊. file:/// 直接版本库访问(本地磁盘). http:// 通过配置Subversion的Apache服务器的WebDAV协议. https:// 与http://相似,但是包括SSL加密. svn:// 通过svnserve服务自定义的协议. svn+ssh:// 与svn://相似,但通过SSH封装 svn存储版本数据也有2种

CentOS 6源码编译安装配置SVN服务器教程

说明: SVN(subversion)的运行方式有两种: 一种是基于Apache的http.https网页访问形式: 还有一种是基于svnserve的独立服务器模式. SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据:另一种是使用普通的文件FSFS存储数据. 由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全. 实现目的: 以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器. 具体操作: 操作系统

Linux下源码编译安装配置SVN服务器的步骤分享_Linux

说明: SVN(subversion)的运行方式有两种: 一种是基于Apache的http.https网页访问形式: 还有一种是基于svnserve的独立服务器模式. SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据:另一种是使用普通的文件FSFS存储数据. 由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全. 实现目的: 以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器. 具体操作: 操作系统

DUBBO安装配置注意事项

DUBBO安装配置注意事项 参考URL:http://blog.csdn.net/lichunan/article/details/40349645 ====== 管理端: 记得更改TOMCAT的端口号,不然会和监控器的8080冲突(如何部署在同一机器) dubbo.properties 文件 dubbo.registry.address=zookeeper://x.x.x.x:2181 dubbo.admin.root.password=用户 dubbo.admin.guest.passwor

linux下安装配置svn独立服务器的步骤分享_Linux

file:/// 直接版本库访问(本地磁盘). http:// 通过配置Subversion的Apache服务器的WebDAV协议. https:// 与http://相似,但是包括SSL加密. svn:// 通过svnserve服务自定义的协议. svn+ssh:// 与svn://相似,但通过SSH封装 svn存储版本数据也有2种方式:BDB和FSFS.因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点.1. svn服务器安装操作系统: Redhat Linux A