2025年8月25日月曜日

1台のPC でまとめてセキュリティチェックや管理をしたい

 なるほど、つまりこういう状況ですね:

  • 複数台の NixOSマシン がある

  • それぞれ個別にスキャンや管理をするのは面倒

  • 1台のPC でまとめてセキュリティチェックや管理をしたい

  • かつ、各PCのセキュリティを守れる形にしたい


🔹 実現の考え方

  1. 集中管理PC(セキュリティマスター)

    • 1台の管理PCを用意して、各NixOSマシンに対して監査・スキャンを集中実行

    • 各マシンは SSH + sudo権限 を使ってスキャンコマンドをリモート実行

    • 結果は管理PCに集約 → HTMLレポートや通知で確認

  2. 各マシンは最低限セキュリティを維持

    • ローカルでも ClamAV/rkhunter/Firewall を常時稼働

    • 自動アップデートや auditd を有効

    • 集中管理PCは「監査・レポート集約用」であり、攻撃防御は各マシンが担当

  3. 集中管理の具体例

  • リモートスキャンスクリプト(管理PCから実行)

#!/usr/bin/env bash

HOSTS=("nixos1" "nixos2" "nixos3")
USER="youruser"
REPORT_DIR="$HOME/security_reports"
mkdir -p "$REPORT_DIR"
DATE=$(date +"%Y-%m-%d")

for HOST in "${HOSTS[@]}"; do
  echo "Scanning $HOST ..."
  ssh $USER@$HOST "sudo clamscan -r /home --log=/tmp/clamav_scan.log; sudo rkhunter --check --quiet; sudo chkrootkit; sudo lynis audit system --quiet --logfile /tmp/lynis_audit.log"
  
  scp $USER@$HOST:/tmp/clamav_scan.log $REPORT_DIR/clamav_$HOST_$DATE.log
  scp $USER@$HOST:/tmp/rkhunter.log $REPORT_DIR/rkhunter_$HOST_$DATE.log
  scp $USER@$HOST:/tmp/chkrootkit.log $REPORT_DIR/chkrootkit_$HOST_$DATE.log
  scp $USER@$HOST:/tmp/lynis_audit.log $REPORT_DIR/lynis_$HOST_$DATE.log
done
  • これを管理PC上で実行すれば、複数台の結果を一括収集可能

  • HTML統合レポート化や通知も管理PC側で可能


🔹 ポイント

  1. 各マシンが最低限守る

    • Firewall・ClamAV・rkhunter・auditd は常時有効

  2. 管理PCで集中監査・レポート集約

    • SSH権限があることが前提

    • ネットワーク経由で安全にログを収集

  3. HTMLレポートやGUI通知は管理PCだけで完結

    • 各PCでGUI操作をする必要なし


💡 注意点:

  • SSHキーでパスワードレス認証を設定すると便利

  • sudo権限をリモートで使えるように /etc/sudoers を調整

  • ネットワーク経由でのリモートスキャンなので、ファイルサイズが大きい場合はログのみ転送


要するに、各PCは守り役、管理PCは監査・集約役 という構成が最も安全かつ効率的です。

希望なら、この集中管理用の NixOS configuration 例 + HTML統合レポート自動生成スクリプト も作れます。

作りますか?

了解です!では、複数台 NixOS を 1台の管理PCから集中監査 し、結果を HTML統合レポート にまとめる構成を作ります。


1️⃣ 管理PC側の NixOS configuration.nix

{ config, pkgs, ... }:

{
  imports = [ ];

  services.xserver.enable = true;
  services.xserver.windowManager.xfce.enable = true;

  environment.systemPackages = with pkgs; [
    openssh
    bash
    libnotify
    xdg-utils
    rofi
    yad
  ];

  # systemd timer で自動監査
  systemd.timers = {
    "multi-nixos-scan.timer" = {
      description = "Daily multi-NixOS security scan and HTML report";
      wantedBy = [ "timers.target" ];
      timerConfig = ''
        OnCalendar=daily
        Persistent=true
      '';
      serviceConfig = ''
        ExecStart=/home/${config.users.users.yourusername.name}/bin/multi-nixos-scan.sh
      '';
    };
  };
}

