Linux/Unix环境源代码防泄漏、外泄终极解决方案

公司研发的软件产品、企业信息的核心数据,当然不希望员工随意散布,但如果太限制员工的网络自由会引起大家的反感。本文向大家介绍一种权宜的方法,允许员工网络自由的同时保护公司的代码和数据。

说明:以下步骤,非特殊说明所有操作都需root用户执行。

第一步:限制服务器端口。

设置防火墙,只公开必须开启服务的端口,如果是开发机。只开启sshd(22)和ftp(20,21)端口。
iptabales配置示例如下:

[root@tp ~]# iptables -P INPUT DROP #默认禁止一切通信传入
[root@tp ~]# iptables -P OUTPUT DROP #默认禁止一切通信传出

允许sshd和ftp服务。

[root@vmleman ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
[root@vmleman ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@vmleman ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@vmleman ~]# iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
[root@vmleman ~]# iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
[root@vmleman ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

允许loopback(可用于本地访问来做软件测试)

[root@vmleman ~]# iptables -A INPUT -i lo -p all -j ACCEPT
[root@vmleman ~]# iptables -A OUTPUT -o lo -p all -j ACCEPT

第二步:禁用系统sftp功能:

在/etc/ssh/sshd_config里面找到下面一行并将其注释。

#Subsystem      sftp    /usr/libexec/openssh/sftp-server

至此,用户无法通过sftp传输文件。此配置重启后才生效。

第三步:配置ftp文件传出策略:

任何系统都需要和外界沟通,完全独立的系统没有意义,这一步将实现这个特殊通道,允许特殊文件(如编译后的可执行文件)传出。 以vsftpd(配置文件为:/etc/vsftp/vsftpd.conf)为例,说明ftp服务器访问策略配置。
1)修改vsftpd配置文件如下:

# local_enable=YES  (禁止本地用户用户登入ftp服务器)  
anonymous_enable=YES (允许匿名用户访问,vsftpd默认为允许)

2)确保匿名用户主目录及其子目录对普通用户没有写权限。
现在匿名用户所在目录(/var/ftp/)任何人都可访问,相当于外部环境,因此不允许一般用户写入,否则数据将会传出。

[rhel5@vmleman ftp]$ ls -ld `find /var/ftp/`
drwxr-xr-x 3 root root 4096 2011-09-08 /var/ftp/
drwxr-xr-x 2 root root 4096 2007-12-13 /var/ftp/pub

CentOS系列默认就是没有写权限的,基本不需要修改。

第四步:编写传出文件检查脚本。

这个脚本主要用来检查传输的文件进行检查。这个脚本设置为只有root有权限执行,其他用户没有任何权限。

[root@vmleman ~]# ls -l /root/bin
总计 8
-rwx------ 1 root root 575 09-04 15:04 chkcp.sh

这里的chkcp.sh是一个示例的shell脚本(你可以使用任何语言,或者是C),检查只允许可执行文件才可以传出来:

#/bin/bash
export LANG=en_US
if [ $# != 2 ]; then
  echo "usage: chkcp.sh <srcfile> <dstfile>";
  exit
fi
filetype=`file ${1} `  #得到文件类型
  allow=`echo ${filetype%:.*} |grep "executable.*object module"`  #检查是否为AIX的XCOFF可执行文件
if [ -z "$allow" ]; then
allow=`echo ${filetype%:.*} |grep ELF`  #检查是否为Linux的ELF可执行文件
  if [ -z "$allow" ]; then
    echo deny ${1}  #检查失败直接退出
    exit;
  fi
fi
cp -f ${1} ${2}  #检查通过后实现拷贝传出
if [ "$?" == "0" ]; then
  echo "${1} copyed."
fi

第五步:设置sudo用户。

由于之前匿名用户主目录(/var/ftp/)对普通用户不可写,所以普通用户不能直接将文件传输。
然而可以利用sudo命令调用第三步的root用户的传出脚本(chkcp.sh),这样就可以将文件拷贝出来,但文件被拷贝出来之前必须经过我们预设脚本的检查,不符合要求的文件不允许传出来。在一定程度上实现了对敏感数据的外泄的防护。规则配置如下:
1)添加sudoers文件的写权限:

[root@vmleman bin]# chmod u+w /etc/sudoers

2)在文件末尾添加如下内容:

User_Alias CHKCPOUT = rhel5, sips
CHKCPOUT       ALL=NOPASSWD: /root/bin/chkcp.sh

其中rhel5和sips是允许调用chkcp.sh传出文件的用户名列表,你可以自己修改。没有添加的用户不能调用chkcp.sh,所以无法传出任何文件。
3)恢复权限:

