rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。
rsync 包括如下的一些特性:
安装Rsync和xinetd包
$ apt-get -y install xinetd rsync
确保xinetd运行在levels 3或4或5。
$ chkconfig --level 345 xinetd on
--level <等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
修改rsync xinetd配置文件
$ vim /etc/xinetd.d/rsync
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon --config=/etc/rsyncd.conf log_on_failure += USERID }
创建rsync共享配置文件
$ vim /etc/rsyncd.conf
secrets file = /etc/rsyncd.secrets #密码文件位置,认证文件设置,设置用户名和密码 read only = no #yes只读 值为NO意思为可读可写模式,数据恢复用NO list = yes uid = nobody #以什么身份运行rsync gid = nobody [out] #模块名 path = /var/www #rsync同步的路径 hosts allow = 192.168.74.130 #允许访问的IP auth users = test #/etc/rsyncd.secrets中的用户名 UID = 0 #设置后以uid = nobody 运行不会报错 GID = 0
创建rsync的密码文件,格式 username:password
$ vim /etc/rsyncd.secrets
修改权限与所有权,重启xinetd服务:
$ chown root.root /etc/rsyncd.* $ chmod 600 /etc/rsyncd.* $ service xinetd restart
然后就可以通过如下命令访问了:
下载文件: rsync -vzrtopg --progress --delete [email protected]::www /var/www/
本地同步远程时候,本地同步后的路径和远程一样,也就是说远程/var/www,本地获取远程的内容也会保存在本地的/var/www/目录下
上传文件: rsync -vzrtopg --progress /var/www/add.txt [email protected]::www
参数说明
-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。 --progress是指显示出详细的进度情况 --delete参数会把原有getfile目录下的文件删除以保持客户端和服务器端文件系统完全一致 [email protected]中的test是指定密码文件中的用户名,192.168.74.129为服务器ip地址 www是指在rsyncd.conf里定义的模块名 /var/www 是指本地要备份目录
默认是匿名访问,也就是说不需要账户密码就可以登录。那么就可以下载配置路径下的任意的文件了,还可以上传人已文件,本例中为web配置的路径/var/www,我们上传webshell后网站只要上线,我们便能成功getshell。
乌云案例
http://www.wooyun.org/bugs/wooyun-2010-091383
http://www.wooyun.org/bugs/wooyun-2013-039025
http://www.wooyun.org/bugs/wooyun-2010-085829
配置用户密码,杜绝匿名访问,也要注意弱口令
配置host allow = 192.168.74.130 只允许配置的ip访问
rsync默认端口是873,设置iptables,添加一条规则,只允许内部网络访问873端口
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT