
netstatファイルから複数マシンのneo4j用のcypher create文を生成する

グラフは、大規模データセット内の異常やパターンを発見するのに役立ちます。
このスクリプトは、複数のホストからnetstat情報を取得し、Neo4jにインポート可能な形式に整形します。
Neo4jにクエリを実行することで、特定のホストへの接続、特定のホストからの接続、使用状況やプロトコルなどを調べることができます。
exampleディレクトリには、ツールをテストできるファイルがすでにいくつか用意されています。
また、検索の可能性について基本的なアイデアを得るためのサンプルクエリも見つけることができます。
現在、ツールは'netstat -an'コマンドを使用したWindowsシステムのnetstat出力でテストされています。
https://docs.docker.com/install/linux/docker-ce/centos/
https://docs.docker.com/compose/install/
git clone https://github.com/trinitor/netstat2neo4j.git /opt/netstat2neo4j/
cd /opt/netstat2neo4j/
docker-compose up -d
https://ip:7474
user: neo4j
pass: neo4j
すべてのnetstat出力ファイル(*.txtファイル)を/opt/netstat2neo4j/script/import/にコピーします。
cd /opt/netstat2neo4j/script/
bash csv2neo4j.sh
必要なCypher文はcreate_database.txtにあります。
https://localhost:7474 にアクセス
create_database.txtの内容をコピー
Neo4jインターフェースのコマンドバーに貼り付け
MATCH (src)-[:DEPENDS_ON]->(dst)
WHERE src.ip STARTS WITH '192_168_'
RETURN src, dst
exampleフォルダにもquery.txtがあります。
Q: これは重複しています。他のプロジェクトがあることをご存知ではないですか?
A: 知っています。これは新しいものでも特別なものでもありません。エージェントを使用してマップを描画し、ルールを強制する無料のプロジェクト、チュートリアル、および商用製品があります。
いくつか例を挙げます:
この小さなプロジェクトは決してそれらの代替品ではありません。
Q: すべてのマシンでnetstatを作成するのは大変です。解決策はありますか?
A: WMI/PowerShellリモート処理で情報を収集することはできますが、すべてのシステムに対してフル管理者権限を持つアカウントを使用することはお勧めしません。
構成管理を使用してnetstatの作成をスケジュールするか、スケジュールタスクを使用してください。これはこの小さなプロジェクトの範囲外です。
もし王国へのすべての鍵を持つアカウントを使用したい場合は:
https://ijustwannared.team/2019/04/22/network-connection-footprinting-with-wmi-and-neo4j/
Q: 間違っているに違いありません。Neo4jはCSVファイルを直接読み取れるはずです。なぜ自分でステートメントを作成しているのですか?
A: その通りです。CSVファイルを直接インポートすることは可能です。
https://neo4j.com/developer/guide-import-csv/