基于rsync和inotify实现web网站文件的同步,并基于IPTABLES做用户限制

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介:

一、拓扑图与简单说明

wKiom1M1clyTthr9AAEWrH5ZyW8438.jpg

  说明:

1.假设我们在申请了一个外网地址10.238.203.24-25/32,我们的内网服务器的地址为172.16.130.0/24网段;

2.我们要开放web和DNS供外网用户访问,其他的服务都禁止访问;

3.我们的域名为www.wangfeng7399.com,其中互联网用户解析到的为10.238.203.24,内网用户解析到的地址为192.168.1.200,或者是192.168.1.201,DNS为外网用户为10.238.203.24,内网用户使用的为192.168.1.201

二、搭建APACHE,PHP,MYSQL

关于搭建APACHE,PHP,MYSQL的详细步骤,请移步本人相关博客,博客地址为http://wangfeng7399.blog.51cto.com/3518031/1381688

三、基于rsync+inotify实现文件实时同步

由于需要基于inotify的机制实现文件实时同步,那么我们需要将前面的两台web作为服务器端,后台php作为客户端

1.配置web的rsync服务

 ①、由于rsync由超级守护进程,所有必须要先安装xinetd超级守护进程,本处通过yum的方式安装

1
[root@httpweb2 ~]# yum install -y xinetd

 ②、配置rsync的配置文件    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#global settings
#配置全局段
uid = nobody
#运行程序的用户uid
gid = nobody
#运行程序的用户gid
use  chroot = no
#是否将用户禁锢在家目录
max connections =  5
#最大的连接数
strict modes = yes
#是否完全检查
pid file = / var /run/rsyncd.pid
#程序的pid文件
log file = / var /log/rsyncd.log
#程序的log日志文件
#directory to be synced
#配置用户段
[webserver]
#共享模块的名称
path = /www/html/wangfeng7399
#共享模块的位置
ignore errors = yes
#是否忽略I/O错误
read only = no
#是否允许用户只读
write only = no
#是否允许用户只写
host allow =  192.168 . 1.0 / 24
#允许访问的ip地址
host deny = *
#允许访问的ip地址
list =  false
#是否列出列表
uid = root
#传递数据的用户
gid = root
#传递数据的用户组
auth user = webuser
#允许访问的用户
secrets file = /etc/rsync.passwd
#用户密码的存放位置

③、生成用户的密码文件/etc/rsync.passwd  

1
webuser:wangfeng7399

 为了安全起见,请将/etc/rsync.passwd的权限设置成600

④、配置服务能够开机自动启动

1
2
[root@httpweb2 ~]# chkconfig rsync on
[root@httpweb2 ~]# chkconfig xinetd on

⑤、将另外一台服务器也配置成如上所示

⑥、测试看是否能将数据上传到服务器上

wKiom1M1gbaiKAqGAAB0rTg4N6c043.jpg

我们可以看到在1.200上的共享目录中有了文件

wKiom1M1hfKQ8b9BAAB7D7At_10615.jpg

  2.搭建inotify服务器

    ①、可以配置epel源,进行yum安装,也可以在ftp://mirrors.yun-idc.com/epel/6/x86_64/inotify-tools-3.14-1.el6.x86_64.rpm下载使用

1
[root@php ~]# rpm -ivh inotify-tools- 3.14 - 1 .el6.x86_64.rpm

②写脚本实现对/www/html/wangfeng7399/文件夹进行监控,如文本修改,文件删除,新增等

1
2
3
4
5
6
7
8
   #!/bin/bash
src=/www/html/wangfeng7399/
inotifywait -mr -e create, delete ,modify,attrib $src \
| while  read files; do
rsync -ar -- delete  $src webuser@ 192.168 . 1.200 ::webserver --password-file=/etc/user.passwd
rsync -ar -- delete  $src webuser@ 192.168 . 1.201 ::webserver --password-file=/etc/user.passwd
done
~

③、启动inotify    

1
nohup ./inotfiy.sh &

④、创建/etc/user.passwd文件

1
wangfeng7399

 并将权限改为600    

⑤、测试,本处不在给出测试结果

四、结合php和mysql做内网测试

wKiom1M1o5_C3SZeAAMvb9gpVsM966.jpg

wKioL1M1o3fipyW8AAJeFX2ALVA492.jpg

五、做DNS解析

①、安装DNS,本处DNS使用的yum的安装方式

1
[root@httpweb2 named]# yum install bind -y

②、修改DNS的主配置文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
options {
     directory        "/var/named" ;
     rrset-order { order random; };
};
view inuser{
   match-clients {  192.168 . 1.0 / 24 ; };
   zone  "."  IN {
         type hint;
         file  "named.ca" ;
};
   zone  "wangfeng7399.com."  IN {
         type master;
         file  "wangfeng7399.com.inuser" ;
};
};
view any{
   match-clients { any; };
   zone  "."  IN {
         type hint;
         file  "named.ca" ;
};
   zone  "wangfeng7399.com."  IN {
         type master;
         file  "wangfeng7399.com.outuser" ;
};
};


  ③、修改区域文件。

  wangfeng7399.com.inuser  


