Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NACL — Network Access Control Light

English | 日本語

LAN内の未許可端末を検知し、Gratuitous ARP (GARP) によってネットワークから論理的に 遮断する、小規模向け・エージェントレスのネットワークアクセス制御 (NAC) システム。

802.1XやスイッチのポートセキュリティのようなL2スイッチ側の機能を使わずに、 既存のネットワーク構成を変更しないまま「許可リストにない端末を検知・遮断する」ことを 目的とした軽量な実装です。

特徴

  • エージェントレス: 監視対象の端末側には何もインストールしない。ARPパケットの パッシブ監視とアクティブスキャンにより端末を検知する。
  • 論理的な遮断: スイッチやルーターの設定を変更せず、Gratuitous ARPの送信によって 未許可端末の通信を妨害する。
  • 監視NICごとに独立: 監視対象のNIC(サブネット)ごとに独立したプロセス・ SQLiteデータベース・Webダッシュボードを持つ。プロセス間のデータ共有は行わない。
  • 3段階のステータス管理: 端末は allowed(許可済み)・unknown(未許可・検知のみ)・ blocked(遮断中)のいずれかの状態で管理される。まず monitor モードで検知結果を 確認し、問題なければ enforce モードで遮断を有効化する運用を想定している。

システム概要

監視対象NICごとに独立したプロセス(NACLエンジン・Webダッシュボード)を立て、 許可リスト(YAML)との照合結果に応じて端末を allowed / unknown / blocked の3状態で管理する。

flowchart LR
    subgraph nic["監視対象NIC"]
        device["LAN内の端末"]
    end

    allowlist["許可リスト\n(YAML)"] -->|同期| db[("SQLite DB\n(NICごと)")]
    device -->|ARP| engine["NACLエンジン\n(検知・遮断)"]
    engine -->|devices更新| db
    engine -->|"未許可端末にGARP送信"| device
    db -->|参照| web["Webダッシュボード"]
    engine -->|イベント通知| mail["SMTP通知"]
Loading

スクリーンショット

トップページ(監視対象NIC一覧):

トップページ

NIC別ダッシュボード(検知端末一覧):

NIC別ダッシュボード

動作要件

  • AlmaLinux 9(他のRHEL系ディストリビューションでも動作する可能性があるが未検証)
  • Python 3.11
  • root権限(ARP監視・GARP送信にRawソケットを使用するため)
  • 対象サブネットは /21(約2,000ホスト)以下を推奨

ディレクトリ構成

bin/       NACLエンジン・Webダッシュボード・CLIツール(Python)
conf/      設定ファイルの例(*.yaml.example)・logrotate設定
systemd/   systemdユニットファイル
tests/     unitテスト(ネットワーク・DBに依存しない純粋なロジックテスト)
docs/      セットアップ手順・NIC追加手順・スクリーンショット

セットアップ

新規導入の手順は docs/SETUP.md を参照。 稼働中のシステムに監視対象NICを追加する手順は docs/ADDING_NIC.md を参照。

テスト

tests/unit/ はネットワーク・DB・ファイルアクセスに依存しない純粋なロジックテストのみを 含み、Windows/Linuxいずれの環境でも実行できる。

python -m venv .venv

# Windows
.venv/Scripts/python.exe -m pip install -r requirements-dev.txt
.venv/Scripts/python.exe -m pytest tests/unit/

# Linux / macOS
.venv/bin/pip install -r requirements-dev.txt
.venv/bin/pytest tests/unit/

制限事項・対象範囲外

  • /21を超える大規模ネットワーク: ARPスキャン時間・GARP負荷・ブラウザ描画のいずれかが 実用範囲を超えるため対象外。
  • HTTPS対応: クローズドネットワーク内での運用を前提としており、現時点では未対応。
  • 802.1Xやスイッチ連携による遮断: 商用NAC製品が担う領域であり、本システムの対象外。
  • コンテナ化: 非コンテナ構成での実装を優先しており、今後の課題。

ライセンス

MIT License

About

LAN内の未許可端末をGratuitous ARPで検知・論理遮断する、小規模向けエージェントレスNACシステム/An agentless, small-scale NAC system that detects and logically isolates unauthorized devices on a LAN using Gratuitous ARP

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages