checklist


# Windows Server
## 0. SSHを設定する
＜参考文献 ＞
https://learn.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse
https://tech-mmmm.blogspot.com/2019/06/windows-server-2019openssh.html
## 1. アカウント管理
### パスワードの複雑さと更新周期を確認する
- 「スタートメニュー」から「管理ツール」を開き、「ローカルセキュリティポリシー」を選択します。
- 「パスワードポリシー」をクリックし、パスワードの複雑さと更新周期を確認します。

Powershell  
```
Get-ADDefaultDomainPasswordPolicy
```

### 未使用のアカウントを無効化する
Powershellで以下のコードを実行する．
Powershell
```
Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00
```
このコマンドでは、90日間使用されていないアカウントが検索されます。必要に応じて、期間を変更することができます。

Poweeshell
```
Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 | Disable-ADAccount
```
このコマンドで、上記のコマンドで表示されたアカウントが無効になります。

以上の手順で、PowerShellを使用して未使用のアカウントを無効にすることができます。ただし、アカウントが使用されなくなった理由を確認するために、アカウントを完全に削除する前にしばらく待つことをお勧めします。また、セキュリティ上の理由から、アカウントを削除する前にアカウント所有者に通知することも重要です。

### 管理者アカウントのパスワードを変更し、適切に保管する
1. 「スタート」メニューから「管理ツール」を選択し、「コンピューターの管理」を開きます。
1. 「ローカルユーザーとグループ」を選択し、パスワードを変更したいアカウントを選択します。
1. 右クリックして、「プロパティ」を選択します。
1. 「一般」タブで、「ユーザーアカウントを変更する」をクリックします。
1. 新しいパスワードを入力し、確認用にもう一度入力します。
1. 「OK」をクリックして変更を保存します。
### 不要な権限を持つアカウントを削除する
ローカルユーザーアカウントの一覧を表示し、アカウント名のみを取得するコマンドを以下に示す．

Powershell
```
Get-LocalUser | Select-Object Name
```

管理者権限を持つアカウント名の一覧を表示するコマンドは、以下の通りです。

Powershell
```
Get-LocalGroupMember Administrators | Select-Object Name
```

このコマンドは、Administratorsグループに属するメンバーの一覧を表示し、アカウント名のみを取得します。上記のコマンドは、管理者権限を持つアカウント名を取得するための代表的なコマンドの1つです。ただし、システムによって設定が異なる場合がありますので、実際には適切なコマンドを使用する必要があります。
### パスワードポリシーを強化する
1. サーバーマネージャーを開きます。    
1. 左側のメニューから、[ローカルサーバー]を選択します。    
1. [ローカルサーバー]画面の右下にある[パスワードのポリシーの編集]をクリックします。    
1. パスワードポリシーの設定が表示されます。必要に応じて設定を変更します。設定の内容は以下の通りです。  

- パスワードの最小文字数
- パスワードの最大文字数
- パスワードに
## 2. ファイルシステムセキュリティ
### 共有フォルダに対して適切なアクセス制御を設定する
1. 共有フォルダを右クリックしてプロパティを選択します。  
1. プロパティ画面の[共有]タブを選択します。    
1. [共有の種類]から、[詳細設定]を選択します。  
1. [アクセス権限]をクリックします。    
1. [新規追加]をクリックし、アクセス権限を設定するユーザーまたはグループを選択します。  
1. [アクセス権限の種類]から、許可するアクセス権限を選択します。一般的な権限には、読み取り、書き込み、実行などがあります。  
1. [OK]をクリックして、設定を保存します。   

また、より詳細なアクセス権限を設定する場合は、[詳細設定]から[高度な共有設定]を選択して、詳細な設定を行うことができます。    
注意点として、セキュリティ上重要な共有フォルダの場合は、アクセス権限を設定する前に、どのユーザーやグループにアクセス権限を与えるか慎重に検討することが必要です。また、定期的にアクセス権限の見直しを行い、不必要な権限が与えられていないか確認することも重要です。
### ACLの確認と必要なアクセス権限のみが割り当てられていることを確認する
1. 共有フォルダを右クリックして、プロパティを選択します。
1. プロパティ画面の[セキュリティ]タブを選択します。
1. [詳細設定]をクリックします。
1. [アクセス許可]タブを選択します。
1. フォルダに割り当てられているアクセス権限の一覧が表示されます。各ユーザーまたはグループに割り当てられている権限が表示されます。
1. 不要なユーザーまたはグループが存在する場合は、削除します。
1. 残されたユーザーまたはグループについて、必要なアクセス権限のみが割り当てられていることを確認します。必要な権限以外の権限が割り当てられている場合は、その権限を削除します。

