rsync指定ssh端口进行文件同步的方法
有台服务器因为安全性需要,修改了默认的ssh端口为34778端口。
因此rsync使用ssh同步的时候需要指定ssh的端口
rsync提供了一个-e参数
-e参数的作用是可以使用户自由选择想使用的shell程序来连接远端服务器,因此也可以设置成使用默认的ssh来连接,这样我们就可以加入ssh的参数了
具体语句写法如下:
rsync -e 'ssh -p 34778' username@hostname:SourceFile DestFile
单引号,目的是为了使引号内的参数为引号内的命令所用
实例:
服务端备份脚本:
#!/bin/bash
DBPATH=/mnt/backup/
LOG=$DBPATH'backup.log'
# mysql data stored dir
TODAY=`date +%F`
STOREDIR=$DBPATH$TODAY
mkdir $STOREDIR
echo "***Start backup PATH:$STOREDIR***" >> $LOG
# delete overtime backup files
rm -rf $DBPATH$(date +%F --date='5 days ago')
# backup data file
#/usr/bin/docker exec mariadb /usr/bin/mysqldump -u$USER_ROOT --password=$USER_PWD --databases diynet --lock-all-tables --flush-logs |gzip>$STOREDIR/backup.sql.gz
tar -czPf $STOREDIR/backup.tar.tgz /mnt/www/web
/usr/bin/docker exec mariadb /usr/bin/mysqldump -uroot --password=123456 --databases webtable --lock-all-tables --flush-logs |gzip>$STOREDIR/web.sql.gz
客户端:
rsync -auz -e 'ssh -p 43378' /data/svn/ root@192.168.1.254:/data/backup
rsync -avzr --delete --progress -e 'ssh -p 43378' root@192.168.1.254:/mnt/backup /mnt/sda1/backup
详解:
通过rsync,并使用auz参数,结合-e修改ssh的端口,将本地的/data/svn作为源数据,用root用户推到远端服务器192.168.1.254的/data/backup目录下。
需要注意的是源目录和目标目录是否带"/"结尾是有很大区别的
源目录带"/"结尾而目标目录不带,表示将源目录里面的所有文件(/data/svn/)都同步到目标目录下(/data/backup/)。
源目录带"/"结尾而目标目录也带"/"结尾,则表示将源目录作为文件夹,同步到目标目录下(/data/backup/svn/*)。
端口攻击之873端口rsync默认口令漏洞
-
简介:
rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输。 -
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最常用
-
安全问题:
rsync默认的端口是873,可以使用nmap扫描IP是否开放该端口。nmap -n --open -p 873 x.x.x.x/24
找到开放端口后,查看时候可默认口令登陆。使用命令查看:
rsync -av x.x.x.x::
既然是同步文件,自然有选择查看、上传或者下载的能力,这要视权限设定。
运气好的情况下秒杀站点。 -
安全配置注意事项
注意两种方式防御,一是限定访问的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 #授权帐号,认证的用户名,如果没有这行则表明是匿名,多个用户用,分隔。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。