view slide/template.md @ 23:8c6eb24536be default tip

update
author kiyama <e185758@ie.u-ryukyu.ac.jp>
date Fri, 16 Feb 2024 08:36:07 +0900
parents 5f7e64ac5314
children
line wrap: on
line source

---
marp: true
theme: cr
paginate: true
---

# システム管理を体験させる学生実験に関する取り組み

<!--
スピーカーノート
-->

琉球大学 理工学研究科 知能情報プログラム
並列信頼研
木山 瑞基

<!-- ---

## 発表目次

- システム管理チームの活動
- 演習科目での取り組み
- 問題点 -->

---

### 教育研究用情報システム

- 本コースには教員・学生が利用するシステムがある
  - 授業や研究、演習で利用するサービスを提供している
- 有志の学生が主体となって管理している
  - 実際に利用者がいる為実践的な知識が得れる
  - チームで取り組む為コミュニケーション能力が身に付く

- 演習科目のテーマでも管理活動が行われている

<!-- ---

### システム管理チームの取り組み

- 週に一回のミーティング
  - zoomで遠隔で行っている
- 利用者からの問い合わせに対応
  - 学生の学外公開サーバーの監査
- 障害発生時の修正
- システムのバージョンアップデート
- Hands onの開催
- 新入生向けのインストール大会
- 作業ログやドキュメントの記述
  - scrapboxに記載 -->

---

### 演習科目について
<!-- 正式名称はエンジニアリングデザイン演習 -->

- 三年時を対象に開講している必修講義
  - 複数テーマが存在しそのうちの一つにシステム管理がある
- 主にzoomを用いて遠隔で授業を行っている
  - 生徒の一人が画面共有し管理者が指示を出す形で行っている
  

- サーバー室の見学・学科システムの紹介
- オンプレサーバーへの接続設定

---

### 演習科目でのシステム管理チーム

- サーバー班、web班、セキュリティ班にグループ分け
- サーバー班
  - システムのバックアップの修正
  - 貸し出しVMのテンプレートの修正
- セキュリティ班
  - 脆弱性診断ツールであるVulsの構築

---

### 実験演習に関するアンケート結果

- システム管理へのモチベーション
  <!-- - 卒業単位取得の為という回答は無かった -->
  - それぞれシステム管理に関する技術習得を目的として受講していた
- サーバー管理への興味度
  - 半数が興味を持ったと回答

- 自主性について確認するアンケート
  - 作業者としての回答が少ない
  - 作業やドキュメントを見て学習したという回答が多かった
- システム管理の難易度
  - 必要な知識が不足していたという回答が見受けられた

---

### 問題点

<!-- - システム管理チームの人数不足 -->
- 学生の知識のギャップ
  - 学生にシステム管理に必要な知識がない
  - 実行するコマンドを理解していない
  - 指示の途中でコマンドを実行してしまうケースが見られた
- 管理作業の難しさ
- あくまで管理体験だった
  - 権限を与えず仮想環境上で作業を行った
- 演習を行う学生が少ない
  - 大勢の前で画面共有することの怖さが考えられる

<!-- ---

## チャットシステムを利用したシステム管理の提案

- システムへのアクセス,権限昇格を必要としない
- 一人で実行可能 -->

---

## チャットシステムを利用したシステム管理の提案

- Mattermostのスラッシュコマンドを利用しシステムを管理する
- 任意のエンドポイントに対してリクエストを送信する事ができる
- スラッシュコマンドの実行結果はbot経由でチャット上に表示される
- リクエストに対しHTTPサーバーから基幹サーバーに対して処理を投げる
<!-- - 管理者権限を必要とする操作は制限するように設定した -->

---
### 従来手法

- 仮想環境の確認
- ファイルシステムの確認
- バックアップの確認

- これらは対象のサーバーにアクセスしroot権限を得てコマンドを実行する必要がある
  - サーバーへのアクセスの設定が必要
  - ユーザーに管理者権限を与える必要がある

---

## 従来の手法 vmの監査
<!-- 公開するVMサーバーはセキュリティ基準を満たしているか監査する必要がある
学生はアクセス制限やセキュリティアップデートの自動化などのセキュリティ対策を行う
 -->
 - 学生が借りたVMサーバーにグローバルIPを割り振る際に監査がある
- 生徒側
  - 学生はアクセス制限やセキュリティアップデートの自動化などを行う
  - 監査用アカウントを作成し管理者にアクセス情報と共に問い合わせする

---

## 従来の手法 vmの監査

- 管理者側
- サーバーにログインし以下の項目を確認
  - アクセス制限の確認
    - /etc/hosts.allow /etc/hosts.denyの確認
  - 不審なユーザーがいないかの確認
  - ssh
    - rootでアクセス出来るか
    - パスワード認証出来るか
    - デフォルトポートから変更されているか
  - セキュリティアップデートが自動化されているか 

---

## 従来の手法 管理者権限の追加・削除
<!-- データ交換フォーマット
ldapのデータ情報を編集できるファイル -->
- ldapの操作
  - 基幹サーバーにログインしsyskanユーザー変更
  - ldifファイルを作成
  - 以下のコマンドを打つ

```
$ldapmodify -f iesudoers.ldif -x -H host -D binddn -W
```

---

## システムの構成図

- 基幹システム上にHTTPサーバーコンテナを構築した
- HTTPサーバーはGolangを使用した
<!-- - コンテナ -->

