关于linux:使用rsync-daemon跨主机安全同步

2次阅读

共计 2879 个字符,预计需要花费 8 分钟才能阅读完成。

文章原文:https://tlanyan.pp.ua/use-rsync-daemon-to-sync-files-between-servers/

始终应用 rsync 命令在主机间疾速同步文件,例如定时 备份 WordPress 文件和数据库 到其余主机。

之前对 rsync 理解不深,始终应用 shell 形式同步文件。为了防止连贯时输出明码,便在多个主机间散发公钥。明天意识到这种做法有重大的平安问题:如果某台主机被黑,黑客能轻易漫游所有主机!

于是再次钻研 rsync,发现能够应用 rsync daemon 跨主机平安同步。

本文链接:https://tlanyan.pp.ua/use-rsync-daemon-to-sync-files-between-servers/

应用 rsync daemon 跨主机平安同步

rsync 的三种工作模式

rsync 命令有三种用法,对应三种工作模式:

  • 本机同步,相似于 cp 命令:

    rsync [选项] SRC DEST;

  • shell近程同步,相似于 scp 命令:

    \# 近程主机文件同步到主机
    rsync [选项] USER@HOST:SRC DEST
    \# 本机文件同步到近程主机
    rsync [选项] SRC USER@HOST:DEST

  • daemon近程同步:

    \# 近程主机文件同步到本地,可应用:: 或用 rsync:// 指定 daemon 模式
    rsync [选项] USER@HOST::SRC DEST
    rsync [选项] rsync://USER@HOST/SRC DEST

    \# 本机文件同步到近程主机
    rsync [选项] SRC USER@HOST::DEST
    rsync [选项] SRC rsync://USER@HOST/DEST

    shelldaemon 模式的区别是 shell 模式应用一个冒号 :,而daemon 模式应用两个冒号 :: 或用 rsync:// 显式指定。

前两种工作模式比较简单,间接输出源和指标门路即可进行数据同步。第三种用法辨别客户端和服务端,须要在服务端配置能力失常工作。

接下来咱们介绍应用 daemon 形式进行数据同步。

rsync daemon 模式

相似于 V2ray,rsync 命令既能够用作客户端,也能够用作服务端。咱们平时用的 rsync 便是作为客户端应用,加上 --daemon 参数则变成服务端模式。

CentOS 7、Ubuntu/Debian 零碎装置 rsync 后会主动配置好 rsync 服务,但在 CentOS 8 零碎中须要额定装置 rsync-daemon 包才会配置 rsync 服务:

\# Ubuntu/Debian 装置 rsync
sudo apt update
sudo apt install -y rsync
\# CentOS/RHEL 装置 rsync
sudo yum install -y rsync
\# CentOS 8 装置 rsync daemon
sudo yum install -y rsync-daemon

rsync daemon的默认配置文件是 /etc/rsyncd.conf,Ubuntu/Debian 默认没创立。编辑 /etc/rsyncd.conf,写入相似以下内容(# 号结尾的行是正文):

\# rsyncd.conf 的配置项分全局参数和模块参数,全局参数只有少数几个,个别放弃默认即可
\# 模块以[模块名] 结尾,后续参数仅作用于该模块
\# 卸载模块外的参数实用于所有模块
\# rsyncd.conf 文件的指令和值请参考 man rsyncd.conf

\# 欢送文件
motd file = /etc/rsyncd.motd

\# 用户和组 id
uid = root
gid = root

\# 是否 chroot,出于平安思考倡议为 yes
use chroot = yes
\# 是否记录传输记录
transfer logging = no
\# 是否只读,值为 true 时客户端无奈上传
read only = false
\# 是否只写,值为 true 时客户端无奈下载
write only = false
\# 默认回绝所有主机连贯
hosts deny = *

\# 用户名密码文件,每一行格局是:用户名: 明码,例如
\# tlanyan:12343112
\# 该文件权限必须设置为 600,除非 strict mode 设置为 false
secrets file = /etc/rsyncd.secrets

\# 定义名为 backup 的模块
[backup]
\# 模块阐明
comment = backup directory
\# 模块门路,申请改成本人的
path = /data
\# 容许的主机 ip
hosts allow = xx.xx.xx.xx
\# 容许的用户名
auth users = tlanyan
\# 是否容许列出该模块,倡议为 no
list = no

上述配置文件中,/etc/rsyncd.motd/etc/rsyncd.secrets需自行创立,例如:

\# 设置欢送标语
echo ‘ 欢送应用 Rsync Daemon’ > /etc/rsyncd.motd
\# 设置用户名和明码
echo ‘tlanyan:12343112’ >> /etc/rsyncd.secrets
\# 设置密码文件权限
chmod 600 /etc/rsyncd.secrets

而后启动 rsync 服务:

\# CentOS/RHEL
systemctl enable rsyncd
systemctl start rsyncd

\# Ubuntu/Debian 的服务名为 rsync
systemctl enable rsync
systemctl start rsync

rsync daemon默认监听 873 端口,开启了防火墙须要放行端口(阿里云 /AWS/GCP 等网页后盾有平安组,须要登录并放行):

\# 启用了 firewalld 的 CentOS 7/ 8 等零碎
firewall-cmd –permanent –add-port=873/tcp
firewall-cmd –reload

\# 启用了 iptables 的 CentOS 7/ 8 等零碎
iptables -I INPUT -p tcp –dport 873 -j ACCEPT

\# 启用了 ufw 的 Ubuntu/Debian 等零碎
ufw allow 873/tcp

应用 rsync daemon 同步文件

接下来,在受权的机器上应用受权用户 同步文件:

rsync -avP 受权用户 @服务器 ip::backup /var/www/data/

连贯过程中须要输出 rsyncd.secrets 中的用户明码,也能够应用 --password-file 指定密码文件而无需每次手动输出:

\# 将明码写入文件
echo ‘12343112’ > secrets
\# 设置密码文件权限
chmod 600 secrets
\# 免密同步文件
rsync -avP –password-file=secrets 受权用户 @服务器 ip::backup /var/www/data/

除了应用两个冒号::,其余应用形式与 shell 形式都雷同。

rsync daemon 总结

应用rsync daemon,防止了跨主机同步时的安全隐患,并且能够指定受权 ip 和受权用户,实际中举荐应用。

参考

1. rsync 复制文件的一些注意事项

2. rsync 同步和备份文件到本地

3. WordPress 备份计划和备份脚本

4. rsync 装置配置实际

正文完
 0