当前位置:首页 >> 服务器

rsync指定ssh端口进行文件同步的方法

有台服务器因为安全性需要,修改了默认的ssh端口为34778端口。
因此rsync使用ssh同步的时候需要指定ssh的端口

rsync提供了一个-e参数

-e参数的作用是可以使用户自由选择想使用的shell程序来连接远端服务器,因此也可以设置成使用默认的ssh来连接,这样我们就可以加入ssh的参数了

具体语句写法如下:

rsync -e 'ssh -p 34778' username@hostname:SourceFile DestFile

单引号,目的是为了使引号内的参数为引号内的命令所用

实例:

rsync -auz -e 'ssh -p 43378' /data/svn/ root@192.168.1.254:/data/backup

详解:
通过rsync,并使用auz参数,结合-e修改ssh的端口,将本地的/data/svn作为源数据,用root用户推到远端服务器192.168.1.254的/data/backup目录下。

需要注意的是源目录和目标目录是否带"/"结尾是有很大区别的
源目录带"/"结尾而目标目录不带,表示将源目录里面的所有文件(/data/svn/*)都同步到目标目录下(/data/backup/*)。
源目录带"/"结尾而目标目录也带“/”结尾,则表示将源目录作为文件夹,同步到目标目录下(/data/backup/svn/*)。

端口攻击之873端口rsync默认口令漏洞

1、简介:

rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输。

2、Rsync使用教程:

用途:

当成镜像备份功能。

优点:

速度快,可对比本地文件,差异备份。

用法:

1、将/etc/内复制到/tmp/etc

rsync –av /etc /tmp
2、将rsh.server的/etc 复制到本地 /tmp

rsync –av –e ssh user@rsh.server:/etc /tmp
3、通过rsync提供的服务(daemon),rsync使用873端口

Server:启动rsync,看:

/etc/xinetd.d/rsync
编辑:

/etc/rsyncd.conf
设置client端连接账号密码

Client:rsync –av –user@hostname::/dir/path /local/path
三种模式差异在几个分号 :

命令:

Rsync [-avrlptgoD] [-e ssh] [user@hostIP:/dir] [/local/path]

-v 观察模式,输出更多资讯

-q 与 –v 相反,仅显示错误信息

-r 递归复制,针对目录

-u 仅更新较新的文件

-l 复制连接的属性

-p 复制时保持属性不变

-g 保存原有群组

-o 保存原有拥有人

-D 保存原有装置属性

-t 保存原有时间属性

-I 忽略更新时间属性,档案比对较快

-z 加上压缩参数

-e 使用协议通道,例如ssh,-e ssh

-a 相对于-rlptgoD,所以-a最常用
3、安全问题:

rsync默认的端口是873,可以使用nmap扫描IP是否开放该端口。

nmap -n --open -p 873 x.x.x.x/24
找到开放端口后,查看时候可默认口令登陆。使用命令查看:

rsync -av x.x.x.x::

既然是同步文件,自然有选择查看、上传或者下载的能力,这要视权限设定。

运气好的情况下秒杀站点。

4、安全配置注意事项

注意两种方式防御,一是限定访问的IP,另一个是不允许匿名访问,添加用户口令。

限定IP的两种方式

IPTables防火墙

给rsync的端口添加一个iptables。

只希望能够从内部网络(192.168.101.0/24)访问:

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
除此之外rsyncd.conf中的hosts allow也可以设置只允许来源ip。

hosts allow = X.X.X.X #允许访问的IP
添加用户口令

添加rsync用户权限访问,注意配置的是rsyncd.conf中的:

secrets file = /etc/rsyncd.secrets #密码文件位置,认证文件设置,设置用户名和密码

auth users = rsync #授权帐号,认证的用户名,如果没有这行则表明是匿名,多个用户用,分隔。