你的shell脚本存在安全问题吗?

news2024/9/25 9:36:32

更多技术资料,请关注微信公众号“运维之美”

信息安全对于线上环境显得尤为重要,shell脚本的代码中可能经常会引用到密码等变量进行赋值等场景,但是在使用的过程中可能会导致环境的登录信息泄露,导致安全隐患,那么如何避免这种问题呢?本文从脚本中密码和文件的加密上来给出部分解决思路。

01 不使用明文密码

既然密码使用是场景需要,那么为了避免密码泄露,不使用明文密码,对密码进行加密处理是一种很好的方式。

base64加密用法

加密:echo "密码"|base64 -i

解密:echo "加过密的密码"|base64 -d

实例演示

[root@knode1 ~]# echo "test@123"|base64  #将密码通过base64加密变成加密密码
dGVzdEAxMjMK
[root@knode1 ~]# echo "dGVzdEAxMjMK"|base64 -d  #使用过程中解密
test@123

通过上面的加解密过程,我们可以应用到shell脚本的使用过程中,通过加密来传递密码参数,在一定程度上防止了密码泄露的风险。

shell脚本中应用场景

#!/bin/bash
dst_dir=/opt/package
dst_ip=192.168.0.1
package=$1
PASSWD=`echo 'dGVzdEAxMjMK' |base64 -d`
echo "开始文件传输..........................."

/usr/bin/expect <<EOF
set timeout 3000  #设置文件传输超时时间
spawn  scp  -P 2202  -o StrictHostKeyChecking=no  $package  root@$dst_ip:$dst_dir
expect {
        "*yes/no" { send "yes\r"; exp_continue }
        "*password:" { send "$PASSWD\r" }
}
expect eof
EOF
echo "执行结束..............."

如上所示,在scp远程拷贝文件的场景中,密码交互通过加密方式替代明文密码的传递

02 shell脚本加密处理

base64其实是可以反向解密的,对于此问题,还可以通过对脚本文件进行加密处理,使用某种手段加密,让脚本文件其不可读但是可执行,极大的提高的安全性,这样即使获取了脚本文件,也无法查看脚本的具体内容,获取不到密码,ip地址等信息。

shc加密

它可以将 Shell 脚本编译为可执行的二进制文件。使用 shc,你可以将脚本加密并编译为一个可执行文件,然后在目标系统上直接执行该文件。

首先安装shc工具

yum -y install shc

2.准备shell脚本

在这里插入图片描述

3.将shell脚本加密

语法:shc -f script.sh -o script

[root@knode1 ~]# shc -f upload_file.sh -o upload_file
[root@knode1 ~]# ls -ltr upload_file*
-rwxr-xr-x 1 root root   464 715 16:44 upload_file.sh
-rw-r--r-- 1 root root 19847 715 16:49 upload_file.sh.x.c
-rwxrwxr-x 1 root root 11688 715 16:49 upload_file
[root@knode1 ~]# more upload_file

******** upload_file: Not a text file ********

通过上面的方法,可以将脚本转换成upload_file二进制脚本,并且并不影响脚本的执行

upload_file.sh 是原始的未加密shell脚本,加密后可以直接删除,避免泄露
upload_file 是二进制格式的加密shell脚本
upload_file.x.c 是upload_file.sh文件的C源代码。编译该C源代码以创建上面的加密的upload_file文件。
4.执行效果

[root@knode1 ~]# ./upload_file testrw.dbf
开始文件传输...........................
spawn scp -P 22 -o StrictHostKeyChecking=no testrw.dbf root@10.200.18.101:/opt/package
root@10.200.18.101's password: 
testrw.dbf                                                                                                                                                                     100%  160MB 143.9MB/s   00:01    
执行结束...............

除了shc之外,还可以使用gzexe,upx等工具也可以达到类型的效果,感兴趣的小伙伴可以自己研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/822562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ISO 7637-2 5a/5b抛负载测试保护用TVS二极管,如何选型号?

在国际标准ISO 16750-2颁布之前&#xff0c;全球各大汽车零部件制造商一直采用的是ISO 7637-2标准。ISO 16750-2国际标准发行之后&#xff0c;汽车抛负载浪涌测试中ISO 7637-2 5A和5B测试标准被ISO 16750-2测试标准取代。查看ISO 16750-2和ISO 7637-2国际标准文档资料对比会发现…

matlab编程实践16、17

捕食者与猎物模型 人口增长 在人口增长或衰减的最简单模型中&#xff0c;增长速度或衰减速度与人口本身的数目成正比。增加或减少人口规模会导致出生和死亡数量成比例地增加或减少。在数学上&#xff0c;可以由以下微分方程描述。 可以得出&#xff1a;&#xff0c;其中。 该简…

【mysql】Win10安装配置MySQL8.0简要

下载 MySQL官网下载安装包 安装

SpringBoot复习:(8)SpringBoot中是怎么判断应用类型是Servlet应用还是WebFlux应用?

在SpringApplication的构造方法里&#xff1a; 调用了WebApplicationType类的静态方法deduceFromClasspath, 该方法调用了ClassUtils类的isPresent方法来判断某个类是否能加载成功&#xff0c;首先判断&#xff0c;如果WebFlux相关的类能加载成功&#xff0c;就说明是WebFlux…

