👏

Windows 調査コマンド

2023/12/07に公開

使用しているパソコンが接続しているADサーバとldap通信かldaps通信かを判断

nltest /dsgetdc:yourdomain.com
  • DsGetDcName 関数が使用され、ADサーバとの通信に関する情報が表示されます。
  • 表示される情報の中に LDAP または LDAPs といったキーワードがあれば、それが通信プロトコルの情報です。
# Ldap確認
([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).DomainControllers
# LDAPS確認
([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).DomainControllers | ForEach-Object {
    $dc = $_
    $dcname = $dc.Name
    $dcip = [System.Net.Dns]::GetHostAddresses($dcname)[0].IPAddressToString
    $ldapsport = 636  # LDAPSポート番号
    try {
        $tcpclient = New-Object System.Net.Sockets.TcpClient
        $tcpclient.Connect($dcip, $ldapsport)
        Write-Host "$dcname is reachable over LDAPS"
    }
    catch {
        Write-Host "$dcname is not reachable over LDAPS"
    }
    finally {
        if ($tcpclient) {
            $tcpclient.Close()
        }
    }
}
  • このPowerShellスクリプトは、DomainControllers プロパティを使用してドメインコントローラの情報を取得し、LDAPS通信が可能かどうかを確認します。
  • try-catch ブロックを使用して、LDAPSポート(通常は636)への接続を試み、成功した場合はメッセージを表示します。
$domainControllers = ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).DomainControllers; $ldapsPort = 636; $domainControllers | ForEach-Object { $dc = $_; $dcName = $dc.Name; $dcIp = [System.Net.Dns]::GetHostAddresses($dcName)[0].IPAddressToString; try { $tcpClient = New-Object System.Net.Sockets.TcpClient; $tcpClient.Connect($dcIp, $ldapsPort); Write-Host "$dcName is reachable over LDAPS"; } catch { Write-Host "$dcName is not reachable over LDAPS"; } finally { if ($tcpClient) { $tcpClient.Close(); } } }

ldap や ldapsが使用しているport

  • デフォルト
    • LDAP: 389
    • LDAPS: 636
dsquery * "cn=configuration,dc=yourdomain,dc=com" -scope base -attr ldapport ldapsport
  • このコマンドは、指定したドメイン (yourdomain.com 部分を適切なものに置き換えてください) のLDAPポートとLDAPSポートを取得します。
(Get-ADObject (Get-ADRootDSE).configurationNamingContext -Properties ldapService) | Select-Object -ExpandProperty ldapService
  • このPowerShellコマンドも同じく、LDAPポートとLDAPSポートを表示します。同様に、 yourdomain.com の部分を適切なものに変更してください。

Windows Firewallの設定状況を確認

netsh advfirewall show allprofiles
  • このコマンドは、現在のプロファイル(ドメイン、プライベート、パブリック)に対するファイアウォールの設定を表示します。
Get-NetFirewallProfile | Format-Table Name,Enabled
  • これは、有効なファイアウォールプロファイルとその状態(有効または無効)を表示します。

DomainのInboundUserNotificationを無効にする

Set-NetFirewallProfile -Profile Domain -InboundUserNotification Disabled
  • このコマンドは、ドメインプロファイルに対してInboundUserNotificationを無効にします。
Set-NetFirewallProfile -Profile Domain -InboundUserNotification Enabled

NetBIOS over TCP/IP を有効にする

netsh interface tcp set global netbt enabled
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces\Tcpip_{YourNetworkInterfaceGUID}" -Name "NetbiosOptions" -Value 0

逆に、NetBIOS over TCP/IP を無効にする

netsh interface tcp set global netbt disabled
  • 変更が反映されるには、一度ネットワーク接続を再起動するか、再接続する必要があります。
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces\Tcpip_{YourNetworkInterfaceGUID}" -Name "NetbiosOptions" -Value 2
  • {YourNetworkInterfaceGUID} の部分は、対象のネットワークインターフェースのGUIDに置き換えてください。これにより、対象のネットワークインターフェース上で NetBIOS over TCP/IP の有効化または無効化が行われます。変更が反映されるには、一度ネットワーク接続を再起動するか、再接続する必要があります。

ネットワークインターフェースのGUID

  • ネットワークインターフェースのGUID(Globally Unique Identifier)は、各ネットワークインターフェースに一意に割り当てられる識別子です。これは通常、レジストリや設定ファイルなどで使用され、同じコンピュータ上の異なるネットワークインターフェースを区別するために利用されます。

ネットワークインターフェースのGUIDを確認する

Get-NetAdapter
  • このコマンドにより、システムに存在するネットワークアダプタの一覧が表示されます。それぞれのアダプタの中には InterfaceDescription や Name などのプロパティがあり、これを参照して該当のネットワークインターフェースを特定できます。

  • 例えば、"Wi-Fi" という名前のネットワークインターフェースのGUIDを取得する場合は、次のようにします:

(Get-NetAdapter -Name "Wi-Fi").InterfaceGuid
  • このIDを使って、先程のNetBIOS over TCP/IPの設定を行います。

ネットワーク接続の再起動や再接続を行う

ネットワーク接続の再起動:

ipconfig /release
ipconfig /renew
  • これにより、ネットワーク接続が解放され再取得されます。

ネットワーク接続の再起動:

Restart-NetAdapter -InterfaceAlias 'YourNetworkInterfaceAlias'
  • ここで、YourNetworkInterfaceAlias は、再起動したいネットワークインターフェースのエイリアス名に置き換えてください。ネットワークインターフェースのエイリアス名は Get-NetAdapter コマンドで確認できます。

  • 例えば、Wi-Fiの場合:

Restart-NetAdapter -InterfaceAlias 'Wi-Fi'
  • これにより、ネットワーク接続が再起動されます。

Discussion