zoukankan      html  css  js  c++  java
  • ubuntu16.04搭建个人简易DLP

    前言

      最近一朋友让我帮忙搭建一台服务器,用做公司的服务器,但是该服务器需要满足一些安全要求,于是乎就有了下面的解决过程_

    需求

    1. 期望普通用户和管理员都能ssh登陆服务器,但禁止scp或者其他方式下载文件,允许管理员上传文件;
    2. 本地操作时,普通用户usb口无效,但管理员有效
    3. 期望用ubuntu搭建(偏向ubuntu server)

    方案1

      因为我也没接触过这些,所以只好尝试着解决。首先想到的是这样的需求应该是非常普遍的,因此市场上肯定有现成的解决方案,自己从0造轮子不是我的风格,因为任何轮子需要考虑的太多,经过市场检验的,绝对比我刚造出的好_。经过搜索,我发现行业里关于这个的专业术语叫 DLP (Data Loss Prevention),国内做的比较好的有 中软、北信源、鼎普、亿赛通、明朝万达。开源免费的也有,不知道使用麻不麻烦 比如,OpenDLP MyDLP,这些都是ubuntu支持的。最终我建议他直接选一家国内的方案,虽然花点钱,但毕竟是公司使用啊,安全性(真的吗?我自己不太信,哈哈)和容易程度都应该是较为出色的。但建议被拒绝了,理由是公司很小,不想花这钱,而且他的需求很简单,不用DLP那么复杂。哎,我只好接着找解决方案

    方案2

      还是自己造轮子吧!哈哈。但我造之前是有考虑他的需求的,因为他的需求确实比较简单,需求1就是期望所有人能够正常访问服务器的资料,但是不希望访问的人能够拷走资料,针对这个的解决方法我打算用远程桌面和通过防火墙禁掉除远程桌面外的其他端口。首先,图形化操作对于用户来说更加简单,入门门槛低;其次,远程桌面就满足了防止用户拷贝,ssh登陆还能在终端里拷贝显示的内容呢,远程桌面的话,除非用户截屏;最后,禁掉端口也就防止了用户通过其他程序下载数据_ 需求2就是禁掉usb,但允许管理员通过usb更新服务器数据,这个的话,管理员默认创建的用户就不是sudoer,所以本身就不允许操作usb,因此也解决了。下面就开始搭建、验证(搭建过程还是遇到一些坎的)

    搭建步骤

    1. 下载ubuntu16.04,用startup disk creator制作启动盘;
    2. 将u盘插入要搭建的服务器上,从u盘启动;
    3. 安装的时候选择lvm+加密方式(这是我额外赠送的安全防护,即使硬盘被偷了,别人也无法打开数据,当然,这样的弊端就是服务器每次启动都需要先输入磁盘解密密码);
    4. 安装远程桌面,在这步我花了不少时间,以前ubuntu14和15的时候用过远程桌面,原以为很快就搞定,结果发现装完后,客户端登陆就是个灰色界面,没有任何可操作的地方。后来在网上找到了解决方法(默认的unity支持不够好,之前我就是在server上装的unity),步骤如下:  
    #安装远程桌面服务端
    sudo apt-get install xrdp
    #更新源
    sudo apt-get update
    #安装mate桌面
    sudo apt-get install mate-core mate-desktop-environment mate-notification-daemon
    #将远程桌面的默认桌面设置为mate
    sudo sed -i.bak '/fi/a #xrdp multiple users configuration 
     mate-session 
    ' /etc/xrdp/startwm.sh
    

    这样之后,客户端就可以登陆了。windows下直接在运行(win+r调出)中输入mstsc,然后输入服务器ip就可以了;
    5. 屏蔽其他端口,之前也没怎么用户防火墙操作,网上查看了下iptables的基本使用及结合网上的解决方案,最后还真实现了,将下面的内容放入rc.local,这样系统起来就会执行,执行后,网络除了远程端口外,就全封掉了,不管进入还是出去

    iptables -F
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p tcp --dport 3389 -m state --state NEW -j ACCEPT
    iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 3389 -m state --state NEW -j ACCEPT
    

    经过以上步骤及测试,满足需求

    完!
    2016年8月

  • 相关阅读:
    javascript 获取鼠标在盒子中的坐标
    jquery中clientY, pageY, screenY的区别,最后三张图一目了然
    javascript 小清新颜色翻页效果
    javascript 缓动返回顶部案例
    原生js轮播图实现
    javascript Math对象
    javascript 获取节点元素的封装
    javascript 转换大小写字母
    2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 1010
    2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 1009
  • 原文地址:https://www.cnblogs.com/rongpmcu/p/7662799.html
Copyright © 2011-2022 走看看