VGN N75pro说明书

VGN N75pro说明书 1、封面和最后一页 2、第01、02、03 3、第04 4、第05

可靠性工程师是做什么的?需要哪些能力?

一、可靠性工程师是做什么的&#xff1f; 官方解释&#xff0c;可靠性工程师是通过产品可靠性试验&#xff0c;进行性能评估&#xff0c;并预测如何改进产品或体系的安全性、可靠性、可维护性。 简单来说&#xff0c;客户在使用产品的过程中&#xff0c;会出现各种各样的质量…

【phaser微信抖音小游戏开发005】画布上添加图片

特别注意&#xff1a;真机模拟的时候&#xff0c;尽量使用网络图片资源&#xff0c;不要在小程序源文件里面使用图片&#xff0c;会出现真机加载不成功&#xff0c;小程序包体积过大的问题。我们学习过程中&#xff0c;只是作为演示使用。 推荐使用场景&#xff1a; 背景图片…

【硬件设计】模拟电子基础一--元器件介绍

模拟电子基础一--元器件介绍 一、半导体&#xff08;了解&#xff09;1.1 基础知识1.2 PN结 二、二级管2.1 定义与特性2.2 二极管的分类 三、三级管四、MOS管三、其他元器件管3.1 电容3.2 光耦3.3 发声器件3.4 继电器3.5 瞬态电压抑制器 前言&#xff1a;本章为知识的简单复习&…

安卓手机变身Linux服务器

文章目录 前言一、准备工作1、安卓手机2、下载软件二、开始安装1、检查系统,确认版本并安装2、配置(安卓7.0 及以上的用户忽略此步)3、问题处理【没有异常的小伙伴忽略】总结前言 在实际开发中有很多地方都需要服务器资源,但是服务器资源不论在哪里都是比较紧缺的资源,今…

hashedWheelTimer类

hashedWheelTimer类 目录概述需求&#xff1a; 设计思路实现思路分析1.hashedWheelTimer类 拓展实现 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait …

SQL-初识函数

select concat(宝,我好爱你呀); select lower(hadsjkfhJKHLH); select upper(hadsjkfhJKHLH); select LPAD(爱你,3,我); select rPAD(爱你,3,我); select trim( 吉林省雕刻技法 萨); select SUBSTRING(我曾经跨过山河大海,1,4); select lpad(1,5,00000);show create table …

MedSAM通用医学分割基础模型(2023+Segment Anything in Medical Images)

摘要&#xff1a; MedSAM&#xff0c;这是为通用医学图像分割设计的首个基础模型。利用包含超过一百万张图像的精心策划的数据集的力量&#xff0c;MedSAM不仅优于现有的最先进的分割基础模型&#xff0c;而且表现出与专业模型相当甚至更好的性能。此外&#xff0c;MedSAM能够…

GC基础知识

1.什么是垃圾 c语言申请内存 malloc 释放内存 free c&#xff1a; new delete java&#xff1a; new 自动内存回收 优点&#xff1a;编程上简单&#xff0c;手动释放内存&#xff0c;容易出两种类型的问题&#xff1a; 1.忘记回收 2多次回收 jvm的调优呢&#xff0c;主要就是…

修改conda环境缓存默认路径

前言&#xff1a;conda环境占用的内存太大了&#xff0c;每次建立一个新的虚拟环境都要加5个G差不多。所以想要修改默认的路径 问题1&#xff1a;找不到.condarc文件夹 创建condarc文件命令 conda config --add channels r 修改conda环境缓存默认路径 打开.condarc 添加 en…

Softmax函数个人解读

1 什么是Softmax? S o f t m a x s o f t m a x Softmaxsoft max Softmaxsoftmax&#xff0c;其中 m a x max max就是求最大值的意思&#xff0c;其核心是soft&#xff0c;在英文中soft有软的意思。与之相对应的hardmax&#xff0c;也就是说的在实际中经常求得最大值&#…

【并发专题】手写LinkedBlockingQueue

分析 LinkedBlockingQueue有如下特点&#xff1a; 近乎无界队列&#xff0c;但可以是有界队列实现了BlockingQueue接口需要实现take方法和put方法&#xff0c;实现阻塞效果数据结构是单链表&#xff0c;有head跟last指针来进行入队出队操作有两把锁&#xff0c;读写分离所以也…

linux-MySQL的数据目录

总结&#xff1a; window中的my.ini linux 中 /etc/my.cnfwindow中的D:\soft\mysql-5.7.35-winx64\data linux 中 /var/lib/mysql 1.查找与mysql有关的目录 find / -name mysql [rootVM-4-6-centos etc]# find / -name mysql /opt/mysql /etc/selinux/targeted/tmp/modul…

【Linux命令200例】patch 用于将补丁文件应用到源码中

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜…

glide加载content://com.android.contacts图片源码粗略梳理

获取链路是这样的&#xff1b; UriLoader类里定义了协议头&#xff1a; 里面有个内部类StreamFactory&#xff1a; 通过StreamLocalUriFetcher类的loadResource方法获取InputStream然后把流转换成为图片&#xff1b; 在这里作个草稿笔记给自己看

分布式事务之CAP理论和BASE理论详解

&#x1f680; 分布式事务 &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#x1f3c6;&…