環境
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>@:514を入力
local1.info @@xxx.xxx.xxx.xxx:514
変更を反映するためサービス再起動
systemctl restart rsyslog
QRadarでログ受信確認
QRadarのWebコンソールにアクセスし管理をクリックします。
ログ・ソースをクリックします。
ログ・ソースをクリックします。
左のペインで"squid web proxy"という項目に☑をいれます。QRadarが自動でログ種別を認識してログソースとして表示してくれます。最後のイベントが現在の時間になっていることが確認できればログが来ているという判断ができます。
ログソースの右側のプロパティからイベントをクリックしてログ内容を確認します。
ログイベント1行ごとの表示がされます。
QRadar上でTLSシスログを受けるようにログソースを定義する
※こちらの手順では、ログを暗号化することのみを主眼としています。中間者攻撃は対応できません。また自己署名書の中身を確認して接続許可する制御はありません。
先ほどのQRadarのWebコンソールから管理->ログ・ソースの順でクリックします。
新規ログ・ソースをクリックします。
単一のログ・ソースをクリックします。
ログ・ソース・タイプでsquidを探します。
Squid Web Proxyを選び次のステップへ
Syslogを選びます。文書化されていないプロトコル・タイプの表示に☑を入れます。
ワーニングができますが閉じます。
TLS Syslog(未文書化)を選びます。
次のステップに進みます。
ログ・ソースの名前を入力し次のステップへ
Log Source Identifierを入力します。IPアドレス等
テストをすることができます。
QRadarが生成した証明書の確認が行われます。
自己署名証明書のためにワーイングがでます。
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上では以下のように確認することができます。
tcpdump -i ens192 -A host xxx.xxx.xxx.xxx(QRadarのIPアドレス)で本当に転送時にログが暗号化されているのか?確認しました。
暗号化なしsyslog通信だとアクセスログの中身が表示されていることがわかります。またログ送信プロトコルshellになっています。
TLS syslogの場合は、通信ログが暗号化されていて見えないことがわかります。ログ送信プロトコルがsyslog-tlsになっています。
考察
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