SquidログをQRadar転送する(syslog/tls-syslog)

# 環境
```
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
```
と

QRadar 7.5.0 All in One
## CentOS7にSquidのインストールと設定
```
# yum -y install squid
```
コンフィグファイルの編集
```
# vi /etc/squid/squid.conf
```
Squidを利用するクライアントIPネットワークを定義
```
acl localhost src xxx.xxx.xxx.xxx/xx  
```
サービスの再起動、ステータス確認、自動起動をOnに変更
```
systemctl restart squid
systemctl status squid
systemctl enable squid
```
その他、クライアントがsquidにアクセスできるようにFirewalld(iptables)の編集も必要

# Squidログをrsyslogに渡す
自動起動ファイルを編集
```
# vi /etc/rc.d/rc.local
```
以下を追加
```
tail -f /var/log/squid/access.log | logger -p local1.info &
```

システムが起動したときに自動実行されるようにします。
```
# chmod a+x /etc/rc.d/rc.local
```

linuxを再起動してこの設定を有効化します。

# QRadarにログ転送
QRadarのIPアドレスを追加
```
# vi /etc/rsyslog.conf
```
以下の一文を追加します。xxxはQRadarのIPアドレスとなります。
\<facility>.\<priority>@<IPアドレス>:514を入力
```
local1.info @@xxx.xxx.xxx.xxx:514
```
変更を反映するためサービス再起動
```
systemctl restart rsyslog
```
# QRadarでログ受信確認
QRadarのWebコンソールにアクセスし管理をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/de8e65b9-a6aa-cf46-780c-66a843eae402.png)
ログ・ソースをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/d750871b-93de-a82e-da3d-80cb21c35cc4.png)
ログ・ソースをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/f4492998-26ce-eb44-b25a-f26eb7048ce9.png)
左のペインで"squid web proxy"という項目に☑をいれます。QRadarが自動でログ種別を認識してログソースとして表示してくれます。最後のイベントが現在の時間になっていることが確認できればログが来ているという判断ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/247d1a06-cea9-ac3e-b698-a230b875a16f.png)

ログソースの右側のプロパティからイベントをクリックしてログ内容を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/c68e563d-77c2-d9c1-d464-677e9da95af6.png)
ログイベント１行ごとの表示がされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/73188a9c-98f4-3594-95e8-b17def42876f.png)

# QRadar上でTLSシスログを受けるようにログソースを定義する
※こちらの手順では、ログを暗号化することのみを主眼としています。中間者攻撃は対応できません。また自己署名書の中身を確認して接続許可する制御はありません。

先ほどのQRadarのWebコンソールから管理->ログ・ソースの順でクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/f4492998-26ce-eb44-b25a-f26eb7048ce9.png)
新規ログ・ソースをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/23879981-db09-86b7-e0ec-03a5e0bcddcb.png)
単一のログ・ソースをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/606f18ed-7c0e-e52f-52c1-f207f713472d.png)
ログ・ソース・タイプでsquidを探します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/c95f8d40-bb5e-e6a0-c252-f09afa97daa6.png)
Squid Web Proxyを選び次のステップへ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/b7457b9b-a9e0-ff8f-08d9-c54f92d36657.png)
Syslogを選びます。文書化されていないプロトコル・タイプの表示に☑を入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/a04b84f5-4c60-35bb-00f3-be7d9edf1bc0.png)
ワーニングができますが閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/42af9262-001b-fd8c-2f70-60c92839df62.png)
TLS Syslog(未文書化）を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/d7f543d0-7021-1c68-b77f-f3622edac3c8.png)
次のステップに進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/180ec3cd-7120-4b59-c8a3-a6d3453fa643.png)
ログ・ソースの名前を入力し次のステップへ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/e6f4e5c1-6af6-f90f-b1f5-f174d65fa7a8.png)
Log Source Identifierを入力します。IPアドレス等
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/4bcdd0ee-deac-e139-9817-4002fd88b4b2.png)
テストをすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/bf75cfa5-9785-7087-ca78-2bf92a1079c7.png)
QRadarが生成した証明書の確認が行われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/52f17f70-d215-eff5-f61a-63b428a454b8.png)
自己署名証明書のためにワーイングがでます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/7f422e2e-e028-47d5-ea46-e52d0ce12b4f.png)