1
2
3
4
5
6
7
8
9
10
11
12
13
$TTL  600
@       IN SOA  dns.wangfeng7399.com.   admin.wangfeng7399.com.(
                 2014032901
                 1H
                 5M
                 5D
                 1D
)
@       IN      NS      dns
dns     IN      A        192.168 . 1.109
www     IN      A        192.168 . 1.109
www     IN      A        192.168 . 1.200
~

    wangfeng7399.com.outuser

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$TTL  600
@       IN SOA  dns.wangfeng7399.com.   admin.wangfeng7399.com.(
                 2014032901
                 1H
                 5M
                 5D
                 1D
)
@       IN      NS      dns
dns     IN      A        10.238 . 203.24
www     IN      A        10.238 . 203.24
www     IN      A        10.238 . 203.25
~                                                        
~

     ④、内网测试

wKioL1M1r4jhagP5AAOHy6LV3YQ174.jpg

wKiom1M1r7CiOUX8AANhXUvOrpc300.jpg

我们可以看到这两个的首解析记录不相同

基于域名访问

wKioL1M1vrvgOVgYAALEZdNiERY998.jpg

六、基于防火墙创建规则

  ①、为了服务器的安全,我们应该将所有的规则都设置为DROP

  ②、为了能让服务器做转发,我们应该开启forward功能,修改/etc/sysctl.conf

  net.ipv4.ip_forward = 1

  ③、将内网的web服务器的80端口映射为10.238.203.24-25的80端口  

1
2
[root@httpweb1 ~]# iptables -t nat -I PREROUTING -d  10.238 . 208.24  -p tcp --dport  80  -j DNAT --to-destination  192.168 . 1.200 : 80
[root@httpweb1 ~]# iptables -t nat -I PREROUTING -d  10.238 . 208.25  -p tcp --dport  80  -j DNAT --to-destination  192.168 . 1.200 : 80

  ④、将DNS映射到互联网上  

1
[root@httpweb1 ~]# iptables -t nat -I PREROUTING -d  10.238 . 208.24  -p udp --dport  53  -j DNAT --to-destination  192.168 . 1.220 : 53

 终于搞定了,由于本人水平有限,请各位大神匹配指正!!!谢谢


本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1386342,如需转载请自行联系原作者

相关文章
|
3月前
|
安全 测试技术 程序员
web渗透-文件包含漏洞
文件包含漏洞源于程序动态包含文件时未严格校验用户输入,导致可加载恶意文件。分为本地和远程包含,常见于PHP,利用伪协议、日志或session文件可实现代码执行,需通过合理过滤和配置防范。
616 79
web渗透-文件包含漏洞
|
6月前
|
Web App开发 监控 安全
OSS客户端签名直传实践:Web端安全上传TB级文件方案(含STS临时授权)
本文深入解析了客户端直传技术,涵盖架构设计、安全机制、性能优化等方面。通过STS临时凭证与分片上传实现高效安全的文件传输,显著降低服务端负载与上传耗时,提升系统稳定性与用户体验。
584 2
|
9月前
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
245 0
|
Web App开发 前端开发 JavaScript
Web开发者必收藏的10个实用网站,你还没收藏吗?
将这些网站收藏起来,定期访问,使它们成为您日常工作的一部分,助您在快速发展的 Web 开发领域保持领先。
392 2
Web开发者必收藏的10个实用网站,你还没收藏吗?
|
人工智能 搜索推荐 PHP
PHP在Web开发中的璀璨星辰:构建动态网站的幕后英雄###
【10月更文挑战第25天】 本文将带您穿越至PHP的宇宙,揭示其作为Web开发常青树的奥秘。通过生动实例与深入解析,展现PHP如何以简便、高效、灵活的姿态,赋能开发者打造动态交互式网站,同时不忘探讨其在新时代技术浪潮中面临的挑战与机遇,激发对技术创新与应用的无限思考。 ###
164 1
|
前端开发 搜索推荐 JavaScript
Web前端网站(四)- 音乐播放器
【8月更文挑战第9天】页面整体色调背景采用柔和渐变的方式呈现,与主页面的“毒药水式”色彩搭配形成了强烈的对比;周边花瓣缓缓飘落到水面之上形成涟漪。整体给人一种温馨、浪漫的感觉,还可以通过中间的3个按钮来控制音乐的切换和播放效果。每一行代码都有详细注释~~~大家可以尽情创作
212 2
Web前端网站(四)- 音乐播放器
WK
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
420 0
|
开发者 Java Spring
【绝技揭秘】掌握Vaadin数据绑定:一键同步Java对象,告别手动数据烦恼,轻松玩转Web应用开发!
【8月更文挑战第31天】Vaadin不仅是一个功能丰富的Java Web应用框架,还提供了强大的数据绑定机制,使开发者能轻松连接UI组件与后端Java对象,简化Web应用开发流程。本文通过创建一个简单的用户信息表单示例,详细介绍了如何使用Vaadin的`Binder`类实现数据绑定,包括字段与模型属性的双向绑定及数据验证。通过这个示例,开发者可以更专注于业务逻辑而非繁琐的数据同步工作,提高开发效率和应用可维护性。
234 0
|
前端开发 安全 JavaScript
PHP与现代Web开发:探索PHP在构建动态网站中的角色和优势
【8月更文挑战第29天】 在数字时代的浪潮下,PHP以其独特的灵活性、易用性以及强大的社区支持,持续成为Web开发领域的重要力量。本文将深入探讨PHP如何适应现代Web开发的需求,通过具体示例揭示PHP的实际应用,并分析其在面对新兴技术挑战时的应对策略。我们将一探究竟,PHP如何在众多编程语言中脱颖而出,成为许多开发者和企业的首选。
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
288 0

热门文章

最新文章