Windows,MacOSと並ぶ主要なオペレーティングシステムの一つであるLinuxを用いて,サーバとして利用できるコンピュータを構築する方法を習得する.本実験では主に,リモートからログインして操作するためのSSHサーバを構築し,ファイアウォールによるアクセス制限手法を習得する.
なお,本実験ではディストリビューションとしてRocky Linux 8を利用する.
実験内容は下記の通り.なお,応用課題に取り組むかどうかは任意とする.
| 1. Linuxのインストール | パーティションの設定 |
| ネットワークの設定 | |
| インストール | |
| 2. ファイル,ディレクトリ操作 | 各種コマンドの調査および練習 |
| 3. ネットワークの設定と確認 | 設定ファイルの変更 |
| ネットワークインターフェイスの再起動 | |
| 4. ソフトウェアのインストールおよび設定 | パッケージ管理ソフトdnfの理解 |
| サービスの再起動 | |
| 一般ユーザの登録 | |
| SSHサーバの設定ファイルの変更 | |
| ログの確認 | |
| 5. サーバの運用 | ファイアウォールの設定確認 |
| ファイアウォールによる拒否設定 | |
| ファイアウォールによる許可設定 | |
| 6. 応用課題(その他のサービスのインストール) | ftp,ntp,Sambaサーバのインストール |
| 7. 応用課題(デュアルブート設定) | デュアルブートの設定 |
Linuxを操作するためのコマンドや,聞き慣れない用語が頻出するので,わからない語句は逐一調べながら実験を進めること.
Webページを参考にする際は,lsやcdなどの基本的なコマンドは,ディストリビューションに依存しないが, 設定ファイルの保存位置や,パッケージ管理ソフトなどはディストリビューションやそのバージョンによって異なることに注意すること.
課題に取り組む際は,どのようなコマンドを実行したか,どのように設定を行ったか,なぜその設定を行ったか,その結果どのような内容が表示されたかなどを記録し,レポートに記載すること. このとき,写真を撮って記録をとってもよいし,scriptコマンドを用いてもよい.
実験1のインストールの際は,設定内容を変更後,確定する前に,教員やTAに確認してもらうとよい.
[実験1.1] サーバコンピュータにLinuxをインストールせよ.
コンピュータに電源を入れ,Rocky Linux のインストールDVDをセットすると,インストーラが起動する.
以下の5点の注意に従って,インストールを行うこと.
| 注意1: 「パーティションの設定」 | |
| 「インストール先」をクリック. 前回インストールを行ったWindowsパーティションを削除せず,空き領域にインストールする. ストレージの設定の「カスタム」にチェックを入れ「完了」をクリックする. 「+」をクリックし,下記3つのマウントポイントを作成する.なお,ファイルシステムはデフォルト(swap はswap,/boot と / はxfs)のままで構わない. /boot 1024 MiB swap 2 GiB / 残り全て(要求される容量を空欄にする) マウントポイント作成後,「完了」をクリックし,「変更を許可する」をクリック. | |
| 注意2: 「ネットワークの設定」 | |
| 「ネットワークとホスト名」→ハードウェアアドレス(MACアドレス)をメモ →「設定」→「IPv4 設定」→「メソッド」を「手動」に変更 アドレス 各机に配布するハードウェアアドレス(MACアドレス)とIPアドレスの対応表から確認すること ネットマスク 255.255.255.0 ゲートウェイ 172.25.60.254 DNSサーバ 163.209.1.15 ※右上のスイッチは「オフ」のまま(切断された状態で)左上の「完了」を押すこと | |
| 注意3: 「ホスト名の設定」 | |
| ホスト名は,「sv-**」のように設定すること. 「**」の部分はグループ番号とし,グループ「ろ」の場合は,「sv-02」と設定する. ※ い:1,ろ:2,は:3,に:4,ほ:5,へ:6,と:7,ち:8,り:9,ぬ:10,る:11,を:12 | |
| 注意4:「ソフトウェアの選択」 | |
| 「ソフトウェアの選択」という設定項目では,「最小限のインストール」にチェックを入れる. 右側の選択した環境のアドオンにはチェックを入れない. | |
| 注意5:「時刻と日付」 | |
| 「時刻と日付」という設定項目では,「地域」を「アジア」,「都市」を「東京」に設定する.ネットワーク時刻はオフにしたままにすること. | |
上記の注意事項を守らなかった場合,linuxは正常にインストールされるものの, 本実験を進めることができないため,やり直しとなる.
root のパスワード(教員の指示)も設定すること.
再起動を行うよう指示を受けた時点で,実験1は終了である.
インストール終了後,再起動を指示されたら,DVDを取り除いてから再起動を行う.
ログイン画面が表示されたら,login: プロンプトの後ろに「root」と入力し,先ほど設定した管理者パスワードを入力する.
[実験2.1]
下記の文章に目を通し,Linuxのインタフェースおよびディレクトリ構造について理解しよう. 不明な点は適宜調べること.
我々が通常使っているパーソナルコンピュータは,グラフィカルユーザインタフェース(GUI)を備えている.これに対して,サーバコンピュータでは,文字列によって情報が提示され,キーボードの入力によりコンピュータを操作するキャラクタユーザインタフェース(CUI)を用いて操作することが一般的である.
CUIは見た目が地味で,コマンドを覚える必要があるため,最初は操作が難しいと感じるかもしれない.しかし,以下に挙げるような利点も持っており,システムの運用や管理を効率的に行うことができる.
UNIXのファイルシステムは,「/」(ルート)と呼ばれるディレクトリ(= Windowsにおけるフォルダ)をもっとも上位のディレクトリとする木構造を持つ.「/」ディレクトリの下に,以下のようなディレクトリを持つ.なお,ユーザが現在作業を行っているディレクトリのことを「カレントディレクトリ」と呼ぶ.
「/」記号は,単体でルートディレクトリを意味するほか,ディレクトリの区切り記号としての意味を持つ.
「/」で始まるディレクトリ表記を「絶対パス」と呼び,「/」ディレクトリからはじまる位置をすべて明記する方法である.また,「/」以外のディレクトリ名ではじまる表記を「相対パス」と呼び,カレントディレクトリからの位置を表す.
例えば,「/bin」や「/bin/」はルートディレクトリの下にある「bin」ディレクトリを意味する. 「bin」や「bin/」は,カレントディレクトリの下にある「bin」ディレクトリを意味する.
カレントディレクトリを明示的に示すときは「.」または「./」と記述する.カレントディレクトリの1つ上のディレクトリは「..」または「../」と表される.
| ディレクトリ名 | 主な用途 |
| /bin | 基本的なコマンドが格納されている. |
| /etc | |
| /lib | 様々なプログラムで利用されるライブラリファイルが格納されている. |
| /usr | ユーザによって強要される読込専用ファイルが格納されている. |
| /var | |
| /home |
[実験2.2] 上記ディレクトリのうち,/etcディレクトリ,/varディレクトリ,/homeディレクトリの主な用途を調べよ.
[実験2.3] 下記のコマンドを実行し,その結果を確認せよ.また,コマンドの働きや引数を調べよ.
| コマンド名 | 使用例 |
| pwd | pwd |
| cd | cd / |
| cd /etc | |
| ls | ls |
| ls *.conf | |
| ls -a -l |
UNIXサーバのCUI上でよく利用されるエディタviを使用してみよう.
viは以下の3つのモードを持つ.
| モード名 | 主な用途 |
| exモード | ファイルの保存や文字列の検索を行える |
| ↑ [:]キーや[/]キーなど | ↓ [Esc]キー |
| コマンド入力モード | カーソルの移動や文字列の削除を行える |
| ↓ [i]キーや[a]キーなど | ↑ [Esc]キー |
| テキスト入力モード | 文字列の入力を行える |
起動すればすぐに文字を入力できる一般的なエディタと異なり,viは「コマンド入力モード」で起動するため,起動直後は文字を入力できない.「コマンド入力モード」で上下左右のカーソルキーや[h][j][k]][l]キーを用いてカーソルを動かし,[a]キーなどを押して「テキスト入力モード」に切り替え,文字列を入力する.
文字列の入力を終えたら[Esc]キーを押して「コマンド入力モード」に戻る.以上を繰り返すことでテキストファイルを編集する.「コマンド入力モード」で[:]キーを押すことで「exモード」に切り替え,[wq]コマンドを入力するとファイルを保存しエディタを終了する.
[実験2.5]
エディタviのコマンド方法を調べながら,ディレクトリ「/tmp/」にファイル「a.txt」を作成せよ.同様に,下記のファイル「b.txt」を作成し,「diff」コマンドによって2つのファイルの違いを調べよ.2人1組で実験を行っている場合は,1人がa.txtを作成し,もう1人がb.txtを作成する.
a.txt
This is a test file for learning how to use "vi".
b.txt
This is also a test file for learning how to use "vi".
[実験2.6] 下記のコマンドを実行し,その結果を確認せよ.また,各コマンドの働きや引数を調べよ.
| コマンド名 | 使用例 |
| cp | cp a.txt c.txt |
| cp c.txt ../ | |
| cat | cat a.txt |
| less | less a.txt |
[実験3.1] ネットワークの設定を行う.
1. /etc/sysconfig/network-scripts/に移動する.
# cd /etc/sysconfig/network-scripts/
2. 設定ファイル ifcfg-enp0s25 の内容を確認する(s25は異なる数字かもしれない).
# cat ifcfg-enp0s25
3. 設定ファイル ifcfg-enp0s25 のバックアップを作る.
# cp -pi ifcfg-enp0s25 ~/ifcfg-enp0s25.backup
補足 ~(チルダ) はそのユーザのホームディレクトリを指す.今回の例では,rootで作業しているため,/root を指すことになる. バックアップファイルは該当のファイルと同じディレクトリに作成してよい場合と,そうでない場合がある. 今回は同じディレクトリに作成するとバックアップファイルも読み込んでしまい,複数回設定が反映されたり,古い設定で上書きされたりするので別のディレクトリに作成している.
4. エディタ(vi)で設定ファイル ifcfg-enp0s25 を編集し,ONBOOT=yesに変更する.
# vi ifcfg-enp0s25
5. バックアップファイルと差分をとり,編集内容に誤りがないか確認する.今後,設定ファイルを編集する際はこの手順(バックアップの作成,編集,差分の確認)を守ること.
# diff -c ~/ifcfg-enp0s25.backup ifcfg-enp0s25
6. 設定の読み込みとネットワークインターフェースの起動
# nmcli con load ifcfg-enp0s25 # nmcli con up enp0s25
[実験3.2] pingコマンドとtracepathコマンドを用いて,ネットワークに接続できるかを確認せよ.接続先として,情報・生体工学PGのWebサーバ(www.ibe.kagoshima-u.ac.jp,163.209.45.6)を用いること.また,学外のサーバ(任意のサーバ)に対しても接続テストを行うこと.
ネットワークの接続に失敗している場合は,設定を見直し,正常にネットワークに接続できるようにすること.
[実験4.1] 「最小限のインストール」では一部のログが表示されないため,パッケージ管理ソフトdnfを用いて必要なパッケージをインストールする.
# dnf -y install rsyslog # systemctl enable rsyslog # systemctl restart rsyslog
[実験4.2] 一般ユーザを追加する.ユーザ名は「user-**」とし,「**」の部分はホスト名の「sv-**」と同じ数字とする.なお,パスワードはrootと同じものを設定すること.
# useradd user-** # passwd user-**
[実験4.3] SSHサーバの設定を行う.
1. /etc/ssh/ に移動する.
2. 設定ファイル sshd_config をバックアップを取ったうえでviで編集する.編集すべき箇所は下記の通り.
[sshd_config の設定変更箇所] PermitRootLogin no (デフォルトでは yes になっている)
3. SSHのサービスを再起動する.
# systemctl restart sshd
[実験4.4] SSHサーバへの接続を確認する.
1. 自分自身にrootでSSH接続「できない」ことを確認する.初めて接続するホスト(自分自身であっても)の場合,そのホストを信用するかの確認が表示されるが,「yes」と入力して接続すること.
# ssh root@172.25.60.***(@以降のIPアドレスは自分自身のIPアドレス)
2. ログファイル /var/log/secure の内容を確認し,rootユーザでの接続が失敗したことが記録されていることを確認する.このとき,ログファイルを誤って編集してしまわないように,vi等では開かないこと.
3. 自分自身に一般ユーザ「user-**」でSSH接続できることを確認する.ユーザ名「user-**」は[実験4.2]で設定したものを使用すること.なお,SSH接続の切断は logout コマンドや exit コマンドで行うこと.
# ssh user-**@172.25.60.***(@以降のIPアドレスは自分自身のIPアドレス)
4. ログファイル /var/log/secure の内容を確認し,一般ユーザでの接続が成功したことが記録されていることを確認する.
[実験5.1] ファイアウォール(firewalld)の現在の設定を確認し,記録する.
# firewall-cmd --list-all
[実験5.2] ファイアウォールの設定からSSHのサービスを削除し,自身を除くあらゆる接続元からのSSHによる接続を拒否する.
# firewall-cmd --zone=public --remove-service=ssh
[実験5.3] 同じ机の対面の班に自分のサーバのIPアドレスと一般ユーザ名「user-**」を伝え,対面の班のサーバからSSH接続を試みてもらうよう依頼する.この接続が「失敗する」ことを確認する.
[実験5.4] 対面の班のサーバのIPアドレスを確認し,そのIPアドレスの接続を許可するように設定する.その後,設定が反映されていることを確認する.
# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="172.25.60.***" port protocol="tcp" port="22" accept' (address="172.25.60.***" で設定するのは対面の班のサーバのIPアドレス) # firewall-cmd --list-all
[実験5.5] 再び対面の班のサーバからSSH接続を試みてもらうよう依頼する.この接続が「成功する」ことを確認する.
[実験5.6] ログファイル /var/log/secure の内容を確認し,対面の班からの接続が成功したことが記録されていることを確認する.
[応用課題6.1] ftp,ntp,Sambaなどのサービスを自由にインストールせよ.パッケージ管理ソフトを用いてもよいし,ソースからインストールを行ってもよい.
・Sambaを選択し,インストールした際の注意点
ファイアウォール(firewalld)の設定やSELinux環境下でのアクセス許可を行う必要がある.
アクセス許可: Sambaでホームディレクトリへのアクセスを許可するために以下のコマンドを実行する.
# setsebool -P samba_enable_home_dirs on
[応用課題7.1] 起動時にRocky Linux 8とWindows 10を選択できるように設定せよ.
[参考]
(ヒント)Windowsのルートパーティションのデバイス指定について Windowsがインストールされたパーティションは,パーティションタイプがWindows用(HPFS/NTFS/exFAT)のもののうち,ブートに可能なものである. デバイスは,(hdディスク番号,パーティション番号)形式で指定する.ディスク番号は0から,パーティション番号は1から数えることに注意すること.
[考察課題1] xfs以外のファイルシステムについて調査し,xfsも含めた特徴の比較表を作成せよ.
[考察課題2] diffコマンドのcontext形式とunified形式について調査し,説明せよ.
[考察課題3] firewalldのゾーンについて調査し,説明せよ.