メインコンテンツまでスキップ

環境構築ガイド2

はじめに

本記事は、防御学習のために企業システムを安全に再現するための長編ハンズオンです。
扱うのは「環境構築」と「運用確認」まで。

  • 対象: 初学者(仮想化、Windowsサーバ、ネットワークをこれから学ぶ方向け)
  • 範囲: Proxmox / AD DS / DNS / SMBファイルサーバ / Webサーバ / ドメイン参加クライアント
  • 方針: 有料無料の選択肢がある場合は無料を優先
  • 目的: 再現性のあるラボを作り、復元訓練・ログ確認・運用練習ができる状態にする

0. 安全方針と前提

0-1. このラボのゴール

  1. 企業ITの基本構成を再現する
  2. ドメイン運用の基本を理解する
  3. 障害/インシデント時に「戻せる」運用を実践する

1. 全体構成(完成イメージ)

1-1. サーバ/端末構成

  • PVE-01 : Proxmox VEホスト
  • DC-01 : Windows Server(AD DS + DNS)
  • FS-01 : Windows Server(ファイルサーバ)
  • WEB-01 : Ubuntu + Nginx(無料構成)
  • CL-01 : Windows 11(ドメイン参加クライアント)

1-2. ネットワーク例

  • 管理: 192.168.10.0/24
  • サーバ: 192.168.20.0/24
  • クライアント: 192.168.30.0/24

1-3. IP割当サンプル

ノードIP備考
PVE-01192.168.10.10Proxmox管理IP
DC-01192.168.20.10DNSも兼任
FS-01192.168.20.20SMB共有
WEB-01192.168.20.30Nginx
CL-01192.168.30.10検証クライアント

2. 準備物

2-1. ハードウェア目安

  • 最小: 4core / 16GB RAM / 500GB SSD
  • 推奨: 8core / 32GB RAM / 1TB SSD

2-2. OSイメージ

  • Proxmox VE ISO
  • Windows Server 評価版 ISO
  • Windows 11 検証用ISO
  • Ubuntu Server LTS ISO

