=Start=
缘由:
需要给其它组的同事提供审计日志的安全存储功能,安全存储一方面是保证日志的安全和不可篡改,另一方面就是保证日志的不可丢失。保证日志的安全和不可篡改咱们以后再说,这里主要说一下如何保证日志的不可丢失的方法——异地备份,主要用到的是rsync在不同机器之间进行审计日志的异地备份存储,以防止在一台机器宕掉的情况下审计日志不丢失。
正文:
参考解答:
什么是rsync
rsync(remote synchronize)——是一个Linux下用于实现远程同步功能的软件,可通过LAN/WAN快速同步多台主机间的文件。在同步文件时,可以保持源文件的权限、时间、软硬链接等附加信息。它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快,常被用于在内网进行源代码的分发及同步更新 & 数据备份工具。可以参考下面几篇文章了解一下什么是rsync以及它有哪些特性:
- rsysnc的特性
https://rsync.samba.org/features.html - rsync 的核心算法
http://coolshell.cn/articles/7425.html
rsync的安装
rpm -qa | grep rsync yum info rsync sudo yum install rsync |
rsync的配置
可能我们通过上面的方式安装好rsync后,并没有发现它的配置文件,以及启动程序,因为每个管理员对rsync的使用可能不一样,所以一般的发行版只是安装好软件就完事了,让管理员来根据自己的用途和方向来自己配置rsync服务。因为rsync的应用范围比较广,能在同一台主机进行备份工作,还能在不同主机之间进行工作。在不同主机之间的进行备份,是必须架设rsync服务器的。
sudo mkdir -p /etc/rsyncd sudo touch /etc/rsyncd/rsyncd.conf #主配置文件 sudo touch /etc/rsyncd/rsyncd.secrets #用户名密码文件,一组用户一行,用户名和密码使用 : 分割 sudo touch /etc/rsyncd/rsyncd.motd #非必须,连接上rsyncd显示的欢迎信息,此文件可不创建 sudo chown root:root /etc/rsyncd/rsyncd.secrets #安全起见将属主设置为root sudo chmod 0600 /etc/rsyncd/rsyncd.secrets #安全起见将权限设置为 600 |
一个rsyncd.conf文件内容模板:
################################################################################ # ******进程相关的全局配置****** ################################################################################ # = 后面的值可根据自己的实际情况更改 # pid file 守护进程pid文件 # port 守护进程监听端口,可更改,由xinetd启动rsyncd时忽略此参数 # address 守护进程监听ip,由xinetd启动rsyncd时忽略此参数 pid file = /var/run/rsyncd.pid port = 873 address = 10.12 . 74.122 # rsyncd 守护进程运行系统用户全局配置,也可在具体的块中独立配置 uid = root gid = root # 允许 chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录下 # chroot为yes时必须使用root权限,且不能备份path路径外的链接文件 use chroot = yes # 只读 read only = no # 只写 write only = no # 允许访问rsyncd服务的IP,IP段或者单独IP之间使用空格隔开 hosts allow = 10.5 . 203.190 10.4 . 0.0 / 255.255 . 0.0 # 不允许访问rsyncd服务的IP,*是全部(不涵盖在hosts allow中声明的IP,注意和hosts allow的先后顺序) hosts deny = * # 客户端最大连接数 max connections = 5 # 欢迎文件路径,可选的 # motd file = /etc/rsyncd/rsyncd.motd # 日志相关 # log file 指定rsync发送消息日志文件,而不是发送给syslog,如果不填这个参数默认发送给syslog # transfer logging 是否记录传输文件日志 # log format 日志文件格式,格式参数请google # syslog facility rsync发送消息给syslog时的消息级别, # timeout 连接超时时间 log file = /var/log/rsyncd.log transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 ################################################################################ # ******模块配置(多个)****** ################################################################################ # 模块名称必须使用[]环绕,比如要访问auditlog,则地址应该是 audit @10 .12. 74.122 ::auditlog [auditlog] # 模块根目录,必须指定 path = /opt/logs/sec # 是否允许列出模块里的内容 list = no # 忽略错误 # ignore errors # 模块验证用户名称,可使用空格或者逗号隔开多个用户名 auth users = audit # 模块验证密码文件 可放在全局配置里 secrets file = /etc/rsyncd/rsyncd.secrets # 注释 comment = This moudle is used to backup auditlog for data team. # 排除目录,多个之间使用空格隔开 exclude = test1/ test2/ |
一个rsyncd.secrets文件内容示例:
audit:z_a08_p |
一个rsyncd.motd文件内容示例:
################################################################################ # ******configed by ixyzero****** ################################################################################ |
rsync的启动
根据实际情况选择rsync服务的启动方式:
- rsync服务器负载比较高,则使用独立启动模式
#显式的指定配置文件
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
#假设在使用Putty/Xshell终端操作,保证终端断开进程仍然执行
nohup /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
- rsync服务器负责较低,使用xinetd运行方式
$ sudo vim /etc/xinetd.d/rsync
...
server_args = --daemon --config=/etc/rsyncd/rsyncd.conf
...
# 注意:如果系统没有安装xinetd,需要先安装然后设置一下:
$ sudo yum intall xinetd
$ sudo chkconfig rsync on
$ sudo service xinetd restart
rsync的防火墙设置
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT # iptables -L |
rsync的(自动)同步
# 传输时自动使用密码文件而不用手动输入,注意密码文件权限必须是 600 $ rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.secrets audit @10 .12. 74.122 ::auditlog ~/auditlog # 参数 a 的意思是保留文件原有权限,用户,用户组,时间且递归的copy包括链接文件,块设备在内的所有文件 # 参数 v 是显示传输信息 # 参数 P 显示传输进度 # 参数 z 是压缩传输内容进行传输 # 假设要保持auditlog模块和本地 ~/auditlog 目录的内容完全一致,需要加上参数 `--delete` ,这样会删除在 ~/auditlog 目录里但是不在auditlog模块里的文件(夹) # 如果需要rsync自动进行同步,可以将同步使用的rsync命令放入cron定时执行,以起到自动同步的效果; # 或者可以结合 inotify 和 rsync 以达到近实时同步的效果。 |
rsync的安全设置
- 限定可访问的IP;
- 不允许匿名访问,设置用户口令;
- 修改监听端口;[可选]
- 隐藏module信息;
- 只读设置。
参考链接:
- rsync官网
https://rsync.samba.org/
https://www.samba.org/ftp/rsync/rsyncd.conf.html - rsync服务器架设(数据同步|文件增量备份)
- centos下配置rsyncd服务器
- CentOS 6.5下rsync服务器安装配置
- Linux下同步工具inotify+rsync使用详解
- lsyncd实时同步搭建指南——取代rsync+inotify
- 关于rsync+inotify-tools实时同步模式
- Linux下rsync文件同步服务器配置详解
- linux rsync同步设置详细指南
- linux文件同步之rsync学习(一)
- 如何用rsync在跨越不安全的网络主机之间进行数据同步
- rsync服务器/daemon的安全
- Rsync安全配置
- Rsync安全配置
- Rsync安全配置
- Rsync使用教程与安全问题
- Rsync安全配置
- linux服务器:Rsync安全
=END=
《 “CentOS环境下rsync的配置和使用” 》 有 2 条评论
开发技术 – 数据增量同步
https://ialloc.org/posts/2018/07/13/delta-encoding/
`
差分编码
diff 和 patch
Rsync
RDC
流式增量
应用案例
APK 包增量更新
zsync
crsync
Courgette
Redis
Evernote
Dropbox
犀牛云盘
ownCloud
seafile
`
Linux基础系列 – rsync
https://pylixm.cc/posts/2019-06-03-Linux-rsync.html
`
介绍
使用场景
– 本机复制内容
– 远端同步内容
– 以服务形式同步
总结
参考
`