# rsyslogをTLSでsyslogを送るように設定
暗号化するためのパッケージをインストールします
```
# yum install rsyslog-gnutls
```
# QRadarが生成した証明書を取得
QRadarにWinSCPでログインします。
/opt/qradar/conf/trusted_certificates/syslog-tls.cert（サーバ証明書）をローカルにダウンロードします。
Cert形式の証明書をpem形式に変更します。
```
# openssl x509 -in syslog-tls.cert -out tmp.der -outform DER
```
```
# openssl x509 -in tmp.der -inform DER -out dest.pem -outform pem
```
証明書を配置するディレクトリtlsを作成します
```
# mkdir /etc/rsyslog.d/tls
```
tlsディレクトリにpemファイルをca.pemという名前でコピーします。
```
# cp dest.pem /etc/rsyslog.d/tls/ca.pem
```
```
# vi /etc/rsyslog.conf
```
以下を追加します。xxx.xxx.xxx.xxxはQRadarのIPアドレス
```
global(DefaultNetstreamDriverCAFile="/etc/rsyslog.d/tls/ca.pem")
action(type="omfwd" protocol="tcp" port="6514"
       Target="xxx.xxx.xxx.xxx"
       StreamDriver="gtls"
       StreamDriverMode="1"
       StreamDriverAuthMode="anon")
```
サービスの再起動を行いエラーがないことを確認します。
## 証明書の中身確認
有効期限の確認　10年になります。
```
openssl x509 -noout -dates -in syslog-tls.cert
notBefore=Jan 18 08:27:32 2024 GMT
```
全文表示
```
#openssl x509 -text -noout -in  syslog-tls.cert
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            c6:02:ee:ff:99:0e:cc:c5
    Signature Algorithm: sha512WithRSAEncryption
        Issuer: CN=*, O=SyslogTLS_Server
        Validity
            Not Before: Jan 18 08:27:32 2024 GMT
            Not After : Jan 15 08:27:32 2034 GMT
        Subject: CN=*, O=SyslogTLS_Server
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b5:ac:46:60:c7:3f:46:30:44:91:19:67:a6:bc:
                    0e:02:9d:5f:13:f9:86:15:6c:ab:a4:a9:e7:b7:9b:
                    de:9a:ae:0b:ef:83:47:2b:02:89:7f:6c:85:17:1f:
                    55:e8:a5:1b:e7:24:a1:a5:b3:67:52:37:c4:25:8e:
                    a0:98:ee:7f:ae:75:7e:61:3b:bd:fa:f6:f3:47:62:
                    a8:2a:2a:2d:bf:06:2e:6e:78:ca:ed:74:82:42:e7:
                    ca:79:b3:f5:e7:09:f4:ba:0a:03:62:f0:b8:e3:ad:
                    41:55:19:3b:5a:d7:0d:a5:85:7d:65:df:c4:9e:77:
                    04:a1:af:a6:47:42:ec:58:b6:db:e8:c8:32:98:a9:
                    fd:df:6c:fb:0c:6e:4a:6b:98:4a:96:3a:76:f6:59:
                    01:80:dd:2b:d1:71:7a:84:64:b4:04:56:7c:1c:a4:
                    38:6a:9c:c1:75:91:cb:dc:61:b5:55:87:38:cf:01:
                    c6:da:22:c8:b6:d8:b8:1e:d5:44:77:3c:2b:1b:91:
                    ef:6e:53:31:22:34:78:ef:4d:f1:fa:43:dc:0d:fa:
                    35:b2:82:02:13:43:f1:2f:d0:5c:d8:22:64:b2:fb:
                    5a:89:c3:a4:aa:79:b3:cc:64:43:2f:cb:8f:a0:6a:
                    ff:46:72:7b:48:43:f0:65:3d:92:8f:47:32:4d:ca:
                    f1:eb
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                2A:9A:0D:4E:BB:53:6A:A8:32:C3:C7:33:3F:2E:DD:B6:7E:92:A6:5D
            X509v3 Authority Key Identifier:
                keyid:2A:9A:0D:4E:BB:53:6A:A8:32:C3:C7:33:3F:2E:DD:B6:7E:92:A6:5D

            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: sha512WithRSAEncryption
         a4:8f:cc:d9:fe:80:8c:f3:8c:fd:f2:4d:6e:76:a2:a5:e3:83:
         20:cc:f2:11:b6:7e:b3:d9:7e:5c:72:be:e6:7c:8c:54:f1:b1:
         7c:da:f4:17:a3:21:a5:17:aa:35:a1:6a:bf:81:87:b3:22:40:
         e6:31:ea:8a:cb:ce:9b:6d:72:cc:ec:29:4b:e7:ab:07:fe:90:
         ed:ed:35:41:67:13:ac:af:d0:5c:32:c5:6f:42:26:77:90:e4:
         6c:4b:1a:98:b8:57:86:b8:77:63:fe:54:39:d4:ed:1b:0b:33:
         94:d9:a8:1b:35:64:99:78:75:ec:8c:fb:56:67:2b:f1:e9:06:
         41:f3:58:ff:ed:fb:7b:08:5f:de:f9:e3:29:e2:cd:cb:82:eb:
         62:03:eb:f3:cf:f8:12:37:de:6c:21:a8:81:3b:f8:fe:4d:35:
         66:59:b3:61:01:1f:d1:07:2a:a6:42:d1:6c:49:29:d4:20:ce:
         45:e5:86:0e:1d:8d:0f:ff:0b:03:d6:9b:f7:00:af:1f:c0:95:
         d5:db:c5:27:99:47:da:b4:26:d5:0a:42:29:65:76:ea:11:d0:
         6a:1a:4a:5f:0b:2f:a8:77:e7:04:98:be:f7:5c:11:4a:5a:87:
         2e:73:ae:b6:e9:e1:db:36:13:95:db:e9:7a:26:f7:7d:39:db:
         a5:b0:63:c1
```


# ログ転送時のペイロード確認
QRadar上では以下のように確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/fcf49e31-8832-d52c-1818-a53cfc8a18ff.png)
tcpdump -i ens192 -A host xxx.xxx.xxx.xxx(QRadarのIPアドレス）で本当に転送時にログが暗号化されているのか？確認しました。

暗号化なしsyslog通信だとアクセスログの中身が表示されていることがわかります。またログ送信プロトコルshellになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/e1226fd6-29fd-ecdf-fe1a-1ebbf562c8cb.png)
TLS syslogの場合は、通信ログが暗号化されていて見えないことがわかります。ログ送信プロトコルがsyslog-tlsになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/b3041699-ea98-89bd-dca8-9541d311393d.png)

# 考察
StreamDriverAuthMode="anon"だとrsyslog.confで指定したファイル名のファイルが存在すればよく中身を確認しません。他のモード(x509/certvalid,509/name)で試すと証明書の中身を確認しrsyslogサービス再起動時にエラーを発出します。しかしよりセキュリティを強化したい場合には不十分と思われClient認証も必要になってくると思われる。


参考にしたサイト
https://qiita.com/daisuke0115/items/1e8eeb1d2b0f87bda8c7
https://www.ibm.com/docs/sr/dsm?topic=proxy-configuring-syslog-forwarding
https://www.ibm.com/docs/ja/dsm?topic=options-tls-syslog-protocol-configuration
https://qiita.com/saeki4n/items/198407c8710d769dfa55
https://qiita.com/m-chika/items/e4936feb4087b7ddbe8b
https://www.rsyslog.com/doc/concepts/ns_gtls.html