また、ACLの確認や必要なアクセス権限のみが割り当てられていることを確認するために、定期的にフォルダの監査を行うことも重要です。監査によって、不正アクセスの疑いがあるアクティビティを特定し、対策を講じることができます。
### ファイルシステムの暗号化の確認
1. ファイルやフォルダを選択し、右クリックします。
1. ポップアップメニューから「プロパティ」をクリックします。
1. 「詳細設定」をクリックします。
1. 「詳細属性」の一覧から「暗号化の詳細情報」を見つけ、その横にある「表示」をクリックします。
1. 暗号化の詳細情報ダイアログが開かれます。このダイアログには、ファイルの暗号化状態が表示されます。暗号化されている場合、"暗号化"の文字列が表示されます。
1. 暗号化が有効になっている場合、ダイアログの下部には「証明書の詳細情報」が表示されます。この情報には、ファイルの暗号化に使用された証明書の情報が含まれています。

また、PowerShellを使用して、ファイルシステムの暗号化を確認することもできます。以下のコマンドを使用します。

```
Powershell
Get-ChildItem -Path <FolderPath> -Recurse | ForEach-Object { if ((Get-FileHash $_.FullName -Algorithm MD5).Hash -ne (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash) { Write-Output $_.FullName } }

```
このコマンドは、指定したフォルダ以下のファイルの暗号化状態を確認します。指定したフォルダ内のすべてのファイルが暗号化されている場合、何も出力されません。ただし、フォルダ内のいくつかのファイルが暗号化されていない場合、それらのファイルのパスが出力されます。

## 3. パッチ管理
### Windows Updateが有効になっているか確認する
1. スタートメニューを開き、「設定」をクリックします。
1. 「更新とセキュリティ」をクリックします。
1. 「Windows Update」をクリックします。
1. 「詳細オプション」をクリックします。
1. 「自動更新」の項目が「オン」になっていることを確認します。
### 最新のパッチが適用されていることを確認する
1. スタートメニューを開き、「設定」をクリックします。
1. 「更新とセキュリティ」をクリックします。
1. 「Windows Update」をクリックします。
1. 「更新プログラムの確認」をクリックします。
1. システムにインストールされていない更新プログラムがある場合は、ダウンロードとインストールをクリックします。

また、PowerShellを使用して、最新のパッチが適用されているか確認することもできます。以下のコマンドを使用します。

```
Powershell
Get-HotFix
```
このコマンドは、Windowsに適用されているすべてのホットフィックスを表示します。最新のパッチがインストールされている場合、表示されるホットフィックスの一覧に含まれます。最新のパッチがインストールされていない場合は、Windows Updateを実行して、最新のパッチをインストールしてください。
### パッチが必要なソフトウェアを確認する
1. スタートメニューを開き、「設定」をクリックします。
1. 「更新とセキュリティ」をクリックします。
1. 「Windows Update」をクリックします。
1. 「オプション」をクリックし、画面下部にスクロールします。
1. 「更新プログラムの確認」をクリックします。
1. 「検出された更新プログラムの表示」をクリックします。

これにより、Windows Updateによって自動的に検出された更新プログラムの一覧が表示されます。この一覧には、パッチが必要なソフトウェアが含まれている場合があります。必要な場合は、更新プログラムをインストールして、システムを最新の状態に保ちましょう。

## 4. ネットワークセキュリティ
### ファイアウォールの有効化と必要なポートのみが開かれていることを確認する
1. スタートメニューを開き、「Windows セキュリティ」をクリックします。
1. 「Windows Defender ファイアウォール」をクリックします。
1. 「プライベート ネットワークの設定」、「パブリック ネットワークの設定」の両方で、ファイアウォールが「オン（推奨）」になっていることを確認します。
1. 「高度な設定」をクリックします。
1. 「インバウンド規則」をクリックします。
1. 一覧から、不要なポートを使用するプログラムやサービスに関する規則を削除します。
1. 必要なポートを開けるために、「新しい規則」を作成します。
1. 「規則の種類」で「ポート」を選択します。
1. ポート番号を指定します。
1. 「接続を許可する」を選択します。
1. 適用するプロファイルを選択します。
1. 規則の名前と説明を指定します。

