管理者権限のないユーザーにSCManagerへのリモートアクセスを許可する方法
ローカル管理者権限を持たないドメインユーザーや監視システムに対して、リモートサーバー上で稼働しているサービスの一覧を取得できるようリモートアクセス権限を付与する方法を解説します。このタスクの本質は、Service Control Manager(SCManager)へのリモート接続を許可することにあります。
発生する問題
例えば、リモートユーザーや監視システムに、特定のサーバー上のサービス状態を照会させたいとします。当然ながら、このリモートユーザーには管理者権限も、サーバーへローカルログオンする権限もありません。
services.mscコンソールを使ってリモートコンピューターのサービス一覧を取得しようとすると、次のようなエラーが表示されます。
Windows was unable to open service control manager database on computer_name
エラー 5: アクセスが拒否されました。
また、sc.exeでリモートサーバーのサービス一覧を取得しようとした場合は、次のエラーが出力されます。
C:\Windows\system32>sc \\lonts-01 query
[SC] OpenSCManager FAILED 5:
アクセスが拒否されました。
原因:SCMデータベースのセキュリティ記述子
サービス一覧へのアクセスは、Service Control Manager(SCM)データベースのセキュリティ記述子によって制御されています。Windows Server 2003 SP1以降、「Authenticated Users(認証されたユーザー)」によるリモートアクセスは制限されており、リモートからSCMにアクセスできるのは、ローカルのAdministratorsグループのメンバーだけです。これはセキュリティ上、理にかなった仕様です。
ここでは、Windows Server 2012 R2環境において、管理者権限を持たない一般ユーザーでもサービス一覧やステータスを取得できるよう、SCMへのリモートアクセスを許可する手順を紹介します。
現在のSCM権限を確認する
管理者権限でコマンドプロンプトを開き、sc.exeを使用して現在のSCM権限を確認します。
sc sdshow scmanager
このコマンドは、次のようなSDDL文字列を返します。
D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
デフォルトでは、Authenticated Users(AU)グループにはSCMへの接続のみが許可されており、サービスの照会(LC)は許可されていません。この文字列をテキストエディターにコピーしておきます。
対象ユーザー/グループのSIDを取得する
次に、リモートアクセス権を付与したいユーザーまたはグループのSID(Security Identifier)を取得します。ここでは例として、ADグループ「lon-hd」のSIDをPowerShellで取得します。
Get-ADgroup -Identity lon-hd | select SID
SID
---
S-1-5-21-2470146451-39123456388-2999995117-23338978
SDDL文字列の編集と適用
テキストエディター上で、先ほどのSDDL文字列からブロック (A;;CCLCRPRC;;;IU)(IUは対話型ユーザーを意味します)をコピーし、コピーしたブロック内の「IU」を取得したSIDに置き換えます。その後、編集したブロックを「S:」の直前に挿入します。
今回の例では、次のような文字列になります。
D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)(A;;CCLCRPRC;;;S-1-5-21-2470146451-39123456388-2999995117-23338978)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
続いて、sc sdsetコマンドを実行して、SCMのセキュリティ記述子を変更します。
sc sdset scmanager “D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)(A;;CCLCRPRC;;;S-1-5-21-2470146451-39123456388-2999995117-23338978)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)“
[SC] SetServiceObjectSecurity SUCCESS というメッセージが表示されれば、新しいセキュリティ設定が正常に適用されています。これにより、対象ユーザーはローカル認証ユーザーと同等の権限(SC_MANAGER_CONNECT、SC_MANAGER_ENUMERATE_SERVICE、SC_MANAGER_QUERY_LOCK_STATUS、STANDARD_RIGHTS_READ)を獲得します。
動作確認
リモートユーザーがservices.mscコンソールや sc \\srv-name1 query コマンドを使って、サービス一覧とそれぞれのステータスを取得できることを確認してください。
注意点
なお、この設定だけではサービスの管理(開始・停止など)は行えません。各サービスへのアクセスは個別のACLによって制御されているためです。特定のユーザーにWindowsサービスの開始・停止・再起動権限を付与したい場合は、別途該当サービスのACLを設定する必要があります。
ヒント: 標準以外のSCManager権限を設定した場合、その内容はレジストリの HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\Security キーに保存されます。SDDL文字列の作成時にミスをしてしまった場合は、このキーを削除してコンピューターを再起動すれば、権限をデフォルトの状態に戻すことができます。
-
【修正】WordPress「rms-script」リモートアクセスマルウェアの実態と対処法
最近、一部のWordPressサイトにおいて、外部サイトへのリモートアクセスを許してしまうマルウェアが確認されました。このマルウェアは、wp-content/mu-pluginsフォルダ内に配置された複数のPHPファイルに潜んでいることが判明しています。しかも厄介なことに、無料のWordPressセキュリティプラグインでサイトをスキャンしても、異常は一切検出されませんでした。本記事では、このマルウェアの詳細と、感染した場合の具体的な対処方法について詳しく解説します。 rms-scriptマルウェアの挙動 最初に気づくのは、WordPressサイトに奇妙なエラーが表示されることです。このエラーの
-
Windows 10でリモートデスクトップ接続を設定する方法【初心者向けガイド】
物理的に離れた場所にあるパソコンへリモートアクセスすることは、今では珍しいことではありません。この機能によって仕事の効率と生産性が向上し、多くの企業でも積極的に導入が進められています。ただし、リモートアクセス接続の安全性とセキュリティを確保することが非常に重要です。本記事では、Windows 10でリモートデスクトップを設定する具体的な手順を詳しく解説します。 Windows 10でリモートデスクトップアクセスを設定するには? リモートデスクトップアクセス機能は、MicrosoftがWindows OSに標準搭載しているユーティリティです。ただし、この機能はWindowsのProfession