サーバ構築の練習課題①(CentOS7)

サーバの構築(OSの構築)ができるようになりたい人のために、構築の流れに沿って練習課題を作っていきます。
 
手順や用語を自分で調べて進めていってください。とりあえず上からやっていけばOSでどんな設定変更があるのかとか分かると思います。正解手順もそのうちアップすると思いますがだいぶ先になる気がします。
 
内容は自宅でも簡単にできるように仮想環境(VirtualBox)でLinuxサーバ(CentOS7)の構築です。ちなみにあくまで練習課題なので、本来なら不要な手順などが入っていたり、コマンドの使い方を覚えるためにわざと同じことを繰り返したりしているところもあります。

【 1 VirtualBoxのインストール】

VirtualBoxをOracleのページからダウンロードしてインストールしてください。特にバージョンは指定しないですが、どうせなんで最新をインストールしてみてください。
 
2018/5/14時点の最新は5.2.12です。こちらからダウンロードできます。
http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp 

【 2 CentOSのインストール】

 2-1 インストール用ISOイメージをダウンロード
CentOSのインストール用ISOイメージをダウンロードしてください。バージョンCentOS7であれば問題ないですが、2018/5/14時点の最新バージョンである「CentOS 7.5.1804」とします。
 
2-2 VirtualBox上に新規仮想マシンを作成
以下の要件で作成する。
VM名:centos01
メモリ:1024MB
ディスク名:centos01
ディスクサイズ: 5GB
ハードディスクのファイルタイプ:VDI
可変or固定:可変サイズ
 
2-3 CentOSのインストール
以下の要件でインストールする。
 
OSバージョン:centos7.5.1804
タイムゾーン:東京
キーボード:日本語
ソフトウェアの選択:最小限のインストール
インストール先:パーティションを自動動構成する
kdump:有効にする
ネットワークとホスト名:ホスト名 centos01
ROOTパスワード:(自由に設定)
ユーザーの作成:しない
 
インストールが完了したら再起動後にrootでログインして以下を確認する。
・ホスト名がcentos01になっていること
・OSのバージョンがcentos7.5.1804であること
・メモリサイズが1GBであること
・PV、VG、LV、ファイルシステムの構成を確認する
  PVは何個で何という名前で認識されている?
  各VGの下になんというLVが存在している?
  マウントポイント/ に対応しているデバイス名は?
      マウントポイント/ の容量はいくつ?

【 3 追加パッケージのインストール】

OSインストール用のISOイメージファイルを/mntにマウントして、中にあるnet-toolsのrpmパッケージをインストールする。完了したら以下を確認する。
・rpmパッケージの一覧を表示して、net-toolsがインストールされていることを確認する
・ifconfigコマンドがインストールされて存在することを確認する

【 4 ネットワーク設定】

4-1 ネットワークアダプタ2を追加
VirtualBox上でホストオンリーネットワークを作成し、仮想マシンにネットワークアダプタ2を追加する。(ホストオンリーアダプタ)

4-2 OS上でNICの設定をする
以下の要件の通りに設定する。nmtuiコマンドで設定してみる。 
・enp0s3(NAT)
IPアドレス:DHCP
OS起動時にインターフェースを有効化
 
・enp0s8(ホストオンリーアダプタ)
IPアドレス:192.168.56.10
ネットマスク:255.255.255.0
ゲートウェイ:192.168.56.1
OS起動時にインターフェースを有効化
このNICをデフォルトゲートウェイとして使用しない

 
設定できたら以下を確認する。
・OSを再起動して、NICが自動的に有効になっていて、IPアドレスなどが上記のようになっていること。
・サーバ上でping yahoo.co.jpを実行して、インターネットにつながっていることを確認する。
・ホストOSからテラタームで192.168.56.10に接続し、ログインできることを確認する
・デフォルトゲートウェイがenp0s3に設定されており、enp0s8は設定されていないこと
 
※以降の作業はホストOSからテラタームで接続して作業すること 

【 5 パッケージのアップデート】

yumでシステム内のパッケージのアップデートを実施する。
実施前後で、カーネル情報、OSバージョン、全rpmパッケージのバージョンを比較すること。差分が分かりやすいようにエビデンスを取得すること。

【 6 不要サービスの無効化】

以下のサービスを停止し、また自動起動設定をoffにする。
・postfix
・firewalld
 
設定後にOSを再起動して上記サービスが起動していないことを確認する。

【 7 SELinuxの無効化】

無効化の設定をし、OSを再起動してSELinuxが起動していないことを確認する。
 
※設定ファイルを修正する際は必ずバックアップ(元ファイル名_YYYYMMDD)をとること。以降設定ファイルを修正する際は特に記載がなくてもバックアップをとってください。

【 8 個人ユーザ作成】

自分の名前のユーザを以下の要件で作成してください。下記は t-yamadaで作成した例。
※ここで作成したユーザは以下「個人ユーザ」と表記します。
 
ユーザ名:t-yamada
ユーザID:1000
所属グループ:t-yamada
ホームディレクトリ:/home/t-yamada
ログインシェル:/bin/bash
パスワード:(あえて4文字で自由に設定)
 
できたら以下を確認する。
・要件通りに作成できたかを、コマンドや設定ファイルから確かめる
・個人ユーザからrootにスイッチできることを確認

【 9 pamの設定】

9-1 パスワードポリシーを変更する
以下の通りに設定する。
・8文字以上
・パスワード期限を30日にする
・小文字、大文字、数字、記号がそれぞれ最低1文字以上
・rootユーザで変更する場合も上記のルールを強要する
・過去5世代のパスワードの再利用禁止
・パスワードを5回間違えたらユーザロック
 
設定したら以下を確認する。
・testという名前のユーザを作成し、パスワード期限が30日になっていること
・rootユーザで個人ユーザのパスワードを変更し、パスワードポリシーを満たさないと設定できないことも確認する。またついでにパスワードポリシーに沿ったパスワードに変更しておくこと。
・testユーザでログイン時にパスワードをわざと5回間違えてユーザがロックされることを確認(確認できたらロックは解除しておくこと)
 
9-2 wheelグループのみがrootにスイッチできるようにする
ただし、wheelグループ以外のユーザでもroot以外にはスイッチできるようにすること。
 
設定したら以下を確認する。
・個人ユーザからrootユーザにスイッチできなくなったことを確認
・個人ユーザからtestユーザへのスイッチはできることを確認
 
9-3 個人ユーザをwheelグループに追加する
設定したら個人ユーザからrootにスイッチできるようになったことを確認。ただし、wheelグループ以外のユーザ(testユーザ)でログインし、wheelグループのユーザ(個人ユーザ)にスイッチした状態から、rootにスイッチはできないようにすること。
 
※ここまで確認が終わったらtestユーザは削除しておく

【 10 sshdの設定】

以下の要件通りに設定する
・rootユーザでの直接ログイン禁止
・MaxAuthTriesを5に設定する
 
ホストOSからテラタームでsshで接続しrootでログインできなくなったことを確認する。以降は個人ユーザでログインし、必要な時にrootにスイッチして作業すること。

【 11 sudo設定 】

個人ユーザからrootにスイッチする際にパスワードなしでスイッチできるようにsudoを設定する。ただし、設定する対象ユーザは個人ユーザのみを指定し、コマンドは「su -」のみをパスワードなしで実行できるように登録する。
 
設定できたら以下を確認する。
・個人ユーザからsudoコマンドを使用しrootにパスワードなしでスイッチできること
・sudoを使用する理由について調べる

【 12 ディスクまわりの設定】

ディスクをひとつ追加する。要件は以下の通りとする。
 
12-1 VirtualBox上でストレージ追加
ディスク名:centos01-2
ディスクサイズ:2GB
ハードディスクのファイルタイプ:VDI
可変or固定:可変サイズ
 
12-2 centos01 上に追加するパーティション構成

ディスク パーティション VG名 LV名 マウントポイント サイズ
/dev/sdb /dev/sdb1 bkupvg bkuplv /bkup 2GB

上記の通りになっていることをコマンドで確認する。このタイミングでLVMについて大体理解しておくこと。

【 13 /etc/fstabの修正】

12-2で作成した/bkupを/etc/fstabに追記する。要件は以下の通りとする。(設定ファイルのバックアップを忘れずに)
・UUIDではなくデバイス名で記載する
・OS起動時にmountさせる
・dumpは対象外
・fsckは対象外
 
設定できたらOSを再起動して、/bkupが自動的にマウントされていることを確認する。

【 14 仮想マシンをもう1台作成する】

以下の要件でもう1台VMを作成してください。