#### 不要なポートの例
- 20/tcp, 21/tcp: FTP (File Transfer Protocol)
- 23/tcp: Telnet
- 69/udp: TFTP (Trivial File Transfer Protocol)
- 135/tcp, 139/tcp, 445/tcp: NetBIOS
- 1433/tcp, 1434/udp: Microsoft SQL Server
- 1900/udp: SSDP (Simple Service Discovery Protocol)
- 5353/udp: mDNS (Multicast DNS)
- 5800/tcp, 5900/tcp: VNC (Virtual Network Computing)
- 6667/tcp: IRC (Internet Relay Chat)
- 8000/tcp: HTTP (Alternate)
- 8080/tcp: HTTP (Alternate)
### 不要なサービスを無効化する
1. 「Windowsキー + R」を押して「実行」ダイアログを開きます。
1. 「services.msc」と入力して「OK」をクリックします。
1. サービス一覧が表示されるので、無効化したいサービスを右クリックし、「プロパティ」をクリックします。
1. 「スタートアップの種類」を「無効」に変更し、「OK」をクリックします。

上記手順で、選択したサービスが無効化されます。ただし、無効化するサービスによっては、他のサービスやアプリケーションに影響が出る可能性があるため、注意が必要です。また、サービスを無効化する前に、そのサービスがどのような役割を持っているのかを調べ、影響を確認することを推奨します。
#### 不要なサービスの例
- Telnet
- FTP
- SNMP (Simple Network Management Protocol)
- TFTP (Trivial File Transfer Protocol)
- Remote Registry
- Remote Desktop
- WebDAV (Web Distributed Authoring and Versioning)
- NetMeeting Remote Desktop Sharing
- IIS (Internet Information Services)
- Windows Media Services
- Print Spooler
- Bluetooth Support Service
- Remote Assistance and Remote Desktop
- Server Message Block (SMB) 1.0/CIFS File Sharing Support

ただし、不要なサービスは環境によって異なります。セキュリティ上の観点から、必要なサービスのみが実行されていることを確認することが重要です。
### 無線ネットワークの設定を確認する
1. Windowsキー + X キーを同時に押し、コンテキストメニューを開きます。
1. 「ネットワーク接続」を選択します。
1. 「Wi-Fi」を選択します。
1. 「Wi-Fi」の下にある「繋がっている」または「接続している」を選択します。
1. 「プロパティ」をクリックします。
1. 「セキュリティ」タブを選択します。

ここで、ネットワーク名、暗号化方式、認証方式を確認できます。また、必要に応じて、接続先のパスワードを変更することもできます。

### 不要なNICを無効化する
1. デバイスマネージャーを開くために、[Windowsキー] + [X] キーを同時に押して、[デバイスマネージャー] をクリックします。
1. デバイスマネージャーで、無効にしたいNICを探します。
1. NICを右クリックし、[無効化] を選択します。
1. [はい] をクリックして確認します。

これで、不要なNICは無効化され、システムに接続されたNICだけが有効になります。

#### 不要なNICの例
- 仮想NIC：ハイパーバイザーで仮想マシンを実行する場合に使用されます。
- 無線NIC：有線LANに接続されている場合には、無線LANを無効にすることができます。
- Bluetooth NIC：コンピュータにBluetoothデバイスが接続されていない場合、Bluetooth NICを無効にすることができます。
- チーミングNIC：2つ以上のNICをまとめて1つの論理NICとして使用する場合に使用されます。ただし、チーミングNICを使用していない場合は、無効化することができます。

注意：NICを無効化する前に、そのNICが本当に不要であることを確認してください。不要なNICを無効化することで、ネットワーク接続が失敗する可能性があります。
## 5. セキュリティログの監視
### イベントログが有効になっていることを確認する

