このスクリプトはELECOM EHB-SQ2A08スイッチと通信しますが、デバイスがHTTPSをサポートしていないため、以下のリスクがあります:
- 認証情報(ユーザー名・パスワード)が平文で送信される
- 通信内容が盗聴される可能性がある
- 中間者攻撃(MITM)のリスクがある
対策:
- 信頼できるネットワーク(管理用VLAN、VPN経由など)からのみアクセスする
- 可能であれば、スイッチを管理用の隔離されたネットワークセグメントに配置する
- 公共のネットワークやインターネット経由でのアクセスは絶対に避ける
必須の対策:
-
.envファイルのパーミッション設定
chmod 600 .env.* -
.envファイルがGitにコミットされないことを確認
git status # .env.* ファイルが表示されないことを確認 -
定期的なパスワード変更
- 最低でも3ヶ月ごとにパスワードを変更する
- 強力なパスワードを使用する(12文字以上、英数字記号混在)
-
コマンドライン引数での認証情報指定を避ける
# ❌ 悪い例(シェル履歴に残る) 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
-
シェル履歴のクリア(必要に応じて)
# 誤ってコマンドラインで認証情報を入力した場合 history -d <行番号> # 特定の行を削除 history -c # 全履歴をクリア(注意して使用)
推奨事項:
-
スクリプト実行権限の制限
chmod 700 *.py # 所有者のみ実行可能
-
ディレクトリのアクセス制限
chmod 700 . # プロジェクトディレクトリへのアクセスを制限
-
スイッチ側のアクセス制御
- 管理用アカウントは必要最小限の人数のみに付与
- 可能であれば、IPアドレスベースのアクセス制限を設定
- デフォルトパスワードは必ず変更
自動セッション管理機能:
スクリプトは以下のセッション管理を自動的に行います:
-
実行前の既存セッション切断
- 他のセッションが残っている場合、自動的に切断
- セッション競合を防止
-
データ取得後の自動ログアウト
- データ取得完了後、必ずログアウト
- 例外が発生した場合でも
finallyブロックでログアウトを保証
-
自動リトライ機能
- セッション競合時に自動的にリトライ(最大2回)
- ユーザーに透過的に動作
セキュリティ上の利点:
- セッションの放置を防止
- 不正アクセスのリスクを低減
- 1セッション制限による他のユーザーへの影響を最小化
注意事項:
- ブラウザでスイッチにログインしたままの場合、スクリプトが自動的にセッションを切断します
- 複数のユーザーが同時にアクセスする場合は、調整が必要です
推奨事項:
-
アクセスログの記録
- いつ、誰が、どのスイッチにアクセスしたかを記録
- 異常なアクセスパターンを監視
-
スイッチ側のログ確認
- 定期的にスイッチのログインログを確認
- 不正なアクセス試行がないか監視
推奨事項:
-
本番環境と開発環境の分離
- 開発・テスト用のスイッチを別途用意
- 本番環境へのアクセスは必要最小限に
-
ネットワークセグメンテーション
- 管理トラフィックを専用VLANで分離
- ファイアウォールルールで管理アクセスを制限
- 即座にパスワードを変更
- スイッチのログを確認し、不正アクセスがないか調査
- 必要に応じてスイッチの設定をバックアップから復元
- 全ての.envファイルのパスワードを更新
- 該当スイッチへのアクセスを一時停止
- ログを保存して分析
- 必要に応じてネットワークを隔離
- セキュリティチームまたは管理者に報告
定期的に以下を確認してください:
- .envファイルのパーミッションが600になっている
- .env.*ファイルがGitにコミットされていない
- パスワードが定期的に変更されている
- スクリプトが信頼できるネットワークからのみ実行されている
- 不要なアクセス権限が削除されている
- スイッチのファームウェアが最新である
- アクセスログに異常がない
セキュリティ上の問題を発見した場合は、公開せずに管理者に直接報告してください。