Python
 Computer >> コンピューター >  >> プログラミング >> Python

Django管理画面のセキュリティ強化:偽の管理者ログイン(ハニーポット)で不正アクセスを記録する方法

はじめに

Djangoの管理画面(admin)への不正アクセス対策として、サードパーティ製パッケージ「django-admin-honeypot」を使って偽のログインページを設置する方法を紹介します。

この仕組みを導入すると、誰かが管理画面でログインを試みた場合、正しいパスワードを入力してもログインできず、その試行情報がIPアドレスやセッションIDとともにデータベースのテーブルへ自動的に記録されます。攻撃者をおびき寄せる「ハニーポット」として機能し、不正アクセスの監視に役立ちます。

前提条件

あらかじめプロジェクトのurls.pyの基本設定を行い、settings.pyINSTALLED_APPSにアプリを追加できる状態にしておいてください。

ステップ1:パッケージのインストール

まず、以下のコマンドでパッケージをインストールします。

pip install django-admin-honeypot

ステップ2:settings.pyの編集

settings.pyに以下を追加します。

INSTALLED_APPS += ['admin_honeypot']

INSTALLED_APPSに追加することで、Djangoがこのアプリを認識できるようになります。これは必須の設定です。

ステップ3:urls.pyの編集

プロジェクトのurls.pyを以下のように編集します。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path(r'admin/', include('admin_honeypot.urls', namespace='admin_honeypot')),
    path(r'secret/', admin.site.urls),
]

ここでは、本来の管理画面URL(/admin/)を偽のハニーポットページに差し替え、実際の管理画面を別のエンドポイント(/secret/)へ移動させています。

ステップ4:マイグレーションの実行

以下のコマンドを実行します。

python manage.py makemigrations
python manage.py migrate

これでセットアップは完了です。マイグレーションにより、管理画面へのログイン試行をセッションIDなどの情報とともに記録するテーブルが自動的に作成されます。実際の管理画面には /secret/ エンドポイントからアクセスできます。

動作確認

https://127.0.0.1/admin/ にアクセスすると、次のような画面が表示されます。

Django管理画面のセキュリティ強化:偽の管理者ログイン(ハニーポット)で不正アクセスを記録する方法

これは偽のハニーポット管理画面です。正しい認証情報を入力しても、誤った情報を入力しても、ログインすることはできません。すべての試行がテーブルに記録されていきます。

続いて、https://127.0.0.1/secret/ にアクセスし、管理者のユーザー名とパスワードでログインしてみてください。

Django管理画面のセキュリティ強化:偽の管理者ログイン(ハニーポット)で不正アクセスを記録する方法

記録用のテーブルを開くと、これまでのすべてのログイン試行の履歴が保存されていることを確認できます。

まとめ

django-admin-honeypotを導入すれば、わずかな設定変更だけで偽の管理画面を設置し、不正アクセスの試行を記録・監視できるようになります。本番環境で運用する場合は、「secret」の部分を推測されにくい独自のURL文字列に変更することを強くおすすめします。

  1. DjangoプロジェクトにDebug Toolbar(デバッグツールバー)を導入する方法

    Django Debug Toolbarは、データベースクエリの確認やWebサイトの読み込み速度の計測など、さまざまなデバッグ作業に活用できる強力なツールです。開発者の間で非常に人気が高く、多くのプロジェクトで採用されています。この記事では、その具体的な導入手順をステップごとに解説します。 実装例 まず、「myapp」という名前のアプリを作成しておきましょう。 1. django-debug-toolbarのインストール 最初に、django-debug-toolbarをインストールします。 pip install django-debug-toolbar 2. INSTALLED_APPSへ

  2. MatplotlibでX軸の下に脚注を追加する方法をわかりやすく解説

    Matplotlibで作成したグラフのX軸の下に脚注(注釈)を追加したい場合、figtext()メソッドやtext()メソッドを使用することで簡単に実現できます。本記事では、figtext()メソッドを使った具体的な手順をサンプルコードとともに紹介します。脚注を追加する手順figureサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使用してx座標とy座標のデータポイントを作成します。作成したx・yデータポイントをプロットします。脚注を配置するために、figtext()メソッドにx・yの位置情報とboxプロパティ(枠線や背景色などのスタイル)を指定して呼び出