Mercurial > hg > Papers > 2024 > kiyama-master
view Paper/txt.fix @ 19:12d96a796015
add slide mm
author | kiyama <e185758@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 12 Feb 2024 17:05:08 +0900 |
parents | ba032fe28424 |
children |
line wrap: on
line source
chapter/conclusion.tex:システム管理チームは学生が主体となって教育研究用情報システムを構築,運用,保守を行なっていることは珍しい.2015年から運用されていた旧システムを2020年に新システムへと移行することができた.今回構築を行なった教育研究用情報システムは知能情報コースの学生,教職員がより自由に使えるようにコンテナ技術の使用や,VMの操作がie-virshコマンドでできるような環境となった.しかし,システム管理チームは人の入れ替わりが激しいことや,技術の属人化などの課題がある.さらに,今後運用していくシステムの開発,改良などを行なっていかなければらない.この取り組みは,教育研究用情報システムにおける構築した新システムについての取り組みと構築された知能情報コースの学生,教職員が利用しやすいシステムに対してのSSHプロキシサーバである,sshrを元にしたie-sshrの改良を行なうことでシステム管理チームが運用を行なっていく教育研究用情報システムの詳細とsshrのさらなる改善になると考え,これまでの論文を記した. chapter/conclusion.tex:教育研究用情報システムは知能情報コースの学生,教員が自由に研究,課題などの利用しやすいものとなった.ユーザが場合に分けて環境を持つことや演習のために複数のVMを用意することなどが想定される.ie-sshrは目的のサーバを意識せずに接続をすることが可能である.しかし,ie-sshrでは複数の接続先を登録している場合データベースの登録順から引き出されることから最初に登録した先に接続されてしまう.改良方法としてはie-sshrに接続をする際にTUIで接続先を選択する実装を行うなどがある. chapter/conclusion.tex:IPMIではSSHプロキシサーバとしての機能を実装している.知能情報コースでは年に数回の計画停電や台風などの災害などにより緊急で教育研究用情報システムが停止してしむことがある.計画停電の場合は事前に周知されるためシステム管理チームが事前に停止をさせることができる.しかし,台風などの場合はシステム管理チームが危険を避けるため不要に外出を行うことできない.そこで,ie-sshrにIPMIのパケットを取り扱うことができればVPN接続を行わなくてもIPMIを操作できる.実際に機能を作成する場合はSSHとプロトコルが違うためGolangでIPMIを受け取ることができるパッケージを自作することで実現できると考えられる. chapter/ie-sshr.tex:sshr-copy-idは教育情報システムで利用するために開発したコマンドである.sshr-copy-idはsshrと同様にGolangで実装したものである.Golangを採用したのはsshrもGolangで実装されているためOSSとの言語を合わせ統一性を保つためでもある.さらに,コマンドの実装にあたりコマンドラインツールを作成を支援するcobraを用いて開発を行なった.コマンドライン作成支援ツールの使うことでsshr-copy-idの改良をやりやすくするためのものである.コマンドを採用した理由はLDAPサーバなどが教育情報システムで稼働している.Webサイトを公開することで不正にサーバへのアクセスを行われることが考えられる.加えて.知能情報コースのネットワークに限定した場合VPNでの接続を強いられることなどが考えられるため今回は教育情報システム内に接続することで利用できるコマンドにした.教育情報システム内でのコマンド操作を行うことで最小限に第三者からの不正登録を防ぐことができる.さらに,教育情報システムのユーザ管理はLDAPを用いているためコマンドの実装内でLDAPのそのユーザが実在するかの問い合わせをおこなうようにしていることで不正なユーザーの登録を防ぐことができる.下記にsshr-copy-idの実装について図で示す. chapter/ie-sshr.tex:sshr-copy-idはlというオプションでsshrに登録したユーザ名を渡し,kのオプションで登録した公開鍵を渡すことができる.次にsshr-copy-idのLDAPサーバへのユーザ検索の次走について示す. chapter/ie-sshr.tex:となり,クライアントからsshrに鍵,ユーザの登録を行うことでie-sshrを利用することができる.続いて今回のie-sshrの実装部分は以下のようになる. chapter/ie-sshr.tex:FindUpStreamHookではユーザのsshしたいHost先を返す関数である今回のie-sshrではユーザ情報がDB内に存在しているためHost先情報を返すものである.今回は用意したVMのsshtというサーバへ接続をするようにHost 情報を返すように行なった.パスワード認証のみであればFinedUpStreamHook関数のみで行うことができる. chapter/ie-sshr.tex:今回はユーザ情報を元にデータベースからユーザと一致する公開鍵を返すように行なっている. chapter/ie-sshr.tex:OpenSSH7.8以前の鍵の作成はオプションでmをつけることで作成することができる. chapter/ie-sshr.tex:次に,OpenSSH7.8以上で作成される鍵は以下のようになる. chapter/ie-sshr.tex:上記のように秘密鍵のヘッダの形式が異なった.これによりx/crypto/sshは変更されたOpenSSHは鍵の変更を検知できず条件分岐ができなくなった.本家であるx/crypto/sshはすでにOpenSSHの鍵の形式に対応している.そこで,改良されたx/crypto/sshをsshr.cryptoに移植することでx/ssh/cryptoを改良することで改善することができた.具体的な変更については付録に記載する. chapter/ie-sshr.tex:上記のように設定ファイルに記述することでHost1を経由してHost2へと接続する.しかし,sshのProxyJumphsユーザがこ死んで設定を行うもである.故に,システム管理者側がホスト名の変更やIPアドレスの変更名がある場合はユーザ側がシステム変更に追従する必要がある.sshrは多くのユーザがいることや,複雑なシステム構成であり変更の可能性がある場合はie-sshrの方が適していると言える. chapter/ie-sshr.tex:Fortigateの機能としてVirtualIPがある.VirtualIPはFortigateで管理しているグローバルIPアドレスをプライベートIPアドレスを紐づけることによってプライベートネットワーク外からのアクセスが可能である.グローバルIPを管理しているためFortigateの障害が発生すると接続ができるなくなることやFotigate自体の機能性の多いことから設定を行う複雑さがある.ie-sshrはコンテナでの稼働も行えるため復旧をすることは容易である.復旧のしやすさや使いやすさの観点ではie-sshrの方が有利であると言える. chapter/ie-sshr.tex:知能情報コース関係者が利用できるVPNサーバがあるため学内のネットワークに接続したい場合に利用できる.VPNはFortigateの機能を使って稼働している.VPNを接続することで多段sshの手間や知能情報コース,琉球大学内のネットワークに接続を行うことができる.システム管理者がIPの変更を行うことやドメインの変更を行うことにはユーザは追従せざるおえないためie-sshrの方が適していると考えられている. chapter/introduction.tex:琉球大学工学科知能情報コース,情報工学専攻の学生,教員,約300名に無線のネットワークやサーバの貸出サービスといった教育研究用情報システムを提供している.これらの教育研究用情報システムの運用管理はシステム管理チームが行っている.2020年度はシステムの入れ替えを行ったため新たなシステムを構築した.それに伴い教育研究用情報システムの利用者が柔軟にアクセスができるような仕様となった. chapter/introduction.tex:Mattermostはオープンソースソフトウェアのチャットツールである.知能情報コースではオンラインチャットツールのSlackを使用していた.しかし,メッセージの上限などがあったことからサーバ運用を行うことができるMattermostへと移行した.Mattermostは知能情報コースのチーム,システム管理チームのチームなど様々な用途で利用されている.下記に実際のMattermostの示す. chapter/introduction.tex:Redmineはタスクをチケット単位で管理し,チームでの共有が必要な場合はWikiで残すことができる.また,チケットに作業内容を書き込むことができ情報共有や作業の現状などを残すことができる chapter/introduction.tex:ScrapBoxは情報共有サービスの一つである.このサービスはあらゆる情報をリンクすることや,タグ付けすることで情報を繋げて整理することできる.このサービスを利用したのは運用しているRedmineがシステム更新に伴い停止せざるおえない状況が考えられたためScrapBoxを採用した. chapter/introduction.tex:本コースで利用し始めたシステムは2020年度の10月に構築された.旧システムと異なる点は学生,教職員が利用しやすいシステムとして構築された.具体的には旧システムでは踏み台サーバを経由してアクセスを行なっていたことやVMを利用する際システム管理チームへと利用の連絡をしなければならなかった.しかし,現在のシステムは直接教育研究用情報システムに踏み台サーバを経由せずにアクセスができるようになった.本稿では現在運用されている教育研究用情報システムの構成,システム管理者がアクセスを柔軟に変更できるsshrの提案,教育研究用情報システムに特化したie-sshrの開発,改良について報告する. chapter/new_system.tex:知能情報コースのシステムでは旧システムでも利用されていたオープンソースソフトウェアのKVMを利用している.仮想環境の提供は以前はシステム管理チームからVMの作成の依頼を受けてVMを作成できるように行なっていたが新システムではie-virshというvirshのラッパーを使うことで構築ができるようになった.これにより学生,先生が自由に環境を構築できるようになった.また.新システムではRedHat社が提供しているPodmanを使用することでコンテナ環境も教育情報システム上で稼働することができる. chapter/new_system.tex:旧システムでは計画停電,台風などの災害のとき,事前にサーバ室で直接電源を落とすようにしていた.新システムに移行してからはiDracを用いてのシャットダウンを行えるようになった.利用しているネットワーク帯域はVLAN361を利用している.iDracは別ケーブルを経由して接続しているものであるためVMやAPなどへの接続は別のケーブルを経由している.そのため,メインスイッチなどが動作を行なっていれば接続することができる. chapter/new_system.tex:旧システムではVM貸し出しシステムのAkatsukiが稼働している.AkatsukiはRailsで作られたWebアプリケーションである.旧システムではVMの貸し出しすることができたが教育研究用システムではie-virshというコマンドでVMの作成ができる. chapter/new_system.tex:IPアドレス管理サービスは知能情報コースのネットワークに有線接続する際にIPアドレスが振られるため第三者が不正に利用することや不正に知能情報コースのネットワーク内に接続することを防ぐためが目的である.IPアドレス自体はRadiusサーバが管理しておりユーザーのMACアドレスをAkatsukiで登録することによって接続を行うことができる. chapter/sshr.tex:FetchAuthorizedKeysHookはユーザ側とsshrサーバ側での公開鍵認証を行うためのものである.パスワード認証のみの場合は必要がない.sshr側と認証を行う場合は公開鍵をsshrサーバで保持しそれを認証に用いることで認証することができる. chapter/sshr.tex:sshrサーバとユーザとの公開鍵認証を行うためにはクライアント側を認証する公開鍵が必要になる.sshrでは公開鍵認証の登録のためにWebAPIを介して行なっており.ユーザ情報も同じように取得している.sshrでのユーザ情報の管理はデータベースで行なっている.下記にsshrでのテーブルスキーマについて示す. chapter/sshr.tex:表のようにユーザー名,接続ホスト先,クライアントと接続先の公開鍵が必要になる. chapter/sshr.tex:また,示した表のようなデータベースの構成を用いた時のシステム構成の例を下記に示す. chapter/sshr.tex:システムとしてクライアントが使用する場合は一つの認証のように感じるが,実際は2段階の認証をそれぞれ行なっている. chapter/sshr.tex:sshrを用いた場合における第三者からの不正アクセスは通常のsshと認証を突破するリスクは変わらない.sshrサーバは接続先のサーバにパケットを転送する.すなわち,パスワード認証方式の場合sshrサーバがパスワードを読み込んで認証するのではなく接続サーバが認証することになるためsshrサーバを通しての接続もリスクとして変わりはない.公開鍵認証を用いた場合,クライアントとsshrプロキシサーバ,sshrプロキシサーバとSSHサーバ間のセッションの二区間で認証を行う.クライアントからsshrサーバとsshrサーバからSSHサーバ間のセキュリティリスクを最小化できる対策について述べる.まず,sshrサーバはSSHサーバの秘密鍵を保持するためセキュリティを堅牢化する必要性がある.sshrサーバ自体にへのログインユーザの限定,アクセスが可能なIPを内向きのネットワークのみにアクセスを許可などが有効であると言える.次にsshrを経由してのコマンドの実行をされる場合があるためその倍に備えてsshrデーモンはroot権限を持たないユーザで実行しておく.この対策により悪意のある第三者から任意のコマンドを実行された場合でも制限される.次に,SSHサーバにおけるセキュリティ対策について述べる.まず,SSHサーバではrootでリモートログインを禁止することを設定するなどがある.具体的にはsshdのsshd\_configの設定であるPermitRootLoginを使って制限を設けるが可能である.また,SSHプロキシサーバ,sshrサーバの両方で接続可能なポートを変更することでよりセキュリティリスクを下げることができる. chapter/technology_overview.tex:仮想化は,CPUやHDDなどのハードウェアリソースを物理的な構成に依存することなく分割,統合することができる技術である.新システムで用いているサーバ仮想化は仮想化基盤であるVMM(Virtual Machine Moniter)は,物理マシンと同様のアーキテクチャを再現する仮想デバイス上に仮想デバイスを作成する.新システムでも旧システム同様に使用されている. chapter/technology_overview.tex:KVM(Kerbek-based Virtual Machine)とはLinuxに組み込まれたオープンソースの仮想化技術である.KVMによりホストマシンの仮想化を行うことで複数の仮想マシンを構築することが可能である. chapter/technology_overview.tex:コンテナ型の仮想化とは,一つのホストに複数のコンテナと呼ばれる独立空間を形成し,アプリケーションをそれぞれで構築することができる仮想化技術である.コンテナ型はLinuxカーネルの機能であるNameSpace, Cgroup, Capabilityなどの技術によってコンテナが作成される.コンテナ型はVMを作成することに比べ容量を消費せず,オーバーヘッドも小さく,多くのアプリケーションを処理することができる. chapter/technology_overview.tex:Singularityは科学および高性能コンピューテイング環境用に設計されたLinuxコンテナである.Podmanと同じルートレスのコンテナランタイムでもある.KVMなどではGPUのリソースを分割を行うことはできるが十分なパフォーマンスを出すことが難しいがSingularityではGPUを分割して利用することができる. chapter/technology_overview.tex:Hugoは静的なhtmlを生成することができる静的ジェネレーターである.Markdown形式で一定のルールで記述しhugoコマンドを実行することでHTMLファイルが生成される.サーバサイドの処理がないためセキュリティリスクを下げることができる. chapter/technology_overview.tex:Cephは分散オブジェクトファイルシステムと言われているものである.カルフォルニア大学で開発され,2006年にオープンソース化されたものである.特徴として以下のようなものがある. chapter/technology_overview.tex:コンテナレジストリはコンテナイメージをセルフホスティング,バージョン管理,コンテナイメージの配布などを行えるものである.使用するコンテナイメージが内部での利用や外部への後悔ができない場合などにこのようなプライベートレジストリとして利用することができる. chapter/technology_overview.tex:また,YAML形式で書くため学習が容易であることや何度実行しても同じ状態になる冪等性を保つことができる. chapter/technology_overview.tex:Psonoはチームでパスワードを管理することができるオープンソースの一つである.システム管理チームは卒業するとパスワードの引き継ぎなどを行わなければならないがPsonoによってパスワードの変更や引き継ぎなどが容易に行うことができる. chapter/technology_overview.tex:Fortigateはアメリカのフォーティネット社が製造している.UTM(Unifined Threat Management)と呼ばれる総合脅威管理のセキュリティツールである.不正なパケットや通信などを検知することでインシデントを防ぐことや,VirtualIPと呼ばれるグローバルIPとプライベートIPの紐付けなどを設定することができる. chapter/technology_overview.tex:LDAP(Lightweight Directory Access Protocol)はディレクトリデータベースへアクセスを行いユーザーなどの情報を管理するためのプロトコルである.ディレクトリサービスは,読み込みが頻繁に発生するが頻繁に発生する書き込みはほとんど発生しないことを想定して設計されている.また,一般的なディレクトリサービスは以下のような特徴がある. chapter/technology_overview.tex:ssh(Secure Shell)はネットワークの接続された機器を遠隔に操作,管理を行うことができるものである.TelnetやFtPなどの手法でのリモート通信はパスワードを暗号化のない平文の状態で送信してしまうため第三者から盗聴される可能性があるがSSHでは公開鍵暗号を利用し,共通鍵を暗号化して鍵交換を行うためセキュアな通信を行うことができる. chapter/technology_overview.tex:pam\_tally2はある一定の回数ユーザーがアクセスに失敗するとユーザーをロックするソフトウェアである.Fail2banはIPでのアクセスを禁止を行うがIPを変更すればアクセスすることができるためユーザーでの不正アクセスも防ぐことでセキュリティリスクを下げることができる.