Skip to content

Security: yo1t/elecom-switch-management

Security

SECURITY.md

セキュリティガイドライン

既知のセキュリティリスク

1. HTTP通信(暗号化なし)

このスクリプトはELECOM EHB-SQ2A08スイッチと通信しますが、デバイスがHTTPSをサポートしていないため、以下のリスクがあります:

  • 認証情報(ユーザー名・パスワード)が平文で送信される
  • 通信内容が盗聴される可能性がある
  • 中間者攻撃(MITM)のリスクがある

対策:

  • 信頼できるネットワーク(管理用VLAN、VPN経由など)からのみアクセスする
  • 可能であれば、スイッチを管理用の隔離されたネットワークセグメントに配置する
  • 公共のネットワークやインターネット経由でのアクセスは絶対に避ける

2. 認証情報の管理

必須の対策:

  1. .envファイルのパーミッション設定

    chmod 600 .env.*
  2. .envファイルがGitにコミットされないことを確認

    git status  # .env.* ファイルが表示されないことを確認
  3. 定期的なパスワード変更

    • 最低でも3ヶ月ごとにパスワードを変更する
    • 強力なパスワードを使用する(12文字以上、英数字記号混在)
  4. コマンドライン引数での認証情報指定を避ける

    # ❌ 悪い例(シェル履歴に残る)
    python3 get_elecom_swhub_info.py --ip 192.168.1.1 --user admin --password secret123
    
    # ✅ 良い例(.envファイルを使用)
    python3 get_elecom_swhub_info.py --env-file .env.office-floor1 --mac --pretty
  5. シェル履歴のクリア(必要に応じて)

    # 誤ってコマンドラインで認証情報を入力した場合
    history -d <行番号>  # 特定の行を削除
    history -c           # 全履歴をクリア(注意して使用)

3. アクセス制御

推奨事項:

  1. スクリプト実行権限の制限

    chmod 700 *.py  # 所有者のみ実行可能
  2. ディレクトリのアクセス制限

    chmod 700 .  # プロジェクトディレクトリへのアクセスを制限
  3. スイッチ側のアクセス制御

    • 管理用アカウントは必要最小限の人数のみに付与
    • 可能であれば、IPアドレスベースのアクセス制限を設定
    • デフォルトパスワードは必ず変更

4. セッション管理のセキュリティ

自動セッション管理機能:

スクリプトは以下のセッション管理を自動的に行います:

  1. 実行前の既存セッション切断

    • 他のセッションが残っている場合、自動的に切断
    • セッション競合を防止
  2. データ取得後の自動ログアウト

    • データ取得完了後、必ずログアウト
    • 例外が発生した場合でもfinallyブロックでログアウトを保証
  3. 自動リトライ機能

    • セッション競合時に自動的にリトライ(最大2回)
    • ユーザーに透過的に動作

セキュリティ上の利点:

  • セッションの放置を防止
  • 不正アクセスのリスクを低減
  • 1セッション制限による他のユーザーへの影響を最小化

注意事項:

  • ブラウザでスイッチにログインしたままの場合、スクリプトが自動的にセッションを切断します
  • 複数のユーザーが同時にアクセスする場合は、調整が必要です

5. ログとモニタリング

推奨事項:

  1. アクセスログの記録

    • いつ、誰が、どのスイッチにアクセスしたかを記録
    • 異常なアクセスパターンを監視
  2. スイッチ側のログ確認

    • 定期的にスイッチのログインログを確認
    • 不正なアクセス試行がないか監視

6. 環境分離

推奨事項:

  1. 本番環境と開発環境の分離

    • 開発・テスト用のスイッチを別途用意
    • 本番環境へのアクセスは必要最小限に
  2. ネットワークセグメンテーション

    • 管理トラフィックを専用VLANで分離
    • ファイアウォールルールで管理アクセスを制限

インシデント対応

認証情報が漏洩した場合

  1. 即座にパスワードを変更
  2. スイッチのログを確認し、不正アクセスがないか調査
  3. 必要に応じてスイッチの設定をバックアップから復元
  4. 全ての.envファイルのパスワードを更新

不正アクセスが疑われる場合

  1. 該当スイッチへのアクセスを一時停止
  2. ログを保存して分析
  3. 必要に応じてネットワークを隔離
  4. セキュリティチームまたは管理者に報告

チェックリスト

定期的に以下を確認してください:

  • .envファイルのパーミッションが600になっている
  • .env.*ファイルがGitにコミットされていない
  • パスワードが定期的に変更されている
  • スクリプトが信頼できるネットワークからのみ実行されている
  • 不要なアクセス権限が削除されている
  • スイッチのファームウェアが最新である
  • アクセスログに異常がない

報告

セキュリティ上の問題を発見した場合は、公開せずに管理者に直接報告してください。

There aren’t any published security advisories