教你配置Linux/Unix开发环境,防止公司源代码泄漏外泄

转载 2013年12月06日 11:40:40

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

说明:以下步骤,非特殊说明所有操作都需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使用说明


原文出自:http://41putty.sinaapp.com/index.php/archives/11/

如何防止源码外泄

使用DSA数据安全区域 一、在终端上隔离出安全区,用于保护源代码等敏感数据安全,防止其泄露; 实现效果: 1、安全区磁盘隔离,进入须通过身份认证,可选用硬件KEY; ...
  • liunx___
  • liunx___
  • 2017年09月03日 14:45
  • 194

Windows源代码泄露全景报道[转]

作者: 熊建国 罗景文 出处: 程序员 责任编辑: 方舟 [ 2004-04-16 12:56 ] 以下这段代码是否似曾相识?;) /*W$最高机密—Mi...
  • Nutsboy
  • Nutsboy
  • 2007年02月11日 13:10
  • 6668

Unix/Linux环境C编程入门教程(13) 开发环境搭建VMware软件安装

安装虚拟机VMware1.选中这个文件2.以管理员权限打开 3.单击下一步4..同意许可协议 5..选择自定义安装6.选择组件与配置安装的路径  7.设置存储虚拟机的路径8.设置软件更新,避免加载速度...
  • yincheng01
  • yincheng01
  • 2014年06月27日 14:45
  • 1103

Linux:让内存不再泄漏

Linux:让内存不再泄漏本文将介绍内存泄漏的检测方法以及现在可以使用的工具。针对内存泄漏的问题,本文提供足够的信息,使我们能够在不同的工具中做出选择。       内存泄漏      在此,谈论的是...
  • sungblog
  • sungblog
  • 2007年05月28日 22:40
  • 5416

Unix网络编程第三版源码编译

环境: $ cat /etc/issue Ubuntu 12.04.1 LTS \n \l $ cat /proc/version Linux version 3.2.0-48-generic (...
  • HanTangSongMing
  • HanTangSongMing
  • 2014年03月04日 11:56
  • 4712

Web前端开发环境搭建以及公司私服搭建

web前端开发基础 参考网址:http://www.w2bc.com/Article/50764                     http://www.cnblogs.com/samwu/...
  • Alvyang
  • Alvyang
  • 2016年05月17日 11:55
  • 703

手把手教你搭建谷歌TensorFlow深度学习开发环境和更高级的keras开发安装!

TensorFlow是什么? TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着...
  • yangdashi888
  • yangdashi888
  • 2017年04月21日 16:37
  • 710

uilib库gdi句柄泄漏bug修复,duilib防止gdi泄漏的小提醒

转载请说明原出处,谢谢~~        今天
  • zhuhongshu
  • zhuhongshu
  • 2014年08月12日 21:11
  • 2879

unix网络编程第三版环境配置

根据unp3前沿部分的“如何使用本书”,决定先看本书的第二部分,即第3至11章,这部分偏实践。        当看到确定主机字节序的时候出现了一段程序:#include "unp.h"int ...
  • Trevor211
  • Trevor211
  • 2015年08月23日 16:04
  • 1166

Unix网络编程卷1源代码使用

几乎linux 编程0基础,花了半小时还是在我虚拟机里运行出第一个例子daytimetcpcli了: 主要步骤: 1,下载源代码,解压 2,配置这本书里面的环境(暂时不懂,不用纠结) 3,下载、启...
  • xinpo66
  • xinpo66
  • 2015年07月18日 10:51
  • 2039
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:教你配置Linux/Unix开发环境,防止公司源代码泄漏外泄
举报原因:
原因补充:

(最多只允许输入30个字)