![bg right:55% 85%](figs/chatsystem4.png)

---

## 提案システムの実行例
- ユーザーが実行したコマンドの結果のみ表示される
- 実行ユーザーと実行コマンドを含めた結果を表示
![w:800](figs/slashcommand-exp.png)

---

## 認証の実装
<!-- DN織別名 -->
- 一部の管理者権限を必要とするコマンドの実行時の認証
- 学科のシステムはLDAP経由でアカウントを管理している
- サーバー上の管理者権限もLDAPによって管理されている
  - 特定の識別名にユーザー情報のuidを追加することで管理されている
- Mattermostのuser_nameはLDAPのuidが登録される
- Mattermostのスラッシュコマンドは実行時に操作者のuser_nameが送信される
- そのuser_name(uid)を使用し検索を行うことで管理者かわかる

---

## 実装したスラッシュコマンド

- 仮想環境の確認
  - podmanやKVMの情報を表示
- バックアップの確認
  - 基幹サーバーで動作しているバックアップの情報
- ファイルシステムの確認 
  - cephの状態やディスクの空き容量を確認

---

### 仮想環境の確認

- 選択したサーバーで動作しているpodmanの表示

```
/syskan podman ps {aman, braun, christina, daru}
```

- コンテナのログを表示

```
syskan podman logs $podman_name {aman, braun, christina, daru}
```

- コンテナに関する情報を表示

```
/syskan podman inspect $podman_name {aman, braun, christina, daru}
```

- podman系のスラッシュコマンドの詳細を表示

```
/syskan podman help
```

---

### 仮想環境の確認

- 選択したサーバーで動作しているVMを表示

```
/syskan vm list {aman, braun, christina, daru}
```

---

### バックアップの確認

- バックアップ先のディレクトリにあるpodman関連のディレクトリ表示

```
/syskan backup podman
```

- バックアップ先のディレクトリにあるkvmテンプレートファイル表示

```
/syskan backup kvm-tpl
```

- バックアップの実行ログを表示

```
/syskan backup log
```

- backup系のスラッシュコマンドの詳細を表示

```
/syskan backup help
```

---

## ファイルシステムの確認

- Ceph Storage Clusterのステータスについての情報を返す

```
/syskan ceph health
```

- より詳細なCeph Storage Clusterのステータスについての情報を返す

```
/syskan ceph status
```

- ceph系のスラッシュコマンドの詳細を表示

```
/syskan ceph help
```

- 選択したサーバーのディスク空き容量を表示

```
/syskan df {aman, braun, christina, daru}
```
    
---

### システム管理者が使用するコマンド

- VMの監査
  - 学生が借りたVMサーバーにグローバルIPを割り振る際の監査
- 管理者権限の付与

---

## 実装したコマンド vmの監査
<!-- 定期的に実行する処理やシステムの調査などに使用する処理などに絞って実装を行なった -->

- 監査を受ける生徒が使用するコマンド
  - アクセス制限や不要なユーザー、システムの削除などを行う
  - 監査用のアカウントを作成し、下記コマンドを実行して公開鍵を登録
  - /syskan vm key-gen $vm-name $IPaddress
  ![w:650 ](figs/key-gen.png)

---

## 実装したコマンド vmの監査

  - 上記の生成された鍵を登録したVMに対して監査を実行する
    - /syskan vm audit $vm-name $loginUsename $IPaddress
  ![w:600 ](figs/vmaudit.png)

---



## 実装したコマンド 管理者権限の追加・削除
- 管理者権限を付与するコマンド
  - /syskan ldap add sudoers $UID $minutes
- 管理者権限を持つ学生から権限を削除するコマンド
  - /syskan ldap delete sudoers $UID
<!-- - ![w:600 ](figs/ldapadddel.png) -->
  
- 特定の生徒のLDAP情報を取得するコマンド
  - /syskan ldap search $UID

---

## チャットシステムを用いたシステム管理の評価 利点

- サーバーにアクセスすることなくコマンドを実行できる
- 権限が無くてもコマンドを実行できる
- 複雑なオプションやサーバー上のpathを覚える必要がない
  - 操作ミスが無く安心して実行できる
- チャットなのでCLIと比べコマンドを実行しやすい
  - 大勢に見られての実行ではない為精神的なハードルが低い
- 頻繁に使用する処理をサーバーにアクセスすることなく行える

---

## チャットシステムを用いたシステム管理の評価 欠点

- 必要なコマンドのリストの選択と実装が必要
- セキュリティリスクがある
- 簡易的な作業しかできない
  - 詳細な調査や構築ができない

---

## まとめ

- 科目演習のテーマの一つとしてシステム管理体験をさせた
- しかし、CLIの難易度の高さや知識のギャップと言った問題点が挙げられた
- そこでチャットシステムを用いたシステム管理を提案した
- サーバーへのアクセスや権限を必要とせずにシステムの管理が可能となった
- 誤ってシステムに影響を与えるコマンドを実行するリスクがない

---

## 今後の課題

- スラッシュコマンドを使用してもらう
- スラッシュコマンドの実装
  - 他にもシステムの状態を確認する処理や定期的に利用する処理の追加
  - セキュリティ対策が必須
- 管理メンバーの引き継ぎ
  - 学生メンバーの3人中2人が今年卒業、指導教員も来年で定年
- 次期システム更新
  - 2025年にはシステム更新作業がある