1. 「スタート」メニューを開き、検索ボックスに「イベントビューアー」と入力します。
1. イベントビューアーアプリを選択して開きます。
1. イベントビューアーの左側のペインで、「Windowsログ」を展開します。
1. 「システム」または「セキュリティ」ログを選択します。
1. 右クリックメニューから、「プロパティ」を選択します。
1. ログのプロパティウィンドウが開くので、「一般」タブをクリックします。
1. 「このログを有効にする」が選択されていることを確認します。
1. 「適用」をクリックして変更を保存します。

これにより、選択したログのイベントが記録され、必要に応じて分析できるようになります。また、必要に応じて、イベントログの保存場所やサイズの制限などの設定も変更できます。
### イベントログの保存期間を確認する
1. 「イベントビューアー」を開きます。
1. 左側のペインで「Windowsログ」をクリックし、下に展開します。
1. イベントログの種類（セキュリティ、システム、アプリケーション、など）を選択します。
1. 右側のペインで、「アクション」→「ログのクリア」と進みます。
1. 「ログをクリアする前に、ログの保存期間を確認してください。」という警告が表示されます。ここで、「保存期間」を確認できます。
1. 「OK」をクリックして警告を閉じます。

また、保存期間はグループポリシーで設定されることが多いため、以下の手順で確認できます。

1. 「gpedit.msc」を実行し、ローカルグループポリシーエディタを開きます。
1. 「コンピュータの構成」→「管理用テンプレート」→「Windowsコンポーネント」→「Windows Event Log」を選択します。
1. 「Application」「Security」「System」のそれぞれについて、「ログを保持する日数」の設定を確認します。
### イベントログを定期的に監視し、不審なアクティビティを検出する
1. イベントログの監視には、Windowsの組み込みツールである「イベントビューアー」を使用します。スタートメニューから「イベントビューアー」を検索して起動します。
1. 「イベントビューアー」が起動したら、左側のメニューから「Windowsログ」を選択します。
1. 「Windowsログ」の下には、システム、セキュリティ、アプリケーションなど、様々なログが表示されています。ここで、セキュリティログを選択します。
1. セキュリティログを選択すると、右側にログが表示されます。ここで、適切な検索条件を指定して、不審なアクティビティを検索します。例えば、失敗したログイン試行やセキュリティ上のイベントなどを検索することができます。
1. 検索結果が表示されたら、それぞれのイベントを詳しく確認して、不審なアクティビティがあるかどうかを判断します。不審なアクティビティがある場合には、必要な措置を講じる必要があります。
1. イベントログの保存期間を確認するには、「イベントビューアー」の左側のメニューから「操作」→「ログのクリア」と進み、表示される画面で「ログの保持期間」を確認します。必要に応じて、ログの保持期間を変更することができます。

以上の手順で、Windows Server 2019のイベントログを定期的に監視し、不審なアクティビティを検出することができます。

## 6. アプリケーションセキュリティ
### 不要なアプリケーションをアンインストールする
1. 「スタート」ボタンをクリックして、[Windowsシステムツール]から[コントロールパネル]を選択します。
1. [プログラム]をクリックし、[プログラムと機能]をクリックします。
1. アンインストールしたいアプリケーションを選択して、[アンインストール]をクリックします。
1. アンインストールを確認するダイアログボックスが表示された場合は、[はい]をクリックします。
1. アンインストールが完了するのを待ちます。

