校园网站建设方案模板,河南专业网站建设招聘,微信公众号链接的网站怎么做,广州网络推广营销转载请注明出处#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 目录
背景说明
开始操作
修改密码 背景说明 有些用户为了图方便或者初始创建用户默认设置等原因#xff0c;会将密码设置为与用户名相同#xff0c;但这就使得非常不安全。甚至如果该用户具有sudo权限#… 转载请注明出处小锋学长生活大爆炸[xfxuezhagn.cn] 目录
背景说明
开始操作
修改密码 背景说明 有些用户为了图方便或者初始创建用户默认设置等原因会将密码设置为与用户名相同但这就使得非常不安全。甚至如果该用户具有sudo权限那这服务器就是台肉鸡。所以要检查哪些账号存在这种情况。 对于自动撤销sudo权限可以看这个【技巧】Ubuntu临时授予用户sudo权限并在一定时间后自动撤销 开始操作 在你要执行脚本的服务器上先安装库
sudo apt install expect -y
sudo apt install sshpass -y 编写脚本
vim check_user.sh 脚本内容注意SSH_HOST可以改成其他服务器ip这样就不需要把脚本复制到每一台服务器上去运行了
#!/bin/bash# 输出文件
OUTPUT_FILEsuccessful_ssh_logins.txt# 清空输出文件$OUTPUT_FILE# 默认值,定义 SSH 主机和端口
SSH_USERroot
SSH_HOST127.0.0.1
SSH_PORT22
# 在本地机器上获取 IP 地址
MY_IP$(curl -s http://ipinfo.io/ip)
echo 本地IP地址: $MY_IPwhile getopts :u:h:p: opt; docase $opt inu) SSH_USER$OPTARG ;;h) SSH_HOST$OPTARG ;;p) SSH_PORT$OPTARG ;;\?) echo Invalid option -$OPTARG 2 ;;:) echo Option -$OPTARG requires an argument. 2 ;;esac
done# 临时禁用命令历史
original_histfile$HISTFILE
unset HISTFILE
# 获取密码
read -p 请输入你的SSH密码: SSHPASS
export SSHPASS# 登录到服务器并使用 sshpass 添加 fail2ban 白名单, 使用 -S 选项使 sudo 从标准输入读取密码并使用 echo $SSHPASS 来提供该密码
echo 登录$SSH_HOST添加fail2ban白名单
sshpass -e ssh -o StrictHostKeyCheckingno -o UserKnownHostsFile/dev/null -p $SSH_PORT $USER$SSH_HOST if grep -q ^ignoreip /etc/fail2ban/jail.local; thenecho $SSHPASS | sudo -S sed -i /^ignoreip / s/$/ $MY_IP/ /etc/fail2ban/jail.local;elif grep -q ^#ignoreip /etc/fail2ban/jail.local; thenecho $SSHPASS | sudo -S sed -i s/^#ignoreip 127.0.0.1\\/8 ::1/ignoreip 127.0.0.1\\/8 ::1 $MY_IP/ /etc/fail2ban/jail.local;elseecho ignoreip 127.0.0.1/8 ::1 $MY_IP | echo $SSHPASS | sudo -S tee -a /etc/fail2ban/jail.local;fi;echo $SSHPASS | sudo -S service fail2ban restart;
# 使用 sshpass 获取/home下的所有用户
USERS$(sshpass -e ssh -o StrictHostKeyCheckingno -o UserKnownHostsFile/dev/null -p $SSH_PORT $USER$SSH_HOST ls /home)# 遍历每个用户
for cUSER in $USERS; do# 输出当前尝试的用户名echo [$SSH_HOST]当前尝试登录账户: $cUSER...# 使用expect工具自动登录 SSHLOGIN_RESULT$(expect -c spawn ssh -o StrictHostKeyCheckingno -o UserKnownHostsFile/dev/null -p $SSH_PORT $cUSER$SSH_HOSTexpect {# Handle the known hosts warning\Are you sure you want to continue connecting (yes/no)?\ {send \yes\r\expect \password:\send \$cUSER\r\}# Handle the password prompt directly\password:\ {send \$cUSER\r\}}expect {\Permission denied, please try again.\ { puts \Failed: $cUSER\ }\$cUSER\ { puts \Success: $cUSER\ }default {puts \在登录 $cUSER 用户时候遇到了未知错误:\puts \---\puts \$expect_out(buffer)\puts \---\}} 2/dev/null)# 使用expect工具自动切换用户#LOGIN_RESULT$(expect -c #spawn su - $cUSER#expect {# \Password: \ {# send \$cUSER\r\# expect {# \su: Authentication failure\ { puts \Failed: $cUSER\ }# \$USER\ { puts \Success: $cUSER\ }# default { puts \Unknown response for user: $cUSER\ }# }# }#}# 2/dev/null)# 如果成功输出成功消息#echo $LOGIN_RESULTif echo $LOGIN_RESULT | grep -q Success; thenecho Login successful for user: $cUSERecho $cUSER $OUTPUT_FILEfidone#echo 登录$SSH_HOST解除fail2ban对本机的ban
#echo $SSHPASS | sshpass -e ssh -o StrictHostKeyCheckingno -o UserKnownHostsFile/dev/null -p $SSH_PORT $USER$SSH_HOST sudo -S fail2ban-client unban $MY_IP
# 登录到服务器并使用 sshpass 启动 fail2ban 服务,使用 -S 选项使 sudo 从标准输入读取密码并使用 echo $SSHPASS 来提供该密码
echo 登录$SSH_HOST移除fail2ban白名单
sshpass -e ssh -o StrictHostKeyCheckingno -o UserKnownHostsFile/dev/null -p $SSH_PORT $USER$SSH_HOST if grep -q ^ignoreip /etc/fail2ban/jail.local; thenecho $SSHPASS | sudo -S sed -i s/ $MY_IP//g /etc/fail2ban/jail.local;echo $SSHPASS | sudo -S sed -i s/$MY_IP //g /etc/fail2ban/jail.local;fi;echo $SSHPASS | sudo -S service fail2ban restart;
# 删除 SSHPASS 变量以确保密码不会留在环境中
unset SSHPASS
# 恢复命令历史记录
export HISTFILE$original_histfileNUM_SUCCESS$(wc -l $OUTPUT_FILE)
echo 脚本已完成, 共查出[$NUM_SUCCESS]个用户, 请检查输出的结果文件: $OUTPUT_FILE .
echo $OUTPUT_FILE 文件中的内容为:
cat $OUTPUT_FILE 运行示例
sh check_user.sh
sh check_user.sh -p 8022
sh check_user.sh -h xxxxxx
sh check_user.sh -h xxxxxx -p 8022
sh check_user.sh -u root -h xxxxxx -p 8022 结果示例 修改密码 上面脚本最后得到了用户名和密码相同的账号。现在需要对这些账号修改密码修改规则为“原密码xxx”。
#!/bin/bash# 之前的脚本中记录用户名的文件
OUTPUT_FILE/path/to/your/output/file# 使用 SSH 连接到远程服务器
echo $SSHPASS | sshpass -e ssh -o StrictHostKeyCheckingno -o UserKnownHostsFile/dev/null -p $SSH_PORT $USER$SSH_HOST while IFS read -r USER; do# 构建新密码NEW_PASS\\$USERxxx\# 更改密码echo -e \\$USER\n\$NEW_PASS\ | sudo -S passwd \$USERdone $OUTPUT_FILE