Mini Hardening #3.2 やるべきこと・反省
やるべきこと
- バージョン確認
- 不要なサービスの停止(webmin)
- 不要なユーザの削除
- パスワード変更
- スプレッドシートにアクセス情報をまとめ
- WordPressの改ざん
- テーマECCの改ざん
- バックアップの作成
- バックアップを最初にとる パスワードを変える
- DBのダンプ
- DocumentRootのバックアップ
- /phpmyadmin を塞ぐ
- サービスの監視,ファイルの改ざん検出
- 不要なサービスの停止 不要なプロセスの停止 ポートからプロセスの停止
- 不要なユーザの削除 パスワード変更はサービスに影響がないか
- webminを閉じる時もアクセスがあるか確認する→チェック
- SSHを公開鍵認証にしてしまう
- 各サービスが正常に利用できるか監視
実際の脆弱性の例
- NginxのDocumentRootの改ざん
- キーロガー
- アプリのSQLインジェクション
- ImageMagickのRemoteExec
- tomcatの/managerデフォルト管理マネージャが公開
- tomcatがrootで稼働
- memcachedが外部公開
- Drupalの脆弱性
- backup.shの罠 →cronで実行されるスクリプトの権限
- DNSサーバのログをとったほうがいい →C2との通信でDNSを利用
- アプリケーションサーバがRCExec
- 新卒採用(node.js)サイトがcentosユーザで実行された
インターネットへの直接アクセスがない場合…
- アップデートをSOCKSプロキシでつないでアップデート
- パッチをもってきて適用 WordPressの攻撃
対応の例
- バックアップ →データベース →ドキュメントルート →設定ファイル
- プロセスの確認 →稼働しているポート →実行ユーザ →バージョン →管理GUI
- ポートの確認 →LISTENになっているポート一覧 →外部公開が不要なポートの閉鎖 →ポートを利用しているプロセスの確認
- プロセスの確認 →ユーザの認証方式 →脆弱なパスワードがないか →アクセス制御 →脆弱性のあるバージョンでないか
- Linuxユーザの確認 →ユーザ一覧の作成 →不要なユーザの削除 →パスワードの設定 →SSHの認証方式の変更 →デフォルトシェルの変更 →sudoersユーザの確認(パスワードなしsudoの禁止)
- ログの確認 →アクセスログ →エラーログ
- ファイルの監視 →変更日時から改ざんを検出
- サービスの監視 →死活監視 →改ざん検出(公開領域)
- アプリの脆弱性 →SQLi →OSコマンドインジェクション
- マルウェアやアドウェア →マイニング →キーロガー →C2との通信
- オフラインでのアップデート →パッチの適用 →SOCKSプロキシの利用
優勝したチーム
役割分担
- 1.インシデントコマンダー
- 報告書の作成、関係各所とのやり取り
- 2.オペレータ
- 最前線でオペレーションを行う
- 3.マネージャ
- オペレータコマンダーの連携を行う
反省
- サービス監視はスクリプトを用意しておく
- 改ざん検出もスクリプトを用意しておく
- チェックリストを事前に作って役割分担をする