1. WEFを構成する

1. WEFを構成する
  • SCOM 2012 サーバーがあります。

  • PCIコンプライアンスのためのSNAREエージェントがあります。しかし、今ではネイティブ機能を使用してすべてのWindowsサーバーのすべてのイベントを収集することでコストを節約したいと考えています。

  • また、SYSLOG を実行する集中 Linux サーバーも用意しており、ログをログ保存アプライアンスに集約します (これはすべて PCI の目的のためです)。

したがって、私の質問は次のとおりです。

Windows サーバー (SCOM 2012) は、イベント ログを Linux syslog サーバーに転送できますか? これは、標準のフラット ファイル形式または同様の形式に従うことで実行されると思います。

ありがとう

答え1

Windows では Syslog エージェントが提供されていないため、Syslog エージェントを使用する必要があります。

...Windows OS には、syslog データを syslog サーバーに送信できる syslog エージェントが含まれていません。syslog エージェントがないと、Windows OS は syslog サーバーに syslog メッセージを送信できないだけでなく、Windows OS で実行されているアプリケーション (Web サーバーやデータベースなど) から syslog メッセージを送信することもできません。

ソース

そのソースページと「Windows Syslog Agent」を Google で検索試すことができるさまざまな Syslog エージェントを提供します。

答え2

NXLog にはコミュニティ エディションがあるので、Linux サーバーで NXLog を試して、Windows からネイティブ WEF イベントを受信し、それを syslog サーバーに転送することもできます。現時点では、これを試すリソースがありません。NXLog が syslog に転送する前に WEF をテキストに変換できるほどスマートであれば、うまくいく可能性がありますが、そうでない場合は、バイナリ ノイズが syslog に散りばめられる可能性があります。うまくいった場合は、ぜひ報告してください。

1. WEFを構成する

[ https://adamtheautomator.com/windows-event-collector/ ]

  • グループ ポリシー管理コンソールを使用して GPO を作成します。GPO 内で、[コンピューターの構成] → [ポリシー] → [管理用テンプレート] → [Windows コンポーネント] → [イベント転送] → [ターゲット サブスクリプション マネージャーの構成] に移動します。
  • ターゲット サブスクリプション マネージャーの値をコレクターの WinRM エンドポイントに設定します。サーバーは次の形式で設定します。
    • サーバー=http://ホスト名:5985/wsman/SubscriptionManager/WEC、更新=60

2. NXLog を構成する:

(NXLogに送信するWEF設定は以下からコピーされましたここただし、実際の転送を行うには、この SE の回答の下部にある私の設定を参照してください)

Active Directoryドメインユーザーを作成してマップする

Linux マシン上の WEC サーバーが Kerberos 認証を使用できるようにするには、対応するユーザーを Active Directory に作成し、Kerberos プリンシパル名にマップする必要があります。

On the domain controller, create a new user with its logon name matching the hostname of the WEC server.

    Go to Administrative Tools > Active Directory Users and Computers > example.com > Users.

    Right click and choose New > User.

        First name: linux-wec

        Full name: linux-wec

        User logon name: linux-wec

        Set a password for the user.

        Uncheck User must change password at next logon.

        Check Password never expires.

    Right click on the new user, click Properties, and open the Account tab.

        Check This account supports Kerberos AES 128 bit encryption.

        Check This account supports Kerberos AES 256 bit encryption.

On the DNS server, create an A record for linux-wec.example.com.

    Go to Administrative Tools > DNS > Forward Lookup Zones > example.com.

    Right click and choose New Host (A or AAAA)….

    Add a record with name linux-wec and IP address 192.168.0.3.

    Check the Create associated pointer (PTR) record option.

Back on the domain controller, open a command prompt and execute these commands. Use the same <password> that was specified when the above user was created. These commands map the domain account to the Kerberos principal names and generate two keytab files containing the shared secret.

> ktpass /princ hosts/[email protected] /pass <password> /mapuser EXAMPLE\linux-wec -pType KRB5_NT_PRINCIPAL /out hosts-nxlog.keytab /crypto AES256-SHA1

> ktpass /princ http/[email protected] /pass <password> /mapuser EXAMPLE\linux-wec -pType KRB5_NT_PRINCIPAL /out http-nxlog.keytab /crypto AES256-SHA1

Copy the resulting hosts-nxlog.keytab and http-nxlog.keytab files to the WEC server.

WEC サーバーで Kerberos を構成する

Active Directory ユーザーが作成され、プリンシパル名にマップされたので、WEC サーバーを Kerberos 認証用に構成できます。

Confirm that the Kerberos krb5 client and utility software are installed on the WEC server. The required package can be installed with yum install krb5-workstation or apt install krb5-user.

Edit the default Kerberos configuration file, usually located at /etc/krb5.conf.

    In section [domain_realm] add:

    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM

    In section [realms] add:

    EXAMPLE.COM = {
     kdc = example.com
     admin_server = example.com
    }

Use ktutil to merge the two keytab files generated above.

# ktutil
ktutil:  rkt /root/hosts-nxlog.keytab
ktutil:  rkt /root/http-nxlog.keytab
ktutil:  wkt /root/nxlog-result.keytab
ktutil:  q

Validate the merged keytab.

# klist -e -k -t /root/nxlog-result.keytab
Keytab name: FILE:/root/nxlog-result.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   5 17.01.2021 04:20:08 hosts/[email protected] (aes256-cts-hmac-sha1-96)
   4 17.01.2021 04:20:08 http/[email protected] (aes256-cts-hmac-sha1-96)

Either copy the keytab into place, or merge it if there are already keys in /etc/krb5.keytab.

    To copy the keytab:

    # cp /root/nxlog-result.keytab /etc/krb5.keytab

    To merge the keytab and validate the result:

    # ktutil
    ktutil:  rkt /etc/krb5.keytab
    ktutil:  rkt /root/nxlog-result.keytab
    ktutil:  wkt /etc/krb5.keytab
    ktutil:  q

    # klist -e -k -t /etc/krb5.keytab
    Keytab name: FILE:/etc/krb5.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       <other entries>
       5 17.01.2021 04:20:08 hosts/[email protected] (aes256-cts-hmac-sha1-96)
       4 17.01.2021 04:20:08 http/[email protected] (aes256-cts-hmac-sha1-96)

Verify that the user account used by the NXLog service has sufficient privileges to open and read the /etc/krb5.keytab file. If not, Kerberos authentication will fail.

Test that the authentication with Active Directory is working successfully when using the keytab. Run the following command on the Linux WEC server. If the configuration is correct a ticket-granting ticket (TGT) will be created and cached. This command should be invoked with the same user that the NXLog service runs as. By default, it uses the nxlog user account.

# kinit -kt /etc/krb5.keytab http/[email protected]

Verify the ticket was obtained by running klist as the same user from the previous step:

# klist
Ticket cache: KCM:0
Default principal: http/[email protected]

Valid starting     Expires            Service principal
28/01/21 11:41:44  28/01/21 21:41:44  krbtgt/[email protected]
        renew until 04/02/21 11:41:44

#3 この NXLog 構成を使用して Windows を Syslog にプロキシします。

# Recieve from native WEF:
<Input windows_events>
    Module              im_wseventing
    Address             https://linux-wec.example.com:5985/wsman
    ListenAddr          0.0.0.0
    Port                5985
    HTTPSCertFile       /path/to/server-cert.pem
    HTTPSCertKeyFile    /path/to/server-key.pem
    HTTPSCAFile         /path/to/ca-cert.pem
    <QueryXML>
        <QueryList>
            <Query Id="0">
                <Select Path="Application">*</Select>
                <Select Path="Security">*</Select>
                <Select Path="System">*</Select>
            </Query>
        </QueryList>
    </QueryXML>

    # Log connections for testing and troubleshooting
    LogConnections      TRUE
</Input>

# Send it to a syslog server:
<Output udp>
    Module  om_udp
    Host    192.168.1.1:514
</Output>

# (or using the syntax prior to NXLog EE 5,
# where the port is defined in a separate directive.)
#<Output udp>
#    Module  om_udp
#    Host    192.168.1.1
#    Port    514
#</Output>

# Route WEF to UDP
<Route uds_to_udp>
    Path    im_wseventing => udp
</Route>

関連情報