教你配置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/bashexport LANG=en_USif [ $# != 2 ]; then  echo "usage: chkcp.sh <srcfile> <dstfile>";  exitfifiletype=`file ${1} `  #得到文件类型  allow=`echo ${filetype%:.*} |grep "executable.*object module"`  #检查是否为AIX的XCOFF可执行文件if [ -z "$allow" ]; thenallow=`echo ${filetype%:.*} |grep ELF`  #检查是否为Linux的ELF可执行文件  if [ -z "$allow" ]; then    echo deny ${1}  #检查失败直接退出    exit;  fificp -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, sipsCHKCPOUT       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 -lUser 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.outa.out copyed.[rhel5@vmleman ~]$ sudo /root/bin/chkcp.sh a.c rhel5.a.cdeny a.c[rhel5@vmleman ~]$ ls -l /var/ftp/pub/总计 24-rwxr-xr-x 1 root root 9860 09-04 15:30 rhel5.a.outdrwxr-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/

当你能爱的时候就不要放弃爱

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

相关文章:

你感兴趣的文章:

标签云: