Amazon EC2(t2.medium)でT-Pot構築(その3)
その2の続きです。 graneed.hatenablog.com
前回まででインストールは完了しましたが、ギリギリの性能であるため、放っておくと問題が発生します。
ここではチューニング方法を記載します。
1. Swap領域の有効化
t2.mediumはメモリ4GBです。T-Potの要求スペックを満たしているものの、実は推奨スペックは8GBです。しばらく運用を続けて、elasticsearchにデータが積みあがってくるとメモリ不足になります。ちなみに、インストール直後がこの状態です。
[root@massshoemaker:/home/honey]# htop
よって、Swap領域を作成してメモリ使用量の増加に備えます。
# Swap領域の作成 [root@massshoemaker:/home/honey]# mkdir /var/swap [root@massshoemaker:/home/honey]# dd if=/dev/zero of=/var/swap/swap0 bs=1M count=2048 2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB, 2.0 GiB) copied, 27.3182 s, 78.6 MB/s [root@massshoemaker:/home/honey]# chmod 600 /var/swap/swap0 [root@massshoemaker:/home/honey]# mkswap /var/swap/swap0 Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=20e34a6e-7f6e-4cca-ab52-674475bcd45a # Swap領域の有効化 [root@massshoemaker:/home/honey]# swapon /var/swap/swap0 # Swap領域の自動マウント [root@massshoemaker:/home/honey]# echo '/var/swap/swap0 swap swap defaults 0 0' >> /etc/fstab # Swap領域の確認 [root@massshoemaker:/home/honey]# swapon -s Filename Type Size Used Priority /var/swap/swap0 file 2097148 0 -1
これでSwap領域を2GB確保しました。
2. ログ保存期間短縮によるディスク使用量の節約
攻撃状況にもよりますが、AWSの無料利用枠の範囲内であるSSD 30GBで構築すると、1か月経たずにディスクがいっぱいになりました。 T-Potは、各ハニーポットのログを/data
領域に保存しており、デフォルトは30日間保存しています。 その保存期間を変更して、ディスク使用量を節約します。
# 設定ファイルのバックアップ [root@massshoemaker:/home/honey]# cp -p /opt/tpot/etc/logrotate/logrotate.conf /opt/tpot/etc/logrotate/logrotate.conf.org # 設定ファイルの編集。rotateを30から15に変更。 [root@massshoemaker:/home/honey]# vi /opt/tpot/etc/logrotate/logrotate.conf # 変更内容を確認 [root@massshoemaker:/home/honey]# diff -u /opt/tpot/etc/logrotate/logrotate.conf.org /opt/tpot/etc/logrotate/logrotate.conf --- /opt/tpot/etc/logrotate/logrotate.conf.org 2018-06-10 01:30:22.830235993 +0900 +++ /opt/tpot/etc/logrotate/logrotate.conf 2018-06-10 12:24:06.095311754 +0900 @@ -33,6 +33,6 @@ daily missingok notifempty - rotate 30 + rotate 15 compress }
これで保存期間を15日間に変更できました。
3. elasticsearch保存期間の短縮によるCPUバースト抑制
運用を始めて2か月を過ぎたあたりのある日、Kibanaでダッシュボードを表示すると、しばらく表示を待たされた結果、タイムアウトが発生してまともに使用できない状態になりました。
glances等のモニタリングツールで調べていると、stealが発生しており、各プロセスにCPUが割り当たっていない状態になっていることがわかりました。どうやら、elasticsearhのCPU使用率が徐々に高くなっており、AWSのCPUのバーストが発生しCPUクレジットを消費し尽くしていました。
t2.medium
の場合、CPU使用率が20%を超えると、CPUクレジットを消費していきます。
参考:CPU クレジットおよびベースラインパフォーマンス - Amazon Elastic Compute Cloud
elasticsearhはデータ量に比例してCPU使用率が高くなっていくようです。 elasticserchのデータは、デフォルトで90日間保存されています。その保存期間を変更して、CPU使用率を抑えます。
# 設定ファイルのバックアップ [root@massshoemaker:/home/honey]# cp -p /opt/tpot/etc/curator/actions.yml /opt/tpot/etc/curator/actions.yml.org # 設定ファイルの編集。unit_countを90から45に変更。 [root@massshoemaker:/home/honey]# vi /opt/tpot/etc/curator/actions.yml # 変更内容を確認 [root@massshoemaker:/home/honey]# diff -u /opt/tpot/etc/curator/actions.yml.org /opt/tpot/etc/curator/actions.yml --- /opt/tpot/etc/curator/actions.yml.org 2018-06-10 01:30:22.830235993 +0900 +++ /opt/tpot/etc/curator/actions.yml 2018-06-10 16:33:48.623398098 +0900 @@ -23,4 +23,4 @@ direction: older timestring: '%Y.%m.%d' unit: days - unit_count: 90 + unit_count: 45
これで保存期間を45日間に変更できました。
4. まとめ
保存期間を短縮すると、当然、観察する頻度を上げる必要がありますし、後から確認しづらくなります。
ハニーポットの運用目的や運用サイクルを鑑みて、パラメータを決定する必要があります。