最近对维护的几个内部平台做了下安全升级,不仅有限制IP访问,还对web密码也做了定期更新。
整理了下发现几个平台修改密码的方式也不一样,有直接明文密码修改conf文件的,有md5加密后修改conf文件的,还有是md5加密后修改mysql数据库的。
定期手动去改不是一个运维该做的事。于是就想到了通过ansible下放shell脚本结合crontab方式进行定期修改。源码如下:
#/bin/bash function pwd() { #生成密码文件 newpwd=`mkpasswd -l 8 -s 0 >pwd` #把密码文件传输到对应需要修改密码的机器上,这边目前还没有想到更好的方法实现,所以只能用最简单的scp方式了 scp ./pwd root@192.168.0.11:/tmp scp ./pwd root@192.168.0.12:/tmp scp ./pwd root@192.168.0.10:/tmp } #直接通过明文方式修改密码 function host1() { #获取旧密码 host1_oldpwd=`cat /usr/local/host1/config.py |egrep "PASSWORD" |egrep -v "DBPASSWORD" |awk -F \' '{print $2}'` host1_newpwd=`cat /tmp/pwd` #直接在config文件中修改密码 sed -i "s/'"$host1_oldpwd"'/'"$host1_newpwd"'/g" /usr/local/host1/config.py rm /tmp/pwd -rf } #通过md5加密方式修改密码 function host2() { host2_newpwd=`cat /tmp/pwd` host2_md5pwd=`echo -n $host2_newpwd | openssl md5` #获取旧密码 host2_oldpwd=`cat /usr/local/host2/conf/users.php |grep administrator |awk -F ':' '{print $2}'` sed -i "s/'"$host2_oldpwd"'/'"$host2_md5pwd"'/g" /usr/local/host2/conf/users.php rm /tmp/pwd -rf } #t通过md5加密方式修改数据库密码 function host3() { host3_newpwd=`cat /tmp/pwd` #获取加密后的密码 host3_md5pwd=`echo -n $host3_newpwd | openssl md5 | awk -F " " '{print $2}'` USER="root" PASS="123456" DB_NAME="test" UPDATE_PWD="update users set passwd='$host3_md5pwd' where userid = '1'" /usr/local/mysql/bin/mysql -u ${USER} -p${PASS} -D ${DB_NAME} -e "${UPDATE_PWD}" rm /tmp/pwd -rf } while [ $1 ]; do case $1 in '--host1' | 'host1' ) host1 exit ;; '--host2' | 'host2' ) host2 exit ;; '--host3' | 'host3' ) host3 exit ;; '--pwd' | 'pwd' ) pwd exit ;; esac done
运行命令:
$ autopwd.sh pwd #先生成密码文件 $ ansible -i host host1 -m script -a '/opt/autopwd.sh host1' $ ansible -i host host2 -m script -a '/opt/autopwd.sh host2' $ ansible -i host host3 -m script -a '/opt/autopwd.sh host3' #把上面命令加到crontab中去即可
host文件内容:(这样按类别分开,ansible就能实现指定机器运行)
[host1] 192.168.0.10 [host2] 192.168.0.11 [host3] 192.168.0.12

聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客
2017年5月24日 下午4:11 沙发
您好,您的网站做的很不错,很漂亮,我已经收藏了,方便我随时访问.
2017年5月26日 下午3:44 1层
@电动螺旋压力机 谢谢