免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2710 | 回复: 0

使用shc提高Shell脚本的安全性 [复制链接]

论坛徽章:
0
发表于 2007-03-30 14:17 |显示全部楼层
使用shc提高Shell脚本的安全性

赵珂, cn.zhaoke.com
http://blog.zhaoke.com/99.html
2007年3月30日




如果你的shell脚本包含了敏感的口令或者其它重要信息, 而且你不希望用户通过ps -ef(查看系统每个进程的状态)捕获敏感信息. 你可以使用shc工具来给shell脚本增加一层额外的安全保护. shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执行文件(支持静态链接和动态链接). 该工具能够很好的支持: 需要加密, 解密, 或者通过命令参数传递口令的环境.


shc主页:
http://www.datsi.fi.upm.es/%7Efrosal/

现在的版本是3.8.6(shc-3.8.6.tgz), 以此为例介绍shc的安装及应用:

准备:
首先你需要检查系统是否安装了gcc编译器, 以Fedora Core 6为例介绍gcc的检查和安装:
# rpm -qa|grep compat-gcc
compat-gcc-34-3.4.6-4
如果没有安装, 按下面步骤安装gcc
# wget ftp://mirrors.kernel.org/fedora/ ... 34-3.4.6-4.i386.rpm
然后
# ln -s /usr/bin/gcc34 /usr/bin/cc

安装:
# wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.6.tgz
# tar vxf shc-3.8.6.tgz
# cd shc-3.8.6
# make test
# make strings
# make install

应用:
下面以mysql数据库备份(备份文件通过ftp上传到一台远程的服务器)脚本为例:
############################### mysql_backup.sh ##############################
#!/bin/sh

newtime=`date +%m-%d-%y_%I%M%p`
mysqldump -u ****** -p ****** dbname | gzip > /Users/****/Documents/dbName_$newtime.sql.gz
echo “backup of dbname”
curl –upload-file dbname$newtime.sql.gz –url “ftp://*****:*****@host/”
echo “ftp of dbname done”

############################### mysql_backup.sh ##############################

1). 加密脚本.

# shc -v -f mysql_backup.sh
-v: 是verbose模式,输出更详细编译日志. -f: 指定脚本的名称.

上面命令在屏幕上的输出:
shc shll=sh
shc [-i]=-c
shc [-x]=exec ‘%s’ “$@”
shc [-l]=
shc opts=
shc: cc mysql_backup.sh.x.c -o mysql_backup.sh.x
shc: strip mysql_backup.sh.x
shc: chmod go-r mysql_backup.sh.x

我们可以看到生成了动态链接可执行二进制文件mysql_back.sh.x和C源文件mysql_backup.sh.x.c, 注意生成的二进制文件因为是动态链接形式, 所以在其它平台上不能运行:

mysql_backup.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

2). 生成静态链接的二进制可执行文件.

不过, 我们可以通过下面的方法生成一个静态链接的二进制可执行文件:

# CFLAGS=-static shc -r -f mysql_backup.sh
# file mysql_backup.sh.x
mysql_backup.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
statically linked, for GNU/Linux 2.6.9, stripped

提示: 通过sch加密后的脚本文件很安全吗?
一般来说是安全的, 不过可以使用gdb和其它的调试工具获得最初的源代码. 如果你需要更加安全的方法, 可以考虑使用wzshSDK.

另外, sch还可以设置脚本的运行期限和自定义返回信息:
shc -e 03/31/2007 -m “the mysql backup script is now out of date.” -f mysql_back.sh

-e表示脚本将在2007年3月31日前失效, 并根据-m定义的信息返回给终端用户.

3). 二进度文件的剖析
有兴趣的朋友可以阅读下面的文章:
Paranoid Penguin - Limitations of shc, a Shell Encryption Utility

备注
转载请保持文章完整性, 欢迎到blog.zhaoke.com网站与赵珂交流.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP