概要
Loki は、軽量な Web 蜜罐ソリューションです。Spring Boot ベースのアーキテクチャを採用し、攻撃者の行動パターンを記録・分析するために設計されています。SQLite データベースをストレージとして使用し、Thymeleaf でテンプレート処理を行うため、リソース消費が少なく迅速に展開できます。
環境構築
実行に必要なコンポーネントは以下の通りです:
- JDK 1.8 以上
- Maven バージョン 3.6 以降
- Git クライアント
リポジトリの取得
git clone https://github.com/TheKingOfDuck/Loki.git
cd Loki
初期設定
src/main/resources の下にある設定ファイルを編集します。以下は変更した構成例です:
server:
port: 9000
multiPorts: 8081-8090,9000-9500
ssl:
enabled: false
key-store: keystore/loki.jks
key-alias: secureAlias
key-store-password: SecurePass#2024
spring:
mvc:
throw-exception-if-no-handler-found: true
datasource:
url: jdbc:sqlite:db/honeypot.db
driver-class-name: org.sqlite.JDBC
loki:
adminPath: /admin/monitor
adminPort: 9999
username: adminUser
password: AdminSecure!2024
templates: /view/templates/
statics: /web/assets/
templates:
list:
apache:
- maps:
port: '80'
path: 'apache/index.html'
code: '200'
header:
Server: Apache/2.4
X-Powered-By: PHP/7.4
respbody: 'unauthorized_access'
tomcat:
- maps:
port: '8080'
path: 'tomcat/index.html'
code: '200'
header:
Server: Apache-Coyote/1.1
respbody: 'forbidden'
nginx:
- maps:
port: '443'
path: 'nginx/index.html'
code: '403'
header:
Server: nginx/1.18
Set-Cookie: SESSIONID=random123
respbody: 'blocked'
ビルドとデプロイ
プロジェクトをパッケージ化するためのコマンドを実行します:
mvn clean package -DskipTests
生成された JAR ファイルを以下のように起動します:
java -Xmx512m -Xms256m -jar target/loki-security.jar
利用シナリオ
シナリオ A:複数サービス環境の模倣
異なるポート番号で個別の設定を読み込むことで、複数のバックエンド技術を同時に擬似表示できます。例えば、HTTP リスナー(ポート 80)では Web サーバーを、HTTPS リスナー(ポート 443)ではデータベース接続インタフェースを模擬可能です。
運用上の推奨事項
テスト目的での活用時には、実稼働ネットワークから完全に分離した環境を使用してください。また、収集されるログには認証情報が含まれる可能性があるため、アクセス制御と暗号化による保護が必須となります。
連携可能なシステム
Loki を他のセキュリティコンポーネントと組み合わせることで、より強力な防御体制を構築できます:
- 中央集権型蜜罐管理ダッシュボードの構築
- 収集データを威胁インテリジェンスプラットフォームに転送
- SIEM ソリューションとのシナジーによるリアルタイムアラート機能の実装