[root@vmleman ~]# chmod u-w /etc/sudoers

4)验证结果: 切换到刚刚sudo配置的普通用户(如rhel5)下,运行sudo -l查看权限:

[rhel5@vmleman ~]$ sudo -l
User rhel5 may run the following commands on this host:
(root) NOPASSWD: /root/bin/chkcp.sh

此时我们可以用chkcp.sh来拷贝文件了。

[rhel5@vmleman ~]$ /root/bin/chkcp.sh a.out rhel5.a.out
-bash: /root/bin/chkcp.sh: 权限不够
[rhel5@vmleman ~]$ sudo /root/bin/chkcp.sh a.out rhel5.a.out
a.out copyed.
[rhel5@vmleman ~]$ sudo /root/bin/chkcp.sh a.c rhel5.a.c
deny a.c
[rhel5@vmleman ~]$ ls -l /var/ftp/pub/
总计 24
-rwxr-xr-x 1 root root 9860 09-04 15:30 rhel5.a.out
drwxr-xr-x 2 root root 4096 09-04 14:15 ss

检查发现只有可执行的a.out文件被拷贝出,源代码文件被拒绝。

第六步:配置ftp文件传入策略:

有时候,我们也需要将外部文件传入到服务器上。 这时可以不用做文件类型检查,不过也需要配置一个严密的安全通道。
1)在匿名用户主目录下创建upload目录,属主改为ftp

[root@vmleman ~]# mkdir /var/ftp/upload
[root@vmleman ~]# chown ftp /var/ftp/upload/

2)配置vsftpd.conf,添加匿名用户权限

anon_upload_enable=YES  
anon_mkdir_write_enable=YES  
anon_other_write_enable=YES  
anon_umask=022

设置umask是为了防止创建其他用户可写的目录,产生安全漏洞。

这样,任何人都可以用ftp将文件放到upload目录下,登入到系统后,再从这个目录下拷贝内容即可。

最后一步:告诉你的员工,在ftp文件传输时使用port模式

到目前为止,基本上可以防止敏感文件的外泄。但是还有一个问题,一般情况下,用户使用SecureCRT或者Putty等其他软件登入服务器,用户可以通过cat命令把文件打印到屏幕,然后复制其中的内容。如果用户将SecureCRT的屏幕缓存设置足够大的话,就可以一次复制很多文件内容。要想解决这个问题,需要用到一个私有的SSH客户端41putty,它可以防止用户大量复制屏幕内容。

关于41putty的使用方法,请参考41putty使用说明

转载于:https://my.oschina.net/mhlei/blog/182020

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件企业真正的核心竞争力除了软件人才就是人才研究出来的源代码,软件人才的流失是无法避免的,但是源代码的泄露却是可以避免的,如下几个场景将造成源代码的安全问题: 1. 网络间谍,黑客,竞争对手等通过木马等网络病毒程序非法窃取企业计算机上的源代码。 2. 企业存放源代码的硬盘,移动存储设备或备份光盘丢失. 3. 企业员工受到竞争对手的诱惑,以高价将源代码出售,给企业造成巨大经济损失 4. 企业员工通过网络,邮件,QQ, U盘等途径将源代码有意无意地泄露出去。 5. 企业员工因不符合企业要求被辞退,但是其掌握的源代码可能被恶意泄露,给企业造成巨大损失。 如何既能保证企业内部正常的开发需要,又能源代码被泄露出去就成了急需解决的问题。 基于以上需求,青岛健明科技发展有限公司专门开发了一款针对linux平台研发企业的源代码泄漏软件,他的特点如下: 透明加密: 指定类型文档在生成过程中强制,实时,自动加密,而用户感觉不到它的存在,无需改变任何操作流程和习惯. 智能解密: 当开发人员需要查看,编辑源代码时自动解密,使开发人员看到明文。当需要编译代码的时候,自动解密编译,全程无需开发人员干预,完全感觉不到它的存在。当非法拷贝到移动存储设备和通过网络发送时,加密文件将不会解密,仍然以加密的内容输出,有效止了代码泄漏。 开发全程保密 可以使用本软件附带的加密和解密软件对开发全程进行控制,详细步骤如下: 1. 公司使用配套加密软件对已有的核心代码文件和文档进行加密。 2. 把加密的代码分发给程序员开发,程序员机器安装健明linux平台文档泄漏软件,开发人员使用支持的编辑器编辑源代码和文档看到的是明文,并且新建, 编辑,编译和执行都很正常,但是如果想拷贝到移动存储设备或通过网络发送出去,那加密的代码不会被解密, 没有解密软件看不到源代码和文档 3. 程序开发完毕,公司拿到开发完的加密文件,使用配套解密软件即可解密成明文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值