windows server的時間校正

昨天晚上新北市發生了4級地震, 伺服器出了問題, 確認問題在於NAS資料異常, 於是vm就跟著異常.

我修復完成後, VM陸續啟用, 此時發生主要網域伺服器時間錯誤的問題, 慌忙下先手動更新, 但是沒多久時間又錯亂了, 真是困擾.
於是我想起前一陣子我把主要網域主控從A交棒給B, 然後A退位不再使用, 經過檢查(w32tm /monitor) 發現主要網域伺服器B的時間校正, 居然參考A, 而A未開機, 難怪出問題.

最後將B的參考主機改成外面的時間服務器, 就一切正常了.

w32tm /config /manualpeerlist:"0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org" /syncfromflags:manual /reliable:yes /update


當然其他C,D擔任副網域伺服器, 應該設定成主要網域伺服器B的ip, 並不需要參考外面的時間服務器, 這樣就可以讓所有的網域服務器時間都一致了.

網域主控如何限制win 10的microsoft store app

windows 10帶來了新的app安裝方式 microsoft store, 有點類似 mac 的store ,
但是網域主控卻無法針對其中的app進行管控(除非全部都用win10 enterprise), 這對資訊安全有一定程度的影響,
畢竟漏洞多, 容易被入侵.
因此早期都採用整個microsoft store阻擋的方式, 禁用全部的app

但是問題來了, 有些好用的app也因次被鎖住無法使用, 這很是困擾
因此我來個土法煉鋼的方式, 避開microsoft的app(除了microsoft開頭字眼的app外,全部限制),
有點粗暴, 但目前也想不出好方法

,

powershell 寄送email(tls, port 587)

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true }
$EmailToAddresses = @("test1@test.com", "test2@test.com")
$EmailTo = ""
$EmailFrom = "it@test.com"
$Subject = "subjects"
$Body = "FYI"
$SMTPServer = "192.1.2.1"
$filenameAndPath = "C:\sayhello\sayhello.csv"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
foreach ($EmailTo in $EmailToAddresses)
{
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient.Send($SMTPMessage)
}

advanced installer 匯入vs 2019 出現 System.Runtime.CompilerServices.Unsafe 錯誤

好久沒有打包自己開發的程式,尤其是msi 或是 msix 方便讓網域主控站派送,
因此試用了advanced installer 17.5, 欲藉由匯入visual studio 2019 專案, 打包成msi檔案,

但是出現了,以下錯誤,

.ctor could not load file or assembly system.runtime.compilerservices.unsafe 4.0.4.1

原以為是vs的問題, 後來爬文終於找到解法, 這個問題似乎出現很久, advanced installer 呈現已知但是無解的狀態,看來真的很複雜.
步驟1. 安裝.net framework 4.7.2 (請與vs專案參考版本同步)
步驟2. 以管理者身分執行, developer command prompt for vs 2019

developer command prompt for vs 2019

步驟3. 輸入以下指令(請與vs專案參考版本同步)

gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Runtime.CompilerServices.Unsafe.dll"

gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Numerics.Vectors.dll"

老派的outlook 使用習慣

我個人很喜歡老派這個字, 英文叫做 old school


周遭的人有好多好多老派的人, 他們不喜歡網頁版郵件, 只習慣使用單機版的outlook收發信件, 作業系統更是windows不做他想.
因為公司多了一個越南廠, 考量初期VPN自架, 不作為主力, 該廠的通訊錄就無法透過vpn, 以LDAP方式分享 .

可是outlook通訊錄就只有兩種 : MAPI, LDAP
MAPI可以是離線版, LDAP必須連線才能使用

偏偏老派的做風就是: 離線也要能寫寫郵件, 看看郵件(pop3完全下載), 與存取完整的通訊錄

這下好了, 我得準備離線版的通訊錄, 爬文好幾天, 終於找到一個方式跟大家分享:

  1. 網域伺服器新增排程, 可下指令自動產生csv版本的通訊錄
  2. 自己開發一個app , 方便老派的人使用, 將csv檔案自動匯入到outlook通訊錄

