view Paper/chapter/syskan-class.tex @ 6:1c9053fca8a6

...
author kiyama <e185758@ie.u-ryukyu.ac.jp>
date Wed, 31 Jan 2024 13:44:33 +0900
parents 61ff8d827f08
children f8a7b9b234ce
line wrap: on
line source

\chapter{演習科目での取り組み}

システム管理活動は2022年度から実践的なシステムの運用,構築に関するスキルを習得することや継続してシステム管理に参加する生徒の確保を目的として演習科目のテーマの1つ(以下よりサーバー班とする)になった.
演習科目とは知能情報分野の専門的な知識を習得することを目的としており,様々なテーマの中から生徒が一つ選択し履修する.
知能情報コースの三年次の学生を対象に前・後期で開講されており,1学年60名ほどでテーマ数が6つほどなので1テーマ当たり10名ほどの受講生がいる.
サーバー班ではシステム管理活動を体験する.しかし現在の学科システムは大規模で様々なサービスが稼働しており複雑である.そこでwebやネットワーク,セキュリティなどの主な学科システムの管理活動ごとのグループを作成し,生徒と指導員を割り振っての取り組みを行った.
以下にサーバー班全体での取り組みと各グループでの取り組みを示す.

\section{サーバー班の取り組み}
サーバー班で学生は基本的にzoomを使用した遠隔授業を通じて活動を行う.
説明や作業を行う際には教員,または生徒の一人が画面共有を行い,それ以外の生徒は必要に応じて作業ログを記載する形になっている.
作業ログやドキュメントは普段システム管理チームが使用しているプロジェクトに招待され,システム管理チームでのscrapboxの使い方の説明を受ける.

授業の初回では,サーバー室の見学や管理しているシステムの説明,基幹サーバーへの接続設定や利用しているサービスへの招待などの設定を行う.

前期の授業では,システム管理活動でのオープンキャンパスへの出展があり,資料の作成,当日の発表などを行った.
資料作成ではシステム管理チームの紹介,メリット,活動内容,管理しているシステムの構成図の作成などをまとめてポスターとして学科webに投稿した.
当日の発表ではプロジェクタを用いてweb上のポスターを共有し参加者にシステム管理活動を説明した.

後期の授業では,本コースの新入生を対象としたインストール大会の資料作成と当日の技術サポートを行った図\ref{fig:install}.本取り組みは新入生が入学後に学内活動を円滑に進める為に実施されている.これにはパソコンの初期セットアップや履修登録に必要な教務情報システムへのログイン,コース内の授業全般で使用するMattermostやZoom,プログラミング環境の構築などが含まれる.
当日の技術サポートでは作業に躓いている新入生に対して個別で対応する.

\begin{figure}[htpb]
    \begin{center}
        \includegraphics[clip,width=16.0cm]{fig/install-page.png}
    \caption{インストール大会の資料.}
    \label{fig:install-page}
    \end{center}
\end{figure}

\section{server班}
サーバー班では基幹サーバー上の不具合の調査やその修正をおこなった.取り組みのいくつかを以下に示す.
\begin{quote}
    \begin{itemize}
     \item バックアップの修正\\
     \item KVMテンプレートイメージファイルの修正\\
    \end{itemize}
\end{quote}

{\bf バックアップの修正}\\
学科システムでは障害が発生した際にデータを復旧できるようにrsnapshotを用いてバックアップを取っている.
このバックアップは主にbraunからNAS上に対してとamaneからクラウドサーバーに対して取っている.
NAS上にバックアップを取っているディレクトリとその役割を以下に示す.
\begin{itemize}
    \item /etc
    \begin{itemize}
        \item 設定ファイルが置かれているディレクトリ
    \end{itemize}
    \item /mnt/cephfs
    \begin{itemize}
        \item cephで同期しているディレクトリ
        \item 学科webやKVMイメージなどが存在する
    \end{itemize}
    \item /ie-ryukyu
    \begin{itemize}
        \item braun上で稼働するコンテナの設定ファイルやマウントディレクトリが存在する
    \end{itemize}  
    \item /mnt/nvme0
    \begin{itemize}
        \item 高速な読み書き可能なnvmeディスク
        \item コンテナイメージやkvmイメージが存在する
    \end{itemize} 
    \item /usr/local
    \begin{itemize}
        \item ローカルで管理するファイルが存在する
    \end{itemize}
    \item ume:/mnt/ie-ryukyu/podman/mattermost/mattermost
    \begin{itemize}
        \item クラウドサーバー上のMattermostの設定・マウントファイルが存在する
    \end{itemize}
\end{itemize}
クラウドサーバーに対して取っているディレクトリとその役割を以下に示す.
\begin{itemize}
    \item amane:/home
    \begin{itemize}
        \item ユーザーのホームディレクトリが存在する
    \end{itemize}
    \item amane:/ie-ryukyu/ie-web
    \begin{itemize}
        \item 学科webページが存在する
    \end{itemize}
    \item /mnt/ie-ryukyu/podman
    \begin{itemize}
        \item クラウドサーバー上で稼働しているコンテナサービスの設定ファイルが存在する
    \end{itemize}  
    \item amane:/home/syskan/bkps/ldap-bkp
    \begin{itemize}
        \item ldapのバックアップが存在する
    \end{itemize} 
