2022年1月27日 星期四

【IT Notes】安裝可讓用戶修改AD密碼的網站

之前公司給使用者用AD帳號時都會訂下GPO規則,必須三個月更換一次AD帳密,但是如果使用者沒有在網域內用電腦的話,很有可能會錯過更改密碼的時間,所以以前的作法是提供一兩台公用的網域電腦,讓大家登入進去修改自己的密碼,可是後來又發現這種做法讓很多人非常難理解,簡單說就是還不夠直覺,於是github上面有一些神人就自己弄出了一套以web為UI介面的方式,使用者只要打開網頁,就會知道怎麼自己修密碼,是個很方便的工具。

系統的基本要求很簡單,隨便給4 Core CPU、4 RAM和20GB硬碟就很夠用了,系統選用CentOS 7。

1.先安裝基本需要的幾項套件

# yum update -y
# yum install -y httpd curl git
# yum install python3-pip

(這套系統是用python寫的)

2.安装bottle 

# pip3 install bottle

3.抓取網頁套件

# git clone https://github.com/jirutka/ldap-passwd-webui.git
# cd ldap-passwd-webui 
# pip3 install -r requirements.txt

4.配置網頁設定檔

# cp settings.ini.example settings.ini 
# vi settings.ini


[html] page_title = Change your password for TESR 
\\網頁的title,這裡自行定義
[ldap] 
host = LDAPS://DC1.example.com.tw
port = 636
use_ssl = False
base = dc=example,dc=com,dc=tw
type = ad 
ad_domain = example.com.tw 
search_filter = sAMAccountName={uid}
\\如果認證伺服器是AD,就要按照以上方式設定,特別要注意host和port的設定
[server] 
server = auto 
host = 10.113.112.120
port = 8080
\\最後是本台系統的設定,預設網頁的port是8080


到這邊為止只是將網站架設好,但是能不能透過它去修改AD密碼是另一個重要議題,所以過程還沒有結束。

5.Windows AD上開啟LDAPS憑證

這邊我卡了一陣子,因為一開始的LDAP連線port上面我設定是389,結果想當然根本改不了密碼,還會出現錯誤,原先知道要跟AD主機取得帳戶認證是要透過LDAP 389 port連線,但一般只是向AD取認證,現在要做的是反過來對AD上的帳密做修改,這其實是完全不同的行為,而且對AD來說有高度風險的,所以必須要再到AD主機上開啟LDAPS憑證,這個憑證所對應的port就是636,等到開啟後才能提供外部的系統回來修改使用者密碼。

raise LDAPOperationResult(result=result['result'], description=result['description'], dn=result['dn'], message=result['message'], response_type=result['type'])
ldap3.core.exceptions.LDAPUnwillingToPerformResult: LDAPUnwillingToPerformResult - 53 - unwillingToPerform - None - 00002077: SvcErr: DSID-03190E49, problem 5003 (WILL_NOT_PERFORM), data 0

(沒有啟用LDAPS 636服務而修改密碼的話,會得到上述訊息)

啟用Wondows Server的服務,選「憑證授權單位」

用內建的 ldp.exe 這支程式測試 636 port 連線

若得到此訊息就表示是正常的

不過因為還沒有啟用,所以會先看到這樣的訊息

開始做設定,選擇「開始/Windows 系統管理工具/憑證授權單位」

在憑證範本上面按滑鼠右鍵選擇「管理」, 即可啟動憑證範本主控台

選擇「動作/檢視物件識別碼」, 查看是否有識別碼 1.3.6.1.5.5.7.3.1 的物件

確認該物件有之後, 執行 Microsoft Management Console’ (MMC) , 在搜尋列打 mmc 即可找到這支程式

選擇「檔案/新增或移除嵌入式管理單元」, 然後選擇「憑證」, 接著按下「新增」

接著選擇「電腦帳戶」, 接著按「下一步/完成」


按下「確定」後, 選擇「憑證/個人/憑證」

在憑證上面按滑鼠右鍵, 選擇「所有工作/要求新憑證」

按「下一步」,然後「網域控制站」要打勾, 最後按下「註冊」



接下來用 ldp.exe 再來試試

得到測試結果是成功的,port636憑證可使用了

5.開啟防火牆和關閉SELinux

# firewall-cmd --add-port=8080/tcp --permanent
# firewall-cmd --reload
# vim /etc/selinux/config

SELINUX=disabled

6.測試web修改AD密碼

# python3 app.py
輸入帳號舊新密碼

可見密碼已經修改,這次安裝就表示成功

7.將服務寫入systemd

這麼做的用意是把這套程式寫成可以用systemd去啟用或關閉的服務,因為這支程式只能夠python動態式執行,如果按下Ctrl+C的話,就會讓它終止,如果卡著又不中止就不能夠繼續切回到termianl,所以必須將它變成一個系統服務。

# vim /etc/systemd/system/modipw.service

[Unit]
Description=Change Password
[Service]
Type=simple
ExecStart=/root/ldap-passwd-webui/app.py
Restart=always
[Install]
WantedBy=multi-user.target

# systemctl start modipw
# systemctl enable modipw
這樣網頁就會變成系統服務






2022年1月26日 星期三

【IT Notes】安裝Windows11,並排除「不符合最低系統需求的電腦」錯誤

 安裝最新的Windows11時都會遇到舊系統或主機板TMP規格不符的問題,簡單來說,主機板上沒有TMP2.0晶片的話,在安裝Win11時就會出現問題,但已經有透過修改機碼的方式來避開這個需求的方式。


1. 這時要回到在安裝時出現的第一個畫面,按「Shift + F10」呼叫「CMD 命令指令員」,然後輸入「regedit」以打開「登錄編輯程式」


2. 打開以下路徑 HKEY_LOCAL_MACHINE \ SYSTEM \ Setup

3. 在「Setup」文件夾上按右鍵新增「機碼 (Key)」,並將其命名為「LabConfig」

4. 然後在「LabConfig」內按右鍵新增「DWord 32Bit 值」,並將其命名為「ByPassTPMCheck」

5. 再將「ByPassTPMCheck」內的數值由「0」更改為「1」

6. 之後再新增一條「DWord 32Bit 值」,並將其命名為「BypassSecureBootCheck」,再將「BypassSecureBootCheck」內的數值由「0」更改為「1」

8. 完成後關閉 Regedit 及 CMD 視窗,然後點擊回到上一步按鈕,再點擊「下一步」,即可發現 TPM 檢查已通過

10.最後可以發現剛剛的錯誤訊息已經消失,可以繼續安裝到結束







【IT Notes】透過api移轉Gmail到Exchange

 在雲端裡面串接api不是一件很好學的技術,第一次有機會學習到將GWS的Gmail信件全部轉移到M365的Exchange,其實方法很多種,像以前用的pst檔匯出轉移的方式等,但透過api串接,可以批次和排程轉移,是非常方便且準確的作法。唯一讓人感到困難的是學習成本不小,通常需要...