14-1 VirtualBox上で新規仮想マシンの作成
VM名:centos02
メモリ:1024MB
ディスク名:centos02
ディスクサイズ:9GB
ハードディスクのファイルタイプ:VDI
可変or固定:可変サイズ
ネットワーク:アダプター2を追加(ホストオンリーアダプタ)
 
14-2 CentOSのインストール
前回と違いインストール時に色々設定を変更し、仮想マシンを作成した時には以下の要件の状態になっているようにインストールしてください。
 
OSバージョン:centos7.5.1804
タイムゾーン:東京
キーボード:日本語
ソフトウェアの選択:最小限のインストール
パーティション構成:

VirtualBox
ディスク名

OS上の
ディスク名

パーティション タイプ VG名 LV名 マウント
ポイント
サイズ
centos02 /dev/sda /dev/sda1 boot /boot 256MB 
swap swap  – 512MB 
/dev/sda2     LVM     rootvg     rootlv / 2048MB
varlv /var 2048MB 
tmplv /tmp 1024MB 
homelv /home 512MB 
usrlv  /usr  1536MB 

 ※ファイルシステムは全てxfsにすること

kdump:有効にする
ホスト名:centos02
ネットワーク:以下の通り

NIC 設定
enp0s3 IPアドレス DHCP
起動時にインターフェースを有効化
enp0s8 IPアドレス 192.168.56.11
ネットマスク 255.255.255.0
ゲートウェイ 192.168.56.1
起動時にインターフェースを有効化

ROOTパスワード:(自由に設定)
ユーザーの作成: centos01と同じ名前の個人ユーザ作成(ユーザID 1000、wheelグループに所属の管理者ユーザとして)
 
インストールしたら再起動後にログインして、centos02に3と5〜11の作業を実施し、1台目のcentos01と同じ設定状態にする。
 
設定が終わったら以下を確認する。
・設定が上記の通りに(IPアドレスとホスト名以外はcentos01と同じ状態に)なっていること
・両サーバから双方向ともに、個人ユーザでsshコマンドでリモートログインできること

【 15 rsyslog設定 】

centos01にauthprivファシリティーのerrレベル以上のメッセージを/var/log/authpriv-err.logに出力するように設定してください。
 
設定できたらloggerコマンドでエラーメッセージを出力して、authprivファシリティーのerrレベル以上のメッセージが/var/log/authpriv-err.logに出力されていることを確認する。

【 16 logrotate設定 】

centos01に15で設定した/var/log/authpriv-err.logをOSのlogrotateの機能でローテートさせる。なお設定は/etc/logrotate.d配下に以下の設定ファイルを作成し設定するやり方とする。要件は以下の通り。
 
設定ファイル
/etc/logrotate.d/authpriv-err
 
要件
処理間隔は週1とするが、サイズが1MBを超えた場合は処理間隔に関わらずローテートさせる。保存世代数は3とする。
 
設定できたら以下を確認する
・4回以上処理を実行させ保存世代が3つになっていること確認する
・前回実行日から1週間経っていなくてもサイズが1MBを超えている場合はローテートされることを確認する。

【 17 SSH公開鍵認証設定】

centos01のrootユーザから、centos02のrootユーザにSSH公開鍵認証でパスワード入力なしでログインできるように設定してください。ただし以下の条件で設定すること。
・鍵はrsaの鍵長4096バイトで作成すること
・接続先のauthorized_keysにcentos01からの接続のみを許可するようにホストの限定をすること
 
設定できたら、centos01のrootユーザから、centos02のrootユーザにパスワード入力なしでsshで接続できることを確認する。

【 18 時刻同期設定(chrony)】

centos01に以下の作業を実施する
・chronyがインストールされていなければインストールし、OS起動時に自動起動する設定をする
・NTPクライアントとしての設定をする。同期先のサーバにgoogleのNTPサーバを指定して同期させること。
 
設定できたら以下を確認
・OS再起動後にchronyのプロセスが上がっていること
・googleのNTPサーバと同期していること

【 19 プロファイル設定 】

centos01に/etc/profileに以下の設定をする
・文字コードをja_Jp.UTF8にする
・10分間無操作で自動ログアウトするようにする、また環境変数は上書きできないようにすること
・umask値を077にする
・HISTSIZEとHISTFILESIZEを10000とする
・historyファイルにコマンドと一緒に日時も記載させる
 
