设为首页 收藏本站
查看: 2427|回复: 0

[经验分享] Rsync+inotify实现文件防篡改

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-8 09:52:26 | 显示全部楼层 |阅读模式
  • [url=]设计思路[/url]


A服务器作为防篡改源服务器,也就是正常的文件服务器

B服务器作为对外开放,也就是WEB目录服务器

同时将A服务器作为网站后台更新内容的服务器

在B服务器上配置好rsync + inotify 触发式实时同步

图例如下:

QQ截图20160708095158.png

  • [url=]配置服务器[/url]A防篡改系统

  • 安装rsync

yum install rsync

  • 配置rsync文件rsyncd.conf

服务器A(防篡改系统rsync配置)

vi /etc/rsyncd.conf

[test]

uid = root   #运行rsync的用户

gid = root   #运行rsync的用户组

ignore errors  #忽略一些无关的I/O错误

path = /app/sinova/python/    #需要备份的文件路径

read only = false           #false为关闭,true表示开启。表示只读,不允许上传文件

writeonly = false             #不允许下载

list = false                   #客户请求可以使用模块列表时是否被列出

secres file = /etc/rsync.password  #指定一个包含“用户名:密码”格式的文件

  • 建立 rsync 用户名和密码文件

#echo "root:123456789" >> /etc/rsync.password

  • 为 /etc/rsync.password授权为 600(这个文件的权限必须是 600)

#chmod  600 /etc/rsync.password

  • 启动rsync并添加开启自动启动

#/usr/bin/rsync --daemon  &

#echo "/usr/bin/rsync --daemon" >> /etc/rc.local

  • [url=]配置服务器B[/url]WEB服务器

1、设置 rsync客户端的密码文件,服务器B只需要设置 rsync同步的密码即可,不用设置用户名

# yum install rsync

# echo "123456789" > /etc/rsync.password

  • 将密码文件的权限设置成 600(这个文件的权限必须是600)

# chmod 600 /etc/rsync.password

3、配置 Inotify(在 服务器B上配置)

# tar zxf inotify-tools-3.14.tar.gz

# cd inotify-tools-3.14

# ./configure && make && make install


  • 写一个脚本来实现,当/app/test中文件有变化时,让rsync服务同步数据:

#!/bin/bash

DATE=`date +%F_%T`

rsyncCmd="rsync -vzrtopg --progress --delete 192.168.101.129::test /app/test --password-file=/etc/rsync.password"

Log=/app/logs/notify.log

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /app/test | while read file

do

  ${rsyncCmd}

  echo "${DATE}:Change:${file} was rsynced" >> ${Log}

done

  • 编写监听inotify进程脚本,防止inotify由于某种原因中断无法实时同步

vi /app/bin/inotify_monitor.sh

#!/bin/bash

#time 2015-09-01

#program: inspect inotify script

function check(){

if ! ps -ef|grep  "$1"|grep -v "grep" >/dev/null;then

nohup /app/bin/inotify.sh &

fi

}

check inotifywait

  • 添加定时任务计划

#crontab -e

*/1 * * * * /app/bin/inotify_monitor.sh &> /dev/null

  • 给予执行权限

# chmod +x /root/inotify.sh

# nohup /app/bin/inotify.sh &        #在后台执行


  • [url=]服务启动与停止[/url]
  • 启动服务器A(防篡改)与服务器B(WEB) rsync服务

#/usr/bin/rsync --daemon

  • 启动服务器B(WEB)服务器脚本

# nohup /app/bin/inotify.sh &

#crontab -e

*/1 * * * * /app/bin/inotify_monitor.sh &> /dev/null

  • 关闭inotify服务

关闭监听inotify进程脚本,添加#注释掉计划任务

#crontab -e

#*/1 * * * * /app/bin/inotify_monitor.sh &> /dev/null

查找后台进程并kill掉

#kill -9 `ps -ef|grep inotify|grep -v grep|awk '{print $2}'`

QQ截图20160708095204.png


  • [url=]测试[/url]

向服务器B(WEB服务器)/app/test下目录进行更改、删除文件进行测试;

QQ截图20160708095209.png

从上图可以看出,删除、更改文件后目录下无变化。


  • [url=]风险评估[/url]
  • 设置rsync+inotiy后更新文件需从服务器A(防篡改)进行文件同步;





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-241100-1-1.html 上篇帖子: iperf测试网卡性能 下篇帖子: Linux下添加新硬盘,分区及挂载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表