注意: アプリケーションをアンインストールする前に、そのアプリケーションに関連するデータがすべてバックアップされていることを確認してください。また、システムに重要な影響を与える可能性のあるアプリケーションをアンインストールする前に、管理者権限を持つユーザーであることを確認してください。
#### 不要なアプリケーションの例
- ゲームアプリ
- インストールしていないウェブブラウザ
- メディアプレイヤー
- インストールした覚えのないツールバー
- オンラインストレージアプリ
- ビデオ通話アプリ
- ソーシャルメディアアプリ
- インストールされたプリンタードライバー（使用していないプリンターに関連している場合）
- クリーンアップツールやシステム最適化ツールなど、悪意のあるソフトウェアになり得るもの
#### 不要なアプリケーションの見つけ方
1. プログラムと機能のリストを確認する：Windowsの「プログラムと機能」機能を使うと、インストールされているアプリケーションの一覧を確認することができます。この一覧から、不要なアプリケーションを見つけることができます。
1. スタートアップのリストを確認する：Windowsのスタートアップに登録されているアプリケーションを確認することで、システム起動時に自動的に起動されるアプリケーションを見つけることができます。
1. サードパーティのアプリケーションを使う：Windowsには、不要なファイルやレジストリエントリを削除することができるサードパーティのアプリケーションがあります。例えば、CCleaner、PC Decrapifierなどがあります。
1. PowerShellスクリプトを使う：PowerShellを使って、インストールされているアプリケーションを確認することができます。以下のコマンドを実行することで、インストールされているアプリケーションの一覧を取得することができます。
```
Powershell
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
```
このコマンドを実行すると、DisplayName、DisplayVersion、Publisher、InstallDateの情報を持つ表が出力されます。この情報を使って、不要なアプリケーションを見つけることができます。
### アプリケーションが適切なセキュリティ設定を持っていることを確認する
1. アプリケーションの実行権限を確認する: アプリケーションが必要な権限のみを持っていることを確認します。たとえば、特定のアプリケーションがファイルを書き込む必要がある場合、そのアプリケーションにはそのフォルダに対する書き込み権限だけが与えられているか確認します。
1. ポート番号を確認する: アプリケーションが使用するポート番号を特定し、必要に応じて不必要なポートを閉じます。このようにすることで、攻撃者がそのアプリケーションにアクセスすることを防ぐことができます。
1. バージョンを確認する: アプリケーションが最新バージョンであるかどうかを確認します。最新バージョンには、以前のバージョンで発見された脆弱性が修正されている場合があります。
1. セキュリティ設定を確認する: アプリケーションが適切なセキュリティ設定を持っていることを確認します。たとえば、パスワードや他の機密情報を保存するための暗号化が有効になっているかどうかを確認します。
1. アプリケーションのログを監視する: アプリケーションのログを監視し、アプリケーションにアクセスしたすべてのユーザーの活動を追跡します。不審なアクティビティを見つけた場合は、すぐに適切な対処を行います。
## 7. ウイルス対策
### ウイルス対策ソフトウェアがインストールされていることを確認する
1. スタートメニューを開き、[設定]を選択します。
1. [更新とセキュリティ]を選択します。
1. 左側のメニューから[Windows セキュリティ]を選択します。
1. [ウイルスおよび脅威の保護]を選択します。
1. [ウイルスおよび脅威の定義の更新]の下にある[詳細情報]を選択します。
1. ここで、ウイルス対策ソフトウェアがインストールされているかどうかを確認できます。

また、コントロールパネルからプログラムを一覧表示して、ウイルス対策ソフトウェアが表示されるかどうかを確認することもできます。
### ウイルス対策ソフトウェアが定期的に更新されているこを確認する
ウイルス対策ソフトウェアが定期的に更新されていることは、セキュリティ上非常に重要です。定期的な更新を怠ると、新しいウイルスやマルウェアに対する保護ができなくなり、システムに脆弱性が生じる可能性があります。以下は、ウイルス対策ソフトウェアが定期的に更新されていることを確認する方法です。

1. ウイルス対策ソフトウェアの自動更新機能を確認する: 多くのウイルス対策ソフトウェアは、自動更新機能を提供しています。この機能を有効にしておけば、ソフトウェアが自動的に最新の定義ファイルをダウンロードして更新してくれます。ウイルス対策ソフトウェアの設定を確認し、自動更新機能が有効になっているかどうかを確認します。
1. 定期的に手動で更新する: 自動更新機能が提供されていない場合、手動で更新する必要があります。ウイルス対策ソフトウェアのUIを開き、手動で更新するオプションを探します。このオプションを選択すると、ソフトウェアが最新の定義ファイルをダウンロードして更新します。
1. ソフトウェアベンダーのウェブサイトを確認する: ウイルス対策ソフトウェアのベンダーのウェブサイトにアクセスし、最新の定義ファイルが提供されているかどうかを確認することもできます。ベンダーのウェブサイトにアクセスし、最新の定義ファイルが提供されているかどうかを確認し、必要に応じて手動で更新することができます。
1. イベントログを監視する: ウイルス対策ソフトウェアが更新されていない場合、システムイベントログに関連するエラーや警告が記録されることがあります。イベントログを監視し、これらのエラーまたは警告が表示されないことを確認します。