網域伺服器上, 可透過powershell執行指令,匯出csv通訊錄

Get-ADUser -Filter 'mail -like "*<domain>"' -SearchBase "<search base>" -Properties * | Select -Property DisplayName,GivenName,Surname,mail,Title,Department,Office | Export-CSV "<csv file location>" -NoTypeInformation -Encoding UTF8

以test.com為例子

Get-ADUser -Filter 'mail -like "*test.com"' -SearchBase "OU=taipei,DC=test,DC=com" -Properties * | Select -Property DisplayName,GivenName,Surname,mail,Title,Department,Office | Export-CSV "c:\aaa.csv" -NoTypeInformation -Encoding UTF8

我開發的windows app, 使用visual studio 2019 community version , 語言使用vb

https://github.com/WilliamFromTW/ImportFromCsvToOutlook
https://github.com/WilliamFromTW/ImportFromCsvToOutlook/releases

因為時間不多, 未來也不打算花太多時間在通訊錄上面, 爬文的過程只能找到零星vba for outlook版本或是程式片段, 四處碰壁, 無人可以解答, 頂多就是要你教老派的人, 使用outlook匯出匯入功能, 一堆步驟, 將csv檔案匯入到outlook, 這簡直是天方夜譚.
因此就自行開發,並且開源, 這樣直接編譯成可安裝執行的APP, 讓他們透過定期提供的csv檔案, 就能很方便匯入通訊錄了.

(docker)透過Web修改Active Directory密碼-PWM

微軟的網域主控站非常好用, 尤其用來管控帳號密碼.
但是修改密碼,就必須透過加入網域的主機才能修改, 有點不方便,
尤其有些人的電腦並沒有加入網域, 要是想改密碼更是麻煩.

基於APACHE 2.0授權的 https://github.com/pwm-project/pwm 就能協助我們修改密碼.

簡易安裝步驟:



確認AD安裝certificate service


產生ad自己的證書(需要有private key) , 否則無法使用port 636 + tls 加密方式連線


安裝


1. 下載做好的container
https://www.pwm-project.org/artifacts/pwm
下載最新版docker images .tar 檔案
如:
wget https://www.pwm-project.org/artifacts/pwm/build/2020-08-20T23_36_49Z/pwm-docker-image-2.0.0-SNAPSHOT.tar

2. 安裝
docker load --input=pwm-docker-image-2.0.0-SNAPSHOT.tar

3. docker 執行
docker run -d --name pwm -p 8443:8443 --restart always --dns=<active directory ip> -v "/opt/pwm/config/:/config/" pwm/pwm-webapp

4. 登入進行第一次安裝設定
https://ip:84443/


安裝過程注意事項:


1. 連線要用加密的方式,否則無法改密碼
2. 要提供管理者群組的LDAP
如:
CN=Domain Admins,CN=Users,DC=test,DC=com
3. 因為PWM額外提供安全提問, 這些提問並不是Active Directory原本的, 需要另外提供空間,此時請選擇local db存放.
其實這不是很重要, 忘了密碼,還能在域控直接修改

安裝成功後, 請先用管理者帳號登入, 登入時需要額外設定忘記密碼的安全提問(管理者可直接跳過),
此時要選擇修改設定檔案, 將修改密碼的複雜度降低(但不可低於原本網域設定), 我是順便將安全提問改成一個就好.

搭配httpd reverse proxy


需修改SiteURL,改完需要重開pwm才能生效
這種方式可以讓網址擁有正式的加密證書(e.g. let's encrypt)

快速新增網域ldap通訊錄(outlook 2016)

以前要新增ldap通訊錄,非常麻煩, 一堆設定, 昨天找了一些資源, 包括想要從registry方面下手都失敗, 好險有人寫了一個超方便的程式, 可以快速新增ldap 通訊錄, 感謝啊!

https://github.com/andreighita/MAPIToolkit

官網很詳細寫了說明, 我也整理了一下給大家下載

1 ... 3 4 5 6