邮箱驱动的自动化AD密码管理系统说明
在日常运维工作中,账户密码重置、启用、禁用、管理员临时授权等操作频繁且重复,既消耗大量时间,也存在人为误操作和安全风险。为提升效率并加强安全管控,我们开发了一套基于邮件触发的自动化账户管理系统,实现“发邮件即可完成运维操作”。
亮点:1、每个用户可以重置自己的域控帐户密码(适时下放权限,减轻运维工作负担);
2、可以授权部分管理员(部门分管人员)重置任意帐户密码(适时授权主备岗部门权限);
3、可以按需要授权哪些用户可以禁用、启用帐户,禁用启用、重置管理员密码(管理相关权限按需配置)。
运维岗位负责人反馈:再也不用出差路上,周末时间打开电脑重置密码了,打开手机一封邮件即可完成密码修改。
本文从用户角度介绍该系统的使用方式与核心能力。
一、系统整体思路
系统以服务邮箱为入口:
用户只需发送指定主题格式的邮件
→ 系统自动识别请求类型
→ 执行对应操作(如重置密码、禁用账号等)
→ 自动回复处理结果
整个流程无需人工介入,实现标准化、自助化处理。
特点:
当天邮件自动处理
每封邮件只执行一次(避免重复操作)
操作结果自动邮件反馈
全过程本地记录与审计
二、支持的主要功能
1. 普通账户密码自动重置
邮件主题示例:
重置密码
邮件正文包含用户邮箱,例如:
[email protected]系统将自动:
提取用户名
生成新密码
执行系统级密码修改
回复结果邮件
密码规则:
随机4位字母(前两位大写)
+
@YYYYMMDDHH
示例:Abcd@2026021014并记录:
当日重置次数
最后一次密码
操作时间
2. 管理员密码重置(高权限控制)
邮件主题:
重置管理员密码
安全机制:
仅允许白名单发件人操作
非授权发件人自动拒绝并提示权限不足
管理员密码格式更严格:
随机字母 + @YYYYMMDD-HHMMSS确保更高安全性与不可预测性。
3. 帐户启用与禁用
支持两种模式:
不修改密码
主题示例:
启用帐户不改密码
禁用帐户不改密码
适用于:
临时冻结
人员离岗
异常风险控制
启用/禁用并重置密码
主题:
启用帐户
禁用帐户
系统会先重置密码,再变更状态。
4. 管理员限时登录保护
用于高风险管理员账号控制。
主题:
添加管理员限时防护登录
系统将限制登录时间,例如:
工作日:仅部分时段允许登录
非工作时间自动禁止
解除限制:
解除管理员限时防护登录
此功能可显著降低夜间攻击风险。
5. 批量新增用户
主题:
添加帐户
正文格式:
username 姓名 部门
username2 姓名 部门系统将自动:
创建AD用户
设置初始密码
返回结果列表
适用于批量入职场景。
三、安全控制机制
系统内置多层安全策略:
1. 发件人白名单
高权限操作仅允许指定邮箱执行,防止滥用。
2. 帐户白名单保护
如:
administrator
system账号
关键服务账号
这些账号禁止:
修改密码
启用/禁用
避免核心服务中断。
3. 防重复执行
系统使用:
IMAP UID唯一标识邮件
当天处理记录
确保:
同一封邮件不会重复执行
4. 当日操作记录
本地文件记录:
日期
已处理邮件UID
每个账号操作次数
最近密码
第二次请求同一账号时,仅返回已生成密码,不重复执行系统命令。
四、使用流程(用户视角)
实际操作非常简单:
步骤1
发送邮件至 IT服务邮箱
步骤2
填写正确主题(如:重置密码)
步骤3
正文写入账号邮箱
步骤4
等待系统自动回复结果
整个过程通常在数秒内完成。
五、带来的价值
1. 效率提升
无需人工登录服务器
无需手工执行命令
批量操作自动完成
2. 安全增强
权限控制
白名单限制
限时登录保护
操作可追溯
3. 运维标准化
所有操作:
流程统一
格式固定
自动记录
可审计
避免人为差错。
4. 支持7×24自助服务
用户随时发送邮件即可处理,减少值班压力。
六、适用场景
员工忘记密码
新员工入职
离职账号冻结
临时权限启用
安全应急处置
管理员风险控制
七、总结
这套系统的核心理念是:
用邮件作为运维接口,用自动化替代人工操作。
它不仅解决了密码重置问题,更构建了一个轻量级的自动化账户管理平台,实现:
快速响应
安全可控
可审计追踪
持续扩展
在实际运维中,这类“邮件即接口”的模式,往往比复杂门户更稳定、更易推广,也更符合企业实际使用习惯。
代码示范:
# -*- coding: utf-8 -*-
"""
邮箱自动重置AD密码脚本(优化版)
"""
import imaplib
import smtplib
import email
from email.mime.text import MIMEText
from email.header import decode_header
import subprocess
import datetime
import random
import string
import re
import json
import os
import sys
# ----------------- 配置区(按需修改) -----------------
IMAP_SERVER = "192.168.20.10"
IMAP_PORT = 993
SMTP_SERVER = "192.168.20.10"
SMTP_PORT = 25
SMTP_USE_SSL = False # 如果你的 SMTP 使用 SSL (port 465),设为 True
SMTP_USE_STARTTLS = False # 如果使用 STARTTLS (通常 port 587),设为 True
EMAIL_ACCOUNT = "[email protected]"
EMAIL_PASSWORD = " test#202509"
RECORD_FILE = os.path.join(os.path.dirname(__file__), "reset_record.json")
# 白名单帐户(只写前缀,不带域名),例如 "admin", "administrator"
WHITELIST_USERS = {"administrator", "admin"}
# -----------------------------------------------------
today_str = datetime.d
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
已在FreeBuf发表 0 篇文章
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)


