Sh1n0g1 / security_news_matomerukun

9 stars 3 forks source link

セキュリティニュースまとめる君

ChatGPTのAPIを用いて、セキュリティニュースを分類・要約するプログラムです。 出力例
インシデントサンプル 脆弱性サンプル

システム要件

セットアップ(10分程度)

  1. git clone https://github.com/Sh1n0g1/security_news_matomerukun.git
  2. cd security_news_matomerukun
  3. APIキーをOpenAI社から入手します。
    • ユーザ登録が必要となります。
    • クレジットカードによる月次決済が必要です。
    • 費用については1記事(4000単語想定)あたり0.2円程度です。
  4. vim ./scripts/matomerukun_config.pyでOpenAI社のAPI Keyを入力します。
    OPENAI_KEY="changeme"
  5. 以下のコマンドでDocker Imageを作成します。
    docker build . -t security_matomeru
    • 完了するのに5分ほどかかります。
  6. コンテナを実行します。
    docker run -p 80:80 --shm-size=256m -v $(pwd)/articles:/var/www/articles --name security_matomeru security_matomeru
    Pythonスクリプトが実行されます。1記事1分くらいの速さで取得・分類・要約が行われます。
    環境によって処理が以下のログで途中で止まっているように見えますが、正常に動作しています。
    * Starting Apache httpd web server apache2
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
    * 
    [*] Security News Watcher
    [+] Getting CSS...
    [*] Title:記事のタイトル
    [+] Getting Text...
    [WDM] - Downloading: 100%|██████████| 6.83M/6.83M [00:00<00:00, 11.7MB/s]

使い方

  1. ブラウザでhttp://ホストのIPアドレス/にアクセスすると要約された記事が読めます。
    • 起動したばかりだと記事がありませんが、RSSのエントリー分だけ1記事1分のペースで新しい記事が増えていきます。
  2. それ以降の記事の更新(RSSの再チェック)は自動的に1時間おきに行われます。
  3. 記事はホストのarticlesフォルダに保存され、コンテナを落としても、再度立ち上げても残ります。

Dockerコンテナの終了および消し方

コンテナの終了

カスタマイズ

以下の項目がロジックを変更することなく、簡単にカスタマイズ可能です。

スクリプト内

script/matomerukun_config.pyの以下の部分がカスタマイズできます。


USER_AGENT='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
INTERVAL=3600 # 1 hour
RSS_URLS = ['https://www.bleepingcomputer.com/feed/']
CATEGORIES=["incident", "vulnerability", "other"]

ChatGPTに対するプロンプト

script/prompt_*.txtとなっているテキストファイルはChatGPTに送る命令の内容です。

Webサイト

トラブルシューティング

動作中のコンテナのシェルを起動させる