Windows Serverのログ保存用Syslogサーバ(QNAP 利用)構築

Syslog用にサーバ機器を買いたくないけどWindowsServerのログ用のSyslog Serverを構築したいと引き合いがあったので、ぱっと思いついた閃きの最安構成を考えてみました。業務利用は考慮していないのであしからず。

# 全体機器構成
今回はSyslogサーバとして、QNAP製NASを利用します。NASをファイルサーバとして利用している企業はあると思いますがQNAP NASにはSyslogサーバとしての機能もあります。
Windows ServerのログとCisco L3Switchのログ（ついでに）をSyslogサーバとして設定したQNAPに送り込む構成となります。
図にするとこんな感じです。

![全体構成_NXLog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/b11a6d62-af9c-592e-5776-e1fd73437427.png)

## 用意した機器
・Syslog server =QNAP TS-431XU-RP(QTS 5.0.1)
・Windows Server2022
・Cisco Catalyst 3750（L3 Switch）

# 今回のゴール
Windows Serverのログ(EventViewの内容）とCisco L3SwitchのログがQNAP Syslog管理画面で閲覧できるようにする。
具体的にはこんな感じでログを表示させたいと思います。

[Cisco機器のログ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/2a0bd284-2d0a-eb0c-da5b-ff0e623e3843.png)

[Windowsのログ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/2a729e2d-47ac-f7e7-45f9-08eb64c9c39d.png)

決して見やすログ情報ではないので、送信側でチューニングしてください...

# 前提条件・免責事項
・ログ解析や機器監視などの運用を想定した構成ではなく、とりあえずSyslogを溜めて、データを閲覧できるだけです。※業務利用するならちゃんとしたSyslogソフト製品を購入しましょう。
・Windowsの標準機能ではSyslogの送信機能がないので、NXLogをインストールして利用します
・Syslogを受信できる環境の構築（受信側）がメインで、どのようなログを送信するか（送信側）は最低限の設定だけです



## 手順
① QANPでSysloサーバ機能の有効化と受信ポートの設定
② Windows ServerにNXLogをインストール、Syslog送信設定
③ CiscoスイッチでSyslog送信設定
④ QNAP側でSyslogの確認

## やってみた

### ① QANPでSysloサーバ機能の有効化と受信ポートの設定
QNAP WebUIにログインし、「コントロールパネル」の「アプリケーション」内の「Syslogサーバー」をクリックします。


![スライド2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/c271f260-4537-b7d9-7bbe-6b4de368394c.png)

デフォルトだと「Syslogサーバーを有効にする」にチェックが入っていないので、チェックを入れてポート番号を入力します。※デフォルトは514

![スライド3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/ad6565b2-853f-9f7c-7053-52aaa0981a4d.png)

QNAP側設定は以上です。


### ② Windows ServerにNXLogをインストール、Syslog送信設定
以下サイトからNXLogをインストールします。

https://nxlog.co/downloads/nxlog-ce#nxlog-community-edition

Enterprise版(有料版）とCommmunity Edition(無料版)がありますが無料版を選択します。



![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/56fd18a0-9e00-a76d-0db5-0c4386d0daf6.png)

インストール設定は特に何も変更することなく、「はい」を連打して、進めてください。
デフォルトだとC:\ProgramFilesにフォルダができ、その中のconfフォルダの中にnxlog.confが作成されます。
![スライド5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/669194ef-0459-bba2-d2dd-c8446f0768ef.png)


nxlog.confがNXLogの設定ファイルですのでこのファイルをテキストで開き、中身を修正していきます。※修正する前にバックアップは取得しましょう


今回の環境では以下のように修正しました。


    # NXLog Community Edition configuration file
    #
    # For more information see "C:\Program Files\nxlog\conf\nxlog.conf"
    # or latest version online at https://nxlog.co/docs/nxlog-ce/nxlog-reference-manual.html
    # If you experience problems, see https://nxlog.co/community-forum


    #### DEFINE ####

    define ROOT    C:\Program Files\nxlog
    define CERTDIR %ROOT%\cert
    define CONFDIR %ROOT%\conf
    define LOGDIR  %ROOT%\data
    define LOGFILE %LOGDIR%\nxlog.log

    Moduledir %ROOT%\modules
    CacheDir  %ROOT%\data
    Pidfile   %ROOT%\data\nxlog.pid
    SpoolDir  %ROOT%\data
    LogFile   %LOGFILE%
    
    
    #### EXTENSION ####
    
    <Extension exec>
       Module xm_exec
    </Extension>
    
    <Extension json>
      Module xm_json
    </Extension>
    
    <Extension syslog>
      Module xm_syslog
    </Extension>
     
    <Extension charconv>
      Module xm_charconv
      AutodetectCharsets shift_jis, utf-8
    </Extension>
    
    <Extension fileop>
      Module xm_fileop
      <Schedule>
          Every 1 week
          <Exec>
              file_cycle('%LOGFILE%', 4);
          </Exec>
      </Schedule>
    </Extension>
    
    
    #### INPUT SECTION ####
    
    <Input input_application>
    Module im_msvistalog
    Query <QueryList><Query Id="0"><Select Path="Application">*</Select></Query></QueryList>
    <Exec>
        $Message  = to_json();
        $Hostname = hostname();
    </Exec>
    </Input>
    
    <Input input_security>
        Module im_msvistalog
        Query <QueryList><Query Id="0"><Select Path="Security">*</Select></Query></QueryList>
        <Exec>
            $Message  = to_json();
            $Hostname = hostname();
        </Exec>
    </Input>
    
    <Input input_system>
        Module im_msvistalog
        Query <QueryList><Query Id="0"><Select Path="System">*</Select></Query></QueryList>
        <Exec>
            $Message  = to_json();
            $Hostname = hostname();
       </Exec>
    </Input>


    #### PROCESSOR SECTION ####

    <Processor buffer_memory>
        Module pm_buffer
        Type Mem
        MaxSize 128000
        WarnLimit 16000
    </Processor>


    #### OUTPUT SECTION ####

    <Output output_syslog>
        Module om_udp
        Host 192.168.XX.XX ←ここにNASのIPアドレス
        Port 514 ←デフォルトではポート番号514
        <Exec>
            $SourceName          = 'NXLog';
            $SyslogFacility      = 'local0';
            $SyslogSeverityValue = '6';
            to_syslog_ietf();
        </Exec>
    </Output>


    #### ROUTE SECTION ####

    <Route route_application>
        path input_application => buffer_memory => output_syslog
    </Route>

    <Route route_security>
        path input_security => buffer_memory => output_syslog
    </Route>

    <Route route_system>
        path input_system => buffer_memory => output_syslog
    </Route>


修正が終わったらサービスを再起動させましょう。何かしらの理由で再起動できない場合はnxlog.confの記載内容がおかしいので見直しましょう。







![スライド6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/b26a3db0-fe15-0e52-a589-f7381805ad85.png)

### ③ CiscoスイッチでSyslog送信設定
Syslog送信に関わる部分だけ抜粋でコマンドを記載します。

    Cisco(config)#logging buffered 512000
    Cisco(config)#logging host 192.168.XX.XX　←NASのIPアドレス
    Cisco(config)#logging trap informational　←syslogサーバに送信する際に「informational」を指定
    Cisco(config)#logging facility local5　←syslogサーバに送信する際にfacility-typeを「local5」に指定

Ciscoから手動でSyslogを送信してみます。

    Cisco#send log 3 test


### ④ QNAP側でSyslogの確認

QNAP WebUIにログインし、「コントロールパネル」-「アプリケーション」で「Syslogサーバー」のSyslogビューアをクリックすると蓄積されたログを見ることができます。

[Cisco機器のログ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/2a0bd284-2d0a-eb0c-da5b-ff0e623e3843.png)

[Windowsのログ]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/655033/2a729e2d-47ac-f7e7-45f9-08eb64c9c39d.png)

# おわりに
QNAPを利用すればサーバ用のハードウェアを購入せずにSyslogサーバを構築できるので、お安く構築できます。ただログ検索や分析などは激ムズ（ログが見にくい）なので本当にログデータを蓄積するだけになります。ログは重要！


# 参考にしたサイト

https://www.ns-lab.org/wiki/?Windows/Binary/NXLog

https://www.infraexpert.com/study/syslog2.html