如果你的公司很多数据都是涉密的,你已经把USB等传输数据的端口已经禁止了,机箱上锁了,但肯定不想员工把公司很多内部文件传输到互联网上去,那么你该怎么做呢?我觉得有如下几个选择:

  1. 如果你的文件涉及等级较高,保密性极强,那么我推荐你让这部分涉密的员工的办公电脑严格切断外部网络,要查资料的话,统统用单台公共电脑查找,公共电脑和办公电脑没有任何物理连接,并有相应的审计软件审计用户的行为。记住,真正涉密的单位,你应该严格的做到禁止“一机两用”
  2. 购买X信服,X康的网络行为管理设备,禁止对外文件的上传。但通常这类设备都比较昂贵,一般根据文件类型来判断上传行为,如果用户使用https加密的方式上传文件,它们一般就不管用了。并且,有些弱智的行为管理设备,居然是根据文件后缀来判断文件是否可以上传的,真个就有点搞笑了。
  3. 把公司网络划分成不同的vlan,有些段能上网,有些不能上网,把能上网段的某台机器,作为大家共享上网的跳板机使用,然后做路由允许内网的某些机器访问此网段的某台机器,来上网查资料,有些文档需要下载下来的,只允许单向从外网到内网传输,不允许传输出去。我们这里讲的就是在这个场景下的应用。

下面是这个场景简单的架构图,我们这里省去了网络设备划分vlan,做路由等细节。

filesync图中,除了上网跳板机能上网外,其他所有设备都只能访问内网。员工电脑账号通过samba PDC做域控进行管理(参考文章)。PDC会定期把系统的passwd,shadow文件,samba的private等文件夹同步到备用的samba服务器中去,备用的samba服务器通过lsyncd来同步外网下载的资料到内网samba PDC中,员工通过自己的办公电脑,在pdc中读取文件。

需要注意的是,我们的跳板机需要禁用剪切板等一系列共享,如何设备远程的跳板机请参考此文章

这里主要讲的是,如何通过lsyncd这个软件(这里是它的软件主页),把备用samba上的文件,同步到我们主要的文件服务器samba PDC上。

两台samba操作系统是centos6(理论上centos7的配置应该是一样的),它们的IP地址在192.168.1.0/24段中。同步文件夹分两台机器都是/srv/tongbu目录。我们把接收文件的samba pdc称为服务端(192.168.1.2),发送文件的备用samba称为客户端(192.168.1.3)。下面讲下两个设置。

服务端:

安装rsync和xinetd,启动相应的rsync服务

yum install rsync xinetd

创建xinetd配置文件:
vim /etc/xinetd.d/rsync内容如下:

service rsync
{
   disable         = no
   only_from       = 192.168.1.0/24
   socket_type     = stream
   wait            = no
   user            = root
   server          = /usr/bin/rsync
   server_args     = --daemon
   log_on_failure += USERID
}

启动守护进程:
service xinetd start
加入开机启动:
chkconfig xinetd on

查看rsync服务是否已经启动:
netstat -tnlp | grep 873

防火墙放行端口:
iptables -I INPUT -p tcp –dport 873 -j ACCEPT
service iptables save
service iptables restart

同步目录的selinux设置:
如果工作目录是单纯的rsync同步目录,则把同步的/srv/tongbu文件夹设置成rsync_data_t这个上下文即可。此处,我们这个文件夹不仅仅是rsync工作目录,还是samba工作目录,所以,我们应该设置成public_content,此处,我们的这个文件夹不仅需要读取,还需要写入,因此要这样设置上下文:
semanage fcontext -a -t public_content_rw_t “/srv/tongbu(/.*)?”
restorecon -Rv /srv/tongbu
另外,我们还需要开启一些布尔值:
setsebool -P allow_rsync_anon_write 1
如果要改变rsync的默认端口,需要用semanage port 更改rsync_port_t的值,具体方案见这篇更改ssh默认端口的文章。你可以安装selinux-policy-doc这个包后,用man 8 rsync_selinux查看对于rsync来说,selinux具体的配置方法。

配置rsync文件:
vim /etc/rsyncd.conf 内容如下:

[tongbu]
path = /srv/tongbu/
comment = lsyncd test
uid = root
gid = root
read only = no
auth users = lsyncd
secrets file = /etc/rsyncd/rsyncd.secret

配置上面的密码文件:
vim /etc/rsyncd/rsyncd.secret 内容如下:

lsyncd:passmima

设置密码文件权限:

chmod 600 /etc/rsyncd/rsyncd.secret

此时重启下xinetd服务,我们的服务端大致就已经工作完成了。

客户端配置:

安装rsync和lsyncd软件:
yum install rsync epel-release
yum install lsyncd

配置同步密码:
vim /etc/rsyncd/rsyncd.secret 内容如下

passmima

更改密码文件权限:

chmod 600 /etc/rsyncd/rsyncd.secret

配置lsyncd:
vim /etc/lsyncd.conf 内容如下:

settings {
    logfile ="/var/log/lsyncd/lsyncd.log",
    statusFile ="/tmp/lsyncd.status",
    maxProcesses = 8,
    }


sync {
    default.rsync,
    source    = "/srv/tongbu",
    target    = "lsyncd@192.168.1.2::tongbu",
    delete="running",
    exclude = { ".*", ".tmp" },
    delay = 30,
    init = false,
    rsync     = {
        binary = "/usr/bin/rsync",
        archive = true,
        compress = true,
        whole_file = false,
        verbose   = true,
        password_file = "/etc/rsyncd/rsyncd.secret",
        _extra    = {"--bwlimit=200"}
        }
    }

lsyncd默认使用的inotifyMode是CloseWrite,这里就使用默认值,故没有配置,如果有需要,可以再settings里面配置下。

启动lsyncd服务并设置开机启动:
service lsyncd start
chkconfig lsyncd on

此时,我们在客户端下的/srv/tongbu文件夹中新增文件,在服务端的/srv/tongbu文件夹应该会看到变化。日志的提示:

Wed Sep  7 16:56:42 2016 Normal: Calling rsync with filter-list of new/modified files/dirs
/test/4913
/test/
/
/test/hjkl.txt
/test/hjkl.txt~
sending incremental file list
test/
test/hjkl.txt

sent 202 bytes  received 31 bytes  22.19 bytes/sec
total size is 48  speedup is 0.21
Wed Sep  7 16:56:52 2016 Normal: Finished a list after exitcode: 0

在文件特别多的时候,有报道显示会出现丢失文件的现象,我们需要把服务端的/etc/xinetd.conf文件中改下:

cps             = 500 30
instances       = UNLIMITED
per_source      = UNLIMITED

具体配置含义可以man xinetd.conf看一下。

lsyncd的配置可以参考官方文档。英文不好的看下这个也不错。

samba、rsync、lsyncd在企业内部文件共享中实战应用
Tagged on:                     

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注