設定できたら以下を確認する
・10分間無操作で自動ログアウトすること
・環境変数TMOUTを上書きして変更できないこと
・ファイルやディレクトリを作成して、設定したumask値に応じた権限になっていること
・historyファイルにコマンドと一緒に日時も記載されていること

【 20 /etc/motd 】

centos01にログインした時にホスト名をアスキーアートでかっこよく表示させる。こちらのページから好きなやつをコピって設定してみる。
http://patorjk.com/software/taag/#p=testall&f=ANSI%20Shadow&t=
設定したら、ログインした時にホスト名がアスキーアートで表示されることを確認する。 

【 21 ulimit設定 】

centos01に個人ユーザに以下のulimit設定をする。
 ファイルオープン数 4096
 ファイルサイズ   unlimited
 プロセス数     4096
 
設定後に再ログイン時も上記の値になっていることを確認する。

【 22 cron設定 】

pingサーバ監視のシェルを作成し、そのシェルをcentos01にcron登録して、centos02を常時監視する。
 
22-1 pingサーバ監視のシェル作成
以下の要件通りにシェルを作成する。
・実行シェルは/bin/bash
・シェルを格納する以下のディレクトリを作成しておく
  /shell/bin
  /shell/log
  /shell/list
  ※オーナー、グループ、権限は、root、root、744とする
・シェルスクリプトの名前は/shell/bin/ping_monitor.shで権限はroot、root、744とする
・pingを1回飛ばして、その戻り値によりサーバの生死判定をする
・エラーだったら以下のメッセージを/shell/log/ping_monitor.sh.logに出力する。
   「YYYY/MM/DD HH:MM:SS   ERROR: centos02 is down」
  ※YYYY/MM/DD HH:MM:SSはエラー検知時の日時を出力させること
  ※正常終了の時は何も出力させないこと
  ※標準出力には何も出さないようにすること
・正常終了の時のシェルの終了コードは0、エラーの時は1にする
・ヘッダーにシェル名、機能などを書くこと
 
作成できたら単体テストを実施し、全分岐が想定通り動くことを確認する。
 
22-2 cronに設定
rootユーザで15分間隔で上記のシェルスクリプトを実行するようにcronを設定する。またcronの結果をメール送信しないように設定をすること。
 
設定できたら、15分おきにシェルが実行されていることを確認する。
 
22-3 シェルスクリプトのダウンロード
ファイル転送ソフトのWinSCPをインストールし、サーバ上にあるping_monitor.shをテキストでダウンロードしてみる。

【 23 ログバックアップシェルの作成とcron登録 】

23-1 ログバックアップのシェル作成
centos01にpingサーバ監視のログを/bkup配下にコピーするシェルを作成する。詳しい要件は以下の通り。
・以下のパスに以下のファイル名、オーナー、グループ、権限でシェルを作成する。
       /shell/bin/logbkup.sh、root、root、744
・実行シェルは/bin/bash

・バックアップ対象は以下の通りとする。
  /shell/log/ping_monitor.sh.log
  /var/log/authpriv-err.log
・バックアップ対象は/shell/list/logbkup.listに記載し、シェルで読み込んで処理する。
・バックアップ対象が後で足されても、リストファイルに書き足すだけでよいようなロジックで作成すること
・バックアップ先は全て/bkup直下とする
・コピー先のファイル名は元のファイルの後ろに_YYYYMMDDを付ける(バックアップ日)
・コピー完了後にコピー元ファイルは0バイトにクリアすること
・エラーの時は/shell/log/logbkup.sh.logに出力させる。また正常終了の場合もログに出力させること。
・バックアップ対象のログのバックアップに途中で失敗しても、最後の対象ログまでバックアップはやりきること
 
作成できたらシェルの単体テストを実施し、全分岐で問題なく動作することを確認する。
 
23-2 cronに設定
centos01に毎週土曜 0:05にrootユーザで実行するようにcronに設定する
 
設定できたら土曜の0:05に実行されていることを確認する。
 
23-3 シェルスクリプトのダウンロード
WinSCPでcentos01のサーバ上にあるlogbkup.shをバイナリでダウンロードしてみる。
スポンサーリンク
勉強wikiの下部広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
勉強wikiの下部広告

コメントをどうぞ

メールアドレスが公開されることはありません。

CAPTCHA