\end{itemize}
% cephで管理されているディレクトリや学科web,生徒のホームディレクトリのバックアップをとっている.
これまで様々な原因でバックアップが取れていないことがあった為,以前の修正から正常に動作しているかの確認を行った.
braunからNASに取っているバックアップを確認した所,cronの設定ファイルにて\ref{braunrsnapshot}に示すようにバックアップが定期実行されていた.
このcronの設定ファイルからrsnapshotの設定ファイルを確認すると以下のように毎週土曜日の3:30にweeklyが設定されており,ログファイルが/var/log/rsnapshot.logに,バックアップ先が/mnt/ts-nas/ie-ryukyu-bkpに取られていることが確認できた.
\begin{lstlisting}[caption=cron.d,label=braunrsnapshot]
    30 3    * * 6     root    /usr/bin/rsnapshot -c /etc/rsnapshot-ie-ryukyu.conf weekly
\end{lstlisting}

\begin{lstlisting}
    config_version	1.2
    snapshot_root	/mnt/ts-nas/ie-ryukyu-bkp
    cmd_cp		/bin/cp
    cmd_rm		/bin/rm
    cmd_rsync	/usr/bin/rsync
    cmd_ssh	/usr/bin/ssh
    cmd_logger	/usr/bin/logger
    retain	weekly	4
    retain	monthly	12
    verbose		4
    loglevel	3
    logfile	/var/log/rsnapshot.log
    lockfile	/var/run/rsnapshot-ie-ryukyu.pid
    ssh_args	-p 1322
    backup	/etc	localhost/
    backup	/mnt/cephfs	localhost/
    backup	/ie-ryukyu	localhost/
    backup	/mnt/nvme0	localhost/braun-nvme0
    backup	/usr/local	localhost/
    backup	syskan@ume.ie.u-ryukyu.ac.jp:/mnt/ie-ryukyu/podman/mattermost/mattermost	localhost/
\end{lstlisting}
これらの情報からバックアップファイルを確認するとweekly0が作成されており,作成日時を確認すると先週作成されたことがわかった為,scrapboxにこれまでの作業と正常にバックアップがとられている事を記載した.\\
続いてクラウドサーバー上も同様に確認した所,cronでは週と月ごとにバックアップを取得する設定になっており,バックアップの保存先を確認すると最新のものでも作成日時が昨年の2022年9月で止まっていた.\ref{cloudbackup}
\begin{lstlisting}[caption=クラウドサーバーのバックアップファイル一覧,label=cloudbackup]
    drwxr-xr-x 6 root root 81 Mar 29  2022 monthly.11
    drwxr-xr-x 6 root root 81 May  3  2022 monthly.10
    drwxr-xr-x 6 root root 81 May 10  2022 monthly.9
    drwxr-xr-x 6 root root 81 Jun 29  2022 monthly.8
    drwxr-xr-x 6 root root 81 Aug 27  2022 monthly.7
    drwxr-xr-x 6 root root 81 Sep 14  2022 daily.5
    drwxr-xr-x 6 root root 81 Sep 15  2022 daily.4
    drwxr-xr-x 6 root root 81 Sep 17  2022 daily.3
    drwxr-xr-x 6 root root 81 Sep 19  2022 daily.2
    drwxr-xr-x 6 root root 81 Sep 21  2022 daily.1
    drwxr-xr-x 6 root root 81 Sep 22  2022 daily.0
\end{lstlisting}
また,ログファイルを確認すると「/mnt/ie-ryukyu/rsnapshot/daily.6 not present (yet), nothing to copy」とdaily.6が存在しない事からweeklyが生成されていない為,手動でdaily.6のバックアップを作成する事でこの問題を解決した.

% {\bf KVMテンプレートイメージファイルの修正}
% KVMを用いて計算機リソースの貸し出しを行う際に,四つある基幹サーバーで利用できるOSに差分があった.その為,OSのテンプレートファイルをceph上に置きそれぞれのサーバーで共有した上でie-virshから参照できるようにした.


\section{security班}
セキュリティ班では学科システムへの脆弱性診断の構築を行った.システム更新前は脆弱性診断環境が設けられていたが,現在の学科システムにはそのような環境が存在しない.さらに,現在の基幹サービスがコンテナで配信されていることから,移行の容易さと管理のしやすさを考慮し,コンテナ環境での構築を行うこととした.基幹サーバーの中には,一台がグローバルIPを持つものがあり,生徒が利用するVMについても,申請に応じてグローバルIPを付与することができる.そのため,サーバーのスキャンが可能なVulsを脆弱性診断ツールとして選択した.

基幹サーバー上で作業するにはadmin権限が必要だがシステム管理に慣れておらず操作ミスが考えられた.その為貸し出しVM上にPodmanを構築する方法とrootlessで実行できるsinguralityの両方を使用して構築した.
Podmanを使用した演習では学科と同様の環境にする為,ubuntu22.04のKVMイメージにpodman v4をインストールした環境で作業を行った.
Vulsの構築にはdockerはあったがpodmanはなかった為,podman commandを使用できるように下記のようなスクリプトを用意しgitlabにて配布した.
実際に自身で構築したVMをVulsコンテナから診断し結果を確認した.今後はこれらを基幹サーバーに向けて診断を行う為に設定を編集したり,生徒が利用するVMへ診断をする方法や頻度,診断結果の共有などを行う必要がある.