2️⃣ スクリプト例 multi-nixos-scan.sh

#!/usr/bin/env bash

USER="youruser"
HOSTS=("nixos1" "nixos2" "nixos3")  # ホスト名またはIP
REPORT_DIR="$HOME/security_reports"
mkdir -p "$REPORT_DIR"
DATE=$(date +"%Y-%m-%d")
REPORT_FILE="$REPORT_DIR/security_report_$DATE.html"

# HTMLヘッダー
{
echo "<html><head><title>Multi-NixOS Security Report $DATE</title></head><body>"
echo "<h1>Multi-NixOS Security Report $DATE</h1>"
} > "$REPORT_FILE"

# 各ホストをスキャン
for HOST in "${HOSTS[@]}"; do
  echo "<h2>$HOST</h2>" >> "$REPORT_FILE"
  echo "<pre>" >> "$REPORT_FILE"

  # リモートスキャン実行 & ログ収集
  ssh $USER@$HOST "
    sudo clamscan -r /home --log=/tmp/clamav_scan.log;
    sudo rkhunter --check --quiet;
    sudo chkrootkit;
    sudo lynis audit system --quiet --logfile /tmp/lynis_audit.log
  "

  scp $USER@$HOST:/tmp/clamav_scan.log $REPORT_DIR/clamav_$HOST_$DATE.log
  scp $USER@$HOST:/tmp/rkhunter.log $REPORT_DIR/rkhunter_$HOST_$DATE.log
  scp $USER@$HOST:/tmp/chkrootkit.log $REPORT_DIR/chkrootkit_$HOST_$DATE.log
  scp $USER@$HOST:/tmp/lynis_audit.log $REPORT_DIR/lynis_$HOST_$DATE.log

  # HTMLにまとめる
  for LOG in clamav_$HOST_$DATE.log rkhunter_$HOST_$DATE.log chkrootkit_$HOST_$DATE.log lynis_$HOST_$DATE.log; do
    echo "<b>$LOG</b>" >> "$REPORT_FILE"
    echo "<pre>" >> "$REPORT_FILE"
    cat "$REPORT_DIR/$LOG" >> "$REPORT_FILE"
    echo "</pre>" >> "$REPORT_FILE"
  done

  echo "</pre>" >> "$REPORT_FILE"
done

echo "</body></html>" >> "$REPORT_FILE"

# ブラウザで表示
xdg-open "$REPORT_FILE"

# 通知
notify-send "Multi-NixOS Security Scan Completed" "Report: $REPORT_FILE"

🔹 ポイント

  1. 各NixOSマシンに SSH + sudo 権限 が必要

  2. ローカルでは firewall / ClamAV / rkhunter / auditd を常時有効にして安全維持

  3. 管理PCで スキャン・ログ収集・HTML統合レポート作成 を一括実行

  4. xdg-open でブラウザ表示、notify-send で通知


💡 注意:

  • chmod +x multi-nixos-scan.sh を付与

  • yourusername を管理PCのユーザー名に置き換え

  • 各ホストで SSH キー認証を設定すると自動化がスムーズ

  • 大量データの場合はログのみ転送を推奨


この構成で、複数台のNixOSを1台の管理PCからまとめて監査し、HTMLレポートで一目で確認可能 になります。

希望なら、さらに GUIでボタン式操作して「個別PCを再スキャン」「ログを直接開く」 機能も追加できます。

追加しますか?

1台のPC でまとめてセキュリティチェックや管理をしたい

 なるほど、つまりこういう状況ですね: 複数台の NixOSマシン がある それぞれ個別にスキャンや管理をするのは面倒 1台のPC でまとめてセキュリティチェックや管理をしたい かつ、各PCのセキュリティを守れる形にしたい 🔹 実現の考え方 ...