2-3. 先に決める設計値

  1. VMごとのCPU/RAM/ディスク
  2. 固定IP
  3. スナップショット名規則(例: milestone-01-ad-ready

3. Step 1: Proxmox VE 導入(GUI + CLI)

3-1. Proxmoxインストール(物理ホスト)

  1. ISOでUSB作成して起動
  2. インストーラで Install Proxmox VE を選択
  3. ディスク選択、タイムゾーン、管理パスワード、管理NICを設定
  4. インストール完了後に再起動

3-2. Web UIログイン

ブラウザで以下にアクセス。

https://192.168.10.10:8006
  • ログイン画面で
    • Realm: Linux PAM standard authentication
    • User: root
    • Password: インストール時に設定したもの

3-3. GUI初期設定(どのボタンを押すか)

  1. 左ペイン Datacenter をクリック
  2. 右側 Storage タブで local / local-lvm を確認
  3. 左ペイン PVE-01 をクリック
  4. 上部 UpdatesRefreshUpgrade の順で実行

3-4. CLI初期設定(更新)

Proxmoxシェルで実行:

apt update
apt full-upgrade -y
reboot

確認コマンド:

pveversion -v

想定結果:

  • pve-managerproxmox-ve のバージョン一覧が表示される
  • エラーなしで表示されればOK

3-5. Linux Bridge追加(分離ネットワーク)

GUI手順:

  1. PVE-01SystemNetwork
  2. 右上 CreateLinux Bridge
  3. 以下を入力し Create
    • Name: vmbr1
    • IPv4/CIDR: 空欄(L2専用なら)
    • Bridge ports: 空欄(内部利用なら)
  4. 同様に vmbr2 も作成
  5. 右上 Apply Configuration

確認コマンド:

ip -br link | grep vmbr

想定結果:

  • vmbr0, vmbr1, vmbr2UP で見える

4. Step 2: VM共通作成手順(GUI)

4-1. ISOアップロード

  1. 左ペイン local (PVE-01) をクリック
  2. ISO Images タブ
  3. Upload ボタンでISOを追加

4-2. VM新規作成

  1. 右上 Create VM
  2. General タブ
    • VM ID: 101(例)
    • Name: DC-01
  3. OS タブ
    • ISO image: Windows Server ISO
  4. System タブ
    • BIOS: OVMF(任意)
  5. Disks タブ
    • Bus/Device: VirtIO Block
    • Disk size: 100GB(DC例)
  6. CPU タブ
    • Cores: 2(最小)
  7. Memory タブ
    • 4096〜8192MB
  8. Network タブ
    • Bridge: vmbr1(サーバセグメント)
  9. ConfirmFinish

4-3. VM起動とコンソール

  1. 左ペインで DC-01
  2. 上部 Start
  3. 上部 Console でインストールを進める

4-4. 初期完了後のチェック

  • OSログインができる
  • NICが認識される
  • 固定IP設定が反映される

5. Step 3: DC-01(AD DS + DNS)

5-1. Windows初期設定(GUI)

  1. Server Manager を開く
  2. 右上 Local Server
  3. Computer name をクリックして DC-01 に変更
  4. Ethernet をクリックして固定IPを設定
    • IP: 192.168.20.10
    • Prefix: 24
    • GW: 192.168.20.1(必要な場合)
    • DNS: 192.168.20.10
  5. 再起動

5-2. AD DS + DNS役割追加(GUI)

  1. Server Manager
  2. 右上 ManageAdd Roles and Features
  3. Role-based or feature-based installation
  4. 対象サーバ DC-01 を選択
  5. Active Directory Domain Services にチェック
  6. 追加確認で Add Features
  7. DNS Server もチェック
  8. Install

5-3. ドメインコントローラ昇格(GUI)

  1. Server Manager の通知旗アイコンをクリック
  2. Promote this server to a domain controller
  3. Add a new forest
  4. Root domain name: corp.local
  5. DSRMパスワード設定
  6. Next を進め、Install
  7. 自動再起動

5-4. PowerShellでの確認コマンド

Get-ADDomain
Get-ADForest
Get-Service DNS
Resolve-DnsName dc-01.corp.local

想定結果:

  • DNSRoot : corp.local が表示
  • DNSサービスが Running
  • Resolve-DnsName192.168.20.10 が返る

5-5. OU/ユーザ/グループ作成(PowerShell例)

New-ADOrganizationalUnit -Name "Servers" -Path "DC=corp,DC=local"
New-ADOrganizationalUnit -Name "Clients" -Path "DC=corp,DC=local"
New-ADOrganizationalUnit -Name "Users" -Path "DC=corp,DC=local"
New-ADGroup -Name "GG_FS_Sales_RW" -GroupScope Global -GroupCategory Security -Path "OU=Users,DC=corp,DC=local"
New-ADUser -Name "usr-taro" -SamAccountName "usr-taro" -AccountPassword (ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force) -Enabled $true -Path "OU=Users,DC=corp,DC=local"
Add-ADGroupMember -Identity "GG_FS_Sales_RW" -Members "usr-taro"

確認コマンド:

Get-ADOrganizationalUnit -Filter * | Select Name
Get-ADGroup -Identity GG_FS_Sales_RW
Get-ADGroupMember GG_FS_Sales_RW

想定結果:

  • Servers/Clients/Users OUが見える
  • GG_FS_Sales_RW メンバーに usr-taro が表示

6. Step 4: FS-01(ファイルサーバ)

6-1. ドメイン参加(GUI)

  1. SettingsSystemAbout
  2. Rename this PC (advanced)
  3. Change...Domain を選択
  4. corp.local を入力
  5. ドメイン管理者資格情報を入力
  6. 再起動

6-2. 共有フォルダ作成(GUI)

  1. C:\Shares\Sales を作成
  2. フォルダ右クリック PropertiesSharing
  3. Advanced Sharing
  4. Share this folder をチェック
  5. Share name: Sales
  6. PermissionsEveryone を削除
  7. GG_FS_Sales_RW を追加し Change/Read を許可

6-3. NTFS権限(GUI)

  1. PropertiesSecurityEdit
  2. GG_FS_Sales_RW を追加
  3. 必要権限(Modify)を付与
  4. 個別ユーザ直接付与は避ける

6-4. PowerShellで共有作成する場合

New-Item -Path "C:\Shares\Sales" -ItemType Directory
New-SmbShare -Name "Sales" -Path "C:\Shares\Sales" -FullAccess "CORP\GG_FS_Sales_RW"
Grant-SmbShareAccess -Name "Sales" -AccountName "CORP\GG_FS_Sales_RW" -AccessRight Change -Force

確認コマンド:

Get-SmbShare -Name Sales
Get-SmbShareAccess -Name Sales

想定結果:

  • Name : Sales の共有が存在
  • CORP\GG_FS_Sales_RWChange 以上を持つ

6-5. 監査有効化(GUI + コマンド)

  1. Local Security Policy を開く
  2. Advanced Audit Policy Configuration
  3. Object AccessAudit File SystemSuccess/Failure 有効化
  4. 対象フォルダ SecurityAdvancedAuditing で監査エントリ追加

確認コマンド:

auditpol /get /subcategory:"File System"
Get-WinEvent -LogName Security -MaxEvents 20 | Select TimeCreated,Id,Message

想定結果:

  • File System 監査が有効
  • アクセス操作後、Securityログに該当イベントが出る

7. Step 5: WEB-01(Ubuntu + Nginx)

7-1. Ubuntu初期設定

sudo apt update
sudo apt upgrade -y
sudo hostnamectl set-hostname WEB-01

固定IP(netplan例) /etc/netplan/00-installer-config.yaml:

network:
version: 2
ethernets:
ens18:
dhcp4: no
addresses:
- 192.168.20.30/24
routes:
- to: default
via: 192.168.20.1
nameservers:
addresses:
- 192.168.20.10

適用:

sudo netplan apply
ip a

想定結果:

  • ens18192.168.20.30/24 が表示

7-2. Nginx導入

sudo apt install -y nginx
sudo systemctl enable --now nginx
sudo systemctl status nginx --no-pager

想定結果:

  • active (running)

7-3. テストページ作成

echo '<h1>WEB-01 OK</h1>' | sudo tee /var/www/html/index.html
curl -I http://localhost

想定結果:

  • HTTP/1.1 200 OK

7-4. ログ確認

sudo tail -n 20 /var/log/nginx/access.log
sudo tail -n 20 /var/log/nginx/error.log

想定結果:

  • access.log にアクセス記録が増える
  • error.log は重大エラーなし

8. Step 6: CL-01(クライアント)

8-1. ドメイン参加

GUI手順(Windows 11):

  1. 設定システムバージョン情報
  2. ドメインまたはワークグループ を選択
  3. ドメイン を選択し corp.local 入力
  4. ドメイン資格情報を入力
  5. 再起動

8-2. 動作確認コマンド

whoami
systeminfo | findstr /I "Domain"
nslookup dc-01.corp.local
klist

想定結果:

  • Domain: corp.local
  • nslookup192.168.20.10 を返す
  • klist でKerberosチケットが見える

8-3. SMB/Web確認

Test-Path "\\FS-01\Sales"
Invoke-WebRequest -Uri "http://WEB-01" -UseBasicParsing

想定結果:

  • Test-PathTrue
  • StatusCode : 200

9. Step 7: ネットワーク分離と通信ルール

9-1. 最低限の許可通信(例)

  • CL-01 → DC-01: 53,88,135,389,445,464,636,3268
  • CL-01 → FS-01: 445
  • CL-01 → WEB-01: 80/443
  • 管理端末 → 各VM: RDP/SSH/WinRMなど必要最小限

9-2. 疎通確認コマンド

クライアント側:

Test-NetConnection DC-01 -Port 53
Test-NetConnection FS-01 -Port 445
Test-NetConnection WEB-01 -Port 80

想定結果:

  • TcpTestSucceeded : True

Linux側:

nc -zv 192.168.20.10 53
nc -zv 192.168.20.20 445

想定結果:

  • succeeded または open 相当が表示

10. Step 8: ログ可視化の下地づくり

10-1. まず揃える3点

  1. 時刻同期(NTP)
  2. ログ保存期間
  3. 収集対象(Security, System, SMB, Nginx)

10-2. Windowsログ確認

Get-WinEvent -LogName Security -MaxEvents 10 | Select TimeCreated,Id,ProviderName
Get-WinEvent -LogName System -MaxEvents 10 | Select TimeCreated,Id,ProviderName

想定結果:

  • TimeCreated が現在時刻に近い
  • イベントが継続的に出ている

10-3. Linuxログ確認

timedatectl
sudo journalctl -n 30 --no-pager
sudo tail -n 30 /var/log/nginx/access.log

想定結果:

  • System clock synchronized: yes
  • ログ時刻が他サーバと大きくズレない

11. Step 9: スナップショットと復元訓練

11-1. Proxmox GUIでスナップショット

  1. 左ペインでVM選択(例: DC-01
  2. Snapshots タブ
  3. Take Snapshot
  4. Name: milestone-01-ad-ready
  5. Include RAM は必要時のみ
  6. Take Snapshot

11-2. CLIでスナップショット

qm listsnapshot 101
qm snapshot 101 milestone-01-ad-ready --description "AD configured"
qm listsnapshot 101

想定結果:

  • スナップショット一覧に milestone-01-ad-ready が表示

11-3. 復元手順(CLI)

qm rollback 101 milestone-01-ad-ready

確認:

qm status 101

想定結果:

  • VM状態が running または stopped(設定次第)
  • ロールバック後にAD疎通が復旧する

12. トラブルシュート(具体コマンド付き)

12-1. ドメイン参加失敗

確認:

ipconfig /all
w32tm /query /status
nslookup corp.local

見るポイント:

  • DNSがDCを向いているか
  • 時刻ズレが5分以上ないか
  • FQDN解決できるか

12-2. 共有アクセス拒否

確認:

whoami /groups
Get-SmbShareAccess -Name Sales
icacls C:\Shares\Sales

見るポイント:

  • ユーザが想定グループに所属しているか
  • 共有権限とNTFS権限が矛盾していないか

12-3. Web応答なし

確認(WEB-01):

sudo systemctl status nginx --no-pager
ss -lntp | grep ':80'
sudo ufw status

見るポイント:

  • Nginxが起動中か
  • ポート80待受があるか
  • FWで遮断されていないか

13. まとめ

一旦、ここまでで環境構築と基本的な運用確認ができる状態になりました。