3/7 から KUSANAGI 9 に新しいコマンドが追加されました。
今回紹介する kusanagi analyze コマンドです。
kusanagi analyze コマンドは KUSANAGI の環境を分析して、ディスク圧迫、設定ファイルの不備、攻撃の対象になりうるファイルなどを検知、改善のアドバイスを表示するコマンドで、有償版「KUSANAGI Business/Premium Edition」で利用できます。
kusanagi analyze コマンドを実装した経緯としては、 現在自社内では KUSANAGI Cloud という仕組みで KUSANAGI を管理しているのですが、この中に kusanagi analyze に似た分析機能があります。
この機能を広くユーザーに使えるようにして、様々なリスクをいち早くユーザー自身が感知できるようにするのがより良いと考え、実装することにしました。
kusanagi analyze の実行して環境を分析する
kusanagi analyze の実行は、kusanagi analyze
と入力する事で実行できます。
では、実際に実行してみましょう。
# kusanagi analyze
[全体]
(レベル:alert)
1年以上前のダンプファイルがあります。削除してください。
対象ファイル:
/home/kusanagi/kusanagi_html_20220301.dump
[プロファイル名:kusanagi_dp_test]
(レベル:alert)
ドキュメントルート内にセキュリティ上問題となるファイル(.zip, .tar, .gz, .log, .sql, .dump, .php.xxx)が確認されました。削除するかドキュメントルート外に移動してください。
対象ファイル:
/home/kusanagi/kusanagi_dp_test/DocumentRoot/index.php.bak
[プロファイル名:kusanagi_html]
(レベル:alert)
uploadsのパーミッションが適切ではありません。ファイルオーナーはhttpd.www、パーミッションは0775に修正してください。
(レベル:notice)
ドキュメントルート内に phpinfo を含むコード、または phpMyAdmin が検出されました。クラッキングのセキュリティリスクがあり ますので、公開している環境では特に該当コード、ツールの利用を控えてください。
対象ファイル:
/home/kusanagi/kusanagi_html/DocumentRoot/phpinfo.php
(レベル:info)
wp-config.phpがドキュメントルートの中にあります。
/home/kusanagi/kusanagi_html/DocumentRoot/wp-config.php を /home/kusanagi/kusanagi_html/wp-config.php に移動してください
analyze completed.
#
このように、検知内容とアドバイスが表示されたことが分かります。
では、1つずつ内容を見ていきます。
kusanagi analyze の実行結果の見方
分析対象
ブラケット[]
で囲まれているのは、分析対象を指し示しています。
:
:
[全体]
:
:
[プロファイル名:kusanagi_dp_test]
:
:
[プロファイル名:kusanagi_html]
:
:
[全体]
とある場合は VM 全体に関わる内容です。
[プロファイル名:...]
とある場合は kusanagi provision
でプロビジョンしたプロファイルごとの内容です。
通知レベル
括弧()
で囲まれているのは、通知レベルを指し示しています。
:
:
(レベル:alert)
:
:
(レベル:notice)
:
:
(レベル:info)
:
:
通知レベルには3段階あります。
alert(警告) > notice(注意) > info(情報) ※左に行くほど深刻度が高い。
alert(警告) には即時対応、 notice(注意) には早目の対応、 info(情報) は可能なら対応が望ましいです。
分析結果
:
:
1年以上前のダンプファイルがあります。削除してください。
対象ファイル:
/home/kusanagi/kusanagi_html_20220301.dump
:
:
分析対象と通知レベルと共に分析結果が表示されます。
分析結果には検知した内容とその改善のアドバイスが表示されます。
分析結果の詳細(抜粋)
それでは、ここで実際に出力される分析結果の詳細を、一部抜粋ですが記載します。
全体
通知レベル : alert
マウント位置の利用率が89%を超えています。不要ファイルの削除、肥大化したログのローテートを講じた上で、改善の見込みがないようであれば、ディスクの拡張を行ってください。
理由:VM上に置いてあるファイルサイズの合計がディスク領域の89%を超えています。このままではディスク領域を使い切り、VMがダウンします。
対策:不要なファイル、古いログファイルなどをrm
コマンドでなど削除してください。難しい場合は、ディスク領域の拡張を行ってください。
1年以上前のダンプファイルがあります。削除してください。
対象ファイル:
(以下に対象ファイルが出力される)
理由:古いダンプファイルがディスク領域を圧迫しています。
対策:rm
コマンドなどで対象のファイルを削除してください。
プロファイルごと
通知レベル : alert
ドキュメントルート内にセキュリティ上問題となるファイル(.zip, .tar, .gz, .log, .sql, .dump, .php.xxx)が確認されました。削除するかドキュメントルート外に移動してください。
対象ファイル:
(以下に対象ファイルが出力される)
理由:ドキュメントルート配下は不特定多数のユーザーが参照できる領域で、そこに.zipファイルなど置くとそのファイルが参照できてしまいます。
対策:rm
コマンドなどで対象のファイルを削除するか、mv
コマンドなどでドキュメントルート外に移動してください。
uploadsのパーミッションが適切ではありません。ファイルオーナーはhttpd.www、パーミッションは0775に修正してください。
理由:uploadsディレクトリはユーザーからのアップロードファイルが置かれる領域で、不適切な権限を設定すると悪意のあるユーザーに利用される恐れがあります。
対策:chown
コマンドとchmod
コマンドでuploadsディレクトリの権限を修正してください。
通知レベル : notice
ドキュメントルート内に phpinfo を含むコード、または phpMyAdmin が検出されました。クラッキングのセキュリティリスクがありますので、公開している環境では特に該当コード、ツールの利用を控えてください。
対象ファイル:
(以下に対象ファイルが出力される)
理由:phpinfo 、 phpMyAdmin ともサーバーのPHPの状態を確認できる便利なツールですが、不特定多数のユーザーに見られてしまうので、悪意のあるユーザーがその情報を利用する恐れがあります。
対策:rm
コマンドなどで対象のファイルを削除してください。
wp-config.phpに自動更新設定 FS_METHOD, FTP_HOST, FTP_USER, FTP_PASS のいずれかが見付かりませんでした。
次の値に設定してください。
FTP_METHOD:ftpext
FTP_HOST:localhost
FTP_USER:kusanagi
FTP_PASS:kusanagi initで--passwdに指定した値
未設定項目:
(以下に未設定項目が出力される)
理由:wp-config.php に各値が設定されていないと WordPress の自動更新が行えないので、セキュリティリスクが高まります。
対策:vi
コマンドなどで wp-config.php にそれぞれ指定の値を設定してください。
通知レベル : info
wp-config.phpがドキュメントルートの中にあります。
(例:/home/kusanagi/example/DocumentRoot/wp-config.php を /home/kusanagi/example/wp-config.php に移動してください)
理由:ドキュメントルート配下に置くと wp-config.php が参照される恐れがあります。
対策:mv
コマンドなどでドキュメントルートの1つ上のディレクトリに移動してください。
wp-config.phpにデータベースへの接続情報DB_HOST, DB_NAME,DB_USER,DB_PASSWORDが見付かりませんでした。
次の値に設定してください。
DB_HOST:localhost
DB_NAME:kusanagi provisionで--dbnameに指定した値
DB_USER:kusanagi provisionで--dbuserに指定した値
DB_PASSWORD:kusanagi provisionで--dbpassに指定した値
未設定項目:
(以下に未設定項目出力)
理由:wp-config.php に各値が設定されていないと WordPress が作動しません。
対策:vi
コマンドなどで wp-config.php にそれぞれ指定の値を設定してください。
分析結果のアーカイブ化 –output-archive オプション
kusanagi analyze は kusanagi analyze --output-archive [アーカイブ出力パス]
と入力する事で実行結果をアーカイブで出力できます。
なお、アーカイブ出力パスに指定するファイルの拡張子は .tar.gz
としてください。
# kusanagi analyze --output-archive /home/kusanagi/analyze.tar.gz
analyze completed.
# ll /home/kusanagi/analyze.tar.gz
-rw-r--r--. 1 root root 19583 Mar 14 23:54 /home/kusanagi/analyze.tar.gz
#
このように、分析結果が圧縮されて出力され、現状の分析結果を保持できる機能となります。
今後、この分析結果のファイルを元に新しい機能を実装する予定です(kusanagi analyze はまだまだ進化中です)。
これからの時代において安全なサイトの運用は必須といえますが、とても労力のかかるものです。
kusanagi analyze はその手助けとなる仕組みですので、ぜひ活用してみてください。