[ITPASS2018]OSの各種設定

構築作業用アカウントの作成

ITPASS サーバを構築する際には, 普段自分が使用しているアカウント名ではなく, 構築作業用のアカウントを作成する. なぜならば, サーバ構築の最初の段階では gate がインストールされておらず gate で管理しているユーザでログインできないためである. また, こうすることで gate の設定が失敗した際にもログイン・root 権限を行使できるというメリットがある.

アカウント作成方法

ITPASS サーバでは chikuwaX (X には数字をいれる)をこの構築作業用のアカウントとする. また, gate-toroku-system では 1000 〜 29999 のユーザ ID を使用するため, Debian GNU/Linux でユーザを作成する際には以下のようにする.

# adduser chikuwaX --uid 40001

chikuwaX アカウントの作成

テストユーザ "test" でログインし, chikuwaX アカウントを作成する. (X は適当な数字). 下では chikuwa4 アカウントを作成する例を示す.

$ su root
パスワード:適切なパスワードを入力
# adduser chikuwa4 --uid 40004

test ユーザをログアウトする.

テストユーザの削除

OS のインストール時に作成したテストユーザ "test" を uid も含めて削除する.

chikuwaX でログインし, /etc/deluser.conf を編集する.

$ su root
パスワード:適切なパスワードを入力
# vi /etc/deluser.conf

/etc/deluser.conf を以下のように書き換える.

REMOVE_HOME = 1
REMOVE_ALL_FILES = 1

この後, chikuwaX でログインし直し,

# deluser test

を実行して test を削除する.

アカウントリスト

以下に, chikuwa アカウントリストのテンプレートを示す. 適宜編集して使用すること.

  • chikuwa0 (40000):
  • chikuwa1 (40001):
  • chikuwa2 (40002):
  • chikuwa3 (40003):
  • chikuwa4 (40004):
  • chikuwa5 (40005):
  • chikuwa6 (40006):
  • chikuwa7 (40007):
  • chikuwa8 (40008):
  • chikuwa9 (40009):
  • chikuwa10 (40010):

sudo の設定

構築者全員が root パスワードを知っているのはセキュリティ上危険である. そこで sudo の設定を行い, 特定のユーザが自分のパスワードで root 権限を行使できるようにする.

/etc/sudoers の編集

chikuwaX でログインし, root になる.

# su root
パスワード:適切なパスワードを入力

以下のコマンドを入力し, sudoers ファイルを編集する.

# apt-get install vim 
# export EDITOR=vim
# apt-get install sudo
# visudo

環境変数 EDITOR に指定されたエディタ (vim) が立ち上がる.

文末に以下を追加する.

chikuwaX ALL=(ALL) ALL

アカウント登録しているユーザーを追加後, 保存する.

root になれるかの確認

root 権限を持てるようになった一般ユーザでログインし, 以下を入力する.

$ sudo -s

このあとに一般ユーザアカウントのログインパスワードを入力し, root になりかわることができる.

APT の設定

APT の設定および, セキュリティアップデートを行う.

APT-LINE の修正

  • 既にある sources.list を sources.list.org としてバックアップする.

    # mv /etc/apt/sources.list /etc/apt/sources.list.org
  • 新しく sources.list を作成する.

    # vi /etc/apt/sources.list
    • sources.list には, このページ を参考にして以下のような内容を記述する. ただし, Debian のバージョンに応じてコード名 (stretch など) を適切に変更すること.
  • 2018 年度サーバ再構築時には sources.list に以下の内容を記述した.

    deb http://ftp.jp.debian.org/debian/ stretch main contrib non-free deb-src http://ftp.jp.debian.org/debian/ stretch main contrib non-free

    deb http://security.debian.org/debian-security stretch/updates main contrib non-free deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

    deb http://www.gfd-dennou.org/library/cc-env/Linux/debian-dennou stretch main deb-src http://www.gfd-dennou.org/library/cc-env/Linux/debian-dennou stretch main

    • 1-2 行目は debian の基本的なパッケージのダウンロード先, 3-4 行目は セキュリティパッチがあたったパッケージのダウンロード先, 5-6 行目は地球流体電脳倶楽部のソフトウェアのダウンロード先である.

GPG 鍵の登録

地球流体電脳倶楽部のパッケージを取得するには apt-key によって鍵を登録する必要がある. 詳しくはapt の設定 - Computer Memorandumを参照のこと. APT-LINE の修正と同様, このページを参考にして GPG 鍵を登録する.

debian-keyring を取得する.

# apt-get install debian-keyring

その後 keyring から公開鍵を取り出し apt-key へ登録する.

# gpg --keyring /usr/share/keyrings/debian-maintainers.gpg \
       --export -a 891D7E07 | sudo apt-key add -

OK と表示されれば成功である.

セキュリティアップデート

利用できる Debian のパッケージのリストを更新する.

# apt-get update

セキュリティアップデートを行う.

# apt-get upgrade

セキュリティアップデートは定期的に行うこと. 後でシステムログメールを設定すると, upgrade 対象を週次で報告するメールが来るようになるのでそれを参考に行うこと.

参考資料

SSH のインストールと設定

ITPASS サーバにリモートアクセスできるよう, ssh サーバをインストールする. また, パスワード認証によるアクセスを拒否し, 公開鍵認証によるアクセスのみを許可するよう設定する.

ssh パッケージのインストール

ssh サーバをインストールする.

# apt-get install openssh-server

パスワード認証の拒否と root ログインの拒否設定

ssh サーバの設定を変更する. 公開鍵認証を有効にし, パスワード認証と PAM を無効にする. また root ログインを無効にする.

# vi /etc/ssh/sshd_config

PermitRootLogin no
        :
PasswordAuthentication no
        :
UsePAM no

最後に ssh デーモンを再起動する.

# /etc/init.d/ssh restart

/etc/init.d/ 以下の不要なネットワークサービスの停止

exim4 がインストールされていれば再設定する. (なお, 2018 年のサーバ再構築時には, exim4 がインストールされていなかった. つまり, 下のコマンドを実行すると, exim4 がインストールされていない旨のメッセージが表示された. そのため, 下の作業は行わなかった.)

# export LANG=C
# dpkg-reconfigure exim4-config

設定画面で local delivery only のみになっていることを確認する. 他はデフォルトのままにする.

その他の /etc/init.d 以下から起動される不要なネットワークサービスの停止

nfs が起動していれば停止するために, 下のコマンドを実行する.

(2018 年のサーバ再構築時には, /etc/init.d/nfs-common ディレクトリが存在せず, その旨のメッセージが表示されたため, 実行していない.)

/usr/sbin/inetd によって起動されるネットワークサービスの停止

openbsd-inetd をインストールする.

# apt-get install openbsd-inetd

/etc/inetd.conf を編集して不要なサービスが上がらないようにする.

# vi /etc/inetd.conf

で全てがコメントアウトされているのを確認し, inetd のプロセスを再起動する.

# /etc/init.d/openbsd-inetd restart

NetworkManager の停止

サーバー運用上, NetworkManager では Network の詳細な設定が難しいと考えられるため, NetworkManager を停止して従来の方法で Network の設定を行う. 以下のように NetworkManager を停止させる.

まず, ネットワーク関係の様々なコマンドを使うために, net-tools, resolvconf パッケージをインストールする.

# apt-get install net-tools resolvconf

そして, ネットワークインターフェース名を確認する.

# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether bc:ae:c5:12:7e:8f brd ff:ff:ff:ff:ff:ff
3: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 68:05:ca:66:61:f1 brd ff:ff:ff:ff:ff:ff
    inet 10.35.19.150/24 brd 10.35.19.255 scope global enp8s0
       valid_lft forever preferred_lft forever
    inet6 fe80::6a05:caff:fe66:61f1/64 scope link 
       valid_lft forever preferred_lft forever
4: enp10s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0e:0c:d0:53:18 brd ff:ff:ff:ff:ff:ff
    inet 133.30.109.22/24 brd 133.30.109.255 scope global enp10s2
       valid_lft forever preferred_lft forever
    inet6 fe80::20e:cff:fed0:5318/64 scope link 
       valid_lft forever preferred_lft forever

例えば, 2018 年のサーバ構築後の ika では, 上のように表示される. 上の enp10s2 が, 使用するネットワークインターフェースである.

以上の準備後に, NetworkManager の設定を変更する.

起動時に NetworkManager が立ち上がらないようにする.

# systemctl disable NetworkManager.service

systemctl は, 様々なサービスを管理する systemd という仕組みの設定を変更するコマンドである. 第一引数 (disable) は, OS 起動時にあるサービスが立ち上がらないようにすることを示し, 第二引数 (NetworkManager.service) は設定を変更するサービス (に対応するファイル名/ユニット名) を示す.

引数なしで systemctl を実行することで, 現在有効なサービスを確認できる.

# systemctl

次に, NetworkManager を使わずにネットワークに接続するために, /etc/network/interfaces に以下を追記する.

allow-hotplug enp10s2
iface enp10s2 inet static
      address 133.30.109.21
      netmask 255.255.255.0
      network 133.30.109.0
      broadcast 133.30.109.255
      gateway 133.30.109.254
      dns-nameservers 133.30.14.2 133.30.14.3 133.30.8.2
      dns-search scitec.kobe-u.ac.jp

auto enp8s0
iface enp8s0 inet static
      address 10.35.19.151
      netmask 255.255.255.0
      post-up ip rule add from 10.35.19.0/24 table 100 prio 10000
      post-up ip route add default via 10.35.19.254 dev enp8s0 table 100
      post-down ip route del default table 100
      post-down ip rule del table 100 prio 10000

enp10s2 はグローバルネットワークに繋がるインターフェースで, enp8s0 はプライベートネットワークに繋がるインターフェースである. post-up, post-down によって, ルーティングが設定されていることに注意 (参考ページ: <URL:https://setting-tool.net/static-multi-ip-network>).

/etc/network/interfaces の編集後に OS を再起動する. 再起動後に, ネットワークに繋がっていることを確認する.

# ping 133.30.109.22

また, NetworkManager が起動していないことを確認する.

# systemctl  

の表示に NetworkManager.service が含まれていないことを確認する.

  • なお, この時, 起動しているネットワークサービスは, networking.service である.

備考

  • ネットワークの設定の変更後には下の方法でネットワークを再起動できるはずである.

    # /etc/init.d/networking stop
    # /etc/init.d/networking start 

しかし, 経験的には, 大抵ネットワークがつながらなくなる. 結局, OS を再起動してしまう方が簡単であることが多い.

参考資料

OS が認識しているメモリの確認

top コマンドを使って OS が認識しているメモリ容量を確認する.

$ top

として, 例えば,

top - 19:03:58 up 22 min,  2 users,  load average: 0.08, 0.09, 0.13
Tasks: 164 total,   1 running, 163 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.5 id,  0.4 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16433640 total, 15659280 free,   274940 used,   499420 buff/cache
KiB Swap: 62498808 total, 62498808 free,        0 used. 15882556 avail Mem

と表示された場合, 下から 2 行目の KiB Mem の後の数字がメモリの大きさ (上の例では 16 GB) である.

時刻の設定

コンピュータ内の時刻を定常的に正しくしておくための設定を行う.

ntpdate パッケージのインストール

以下のコマンドで ntpdate パッケージをインストールする.

# apt-get install ntpdate

時刻の修正(手動)

次に, 以下のコマンドで時刻を修正する. コマンド入力後しばらくすると NTP (Network Time Protocol) サーバより返答が返り, 時刻が修正される.

# /usr/sbin/ntpdate-debian

下記のように date コマンドで時刻が正しくなっていることを確認する.

# date
2018年 10月 23日 火曜日 19:07:38 JST

cron の設定

次に, 上記のような時刻修正コマンドを毎日実行するように設定する.

# vi /etc/cron.daily/ntpdate

この ntpdate ファイルに以下のように書き込む.

#!/bin/bash
/usr/sbin/ntpdate-debian > /dev/null 2>&1

最後に, このファイルのパーミッションを以下のように設定する.

# chmod 755 /etc/cron.daily/ntpdate

debianパッケージの引き継ぎ

ika に導入されている debian パッケージを全て tako に導入する.

準備

dselect パッケージをインストールしておく.

# apt-get install dselect

古いマシンでのインストールパッケージリスト作成

ika に install されている debian パッケージの一覧を取得する.

[ika] $ dpkg --get-selections > old_list.txt

リストを参照して, 古いカーネルなど, 明らかに不要なものはリストから削除する.

リストの新しいマシンへの転送

リストを ika から joho?? (適当な joho 実験機) へ転送し, joho?? にあるリストを tako から scp で取り寄せる.

リストを元にインストール

tako において, ika で導入されているパッケージをインストールする.

[tako] $ sudo -s
[takoexit] # dpkg --set-selections < old_list.txt

この際,

dpkg: 警告: package not in status nor available database at line xx: (パッケージ名)

という警告が大量に表示されるかもしれない.

このときは,

# dselect update

を実行し, パッケージ情報を更新して, OS を再起動する. その後, 再度

[tako] # dpkg --set-selections < old_list.txt

を実行する.

dpkg: warning: package not in status nor available database at line 410: htroff
dpkg: warning: package not in status nor available database at line 1699: mksigen
dpkg: warning: found unknown packages; this might mean the available database

という警告が出力されるかもしれないが, インストールを実行する.

[tako] # apt-get dselect-upgrade

GNOME の再インストール (必要に応じて)

パッケージの引き継ぎを行うとき,

[tako] # apt-get dselect-upgrade

上記の作業を行うと, gnome 関連のパッケージが削除されることがある, とのことなので, 念の為に

# apt-get install gnome

を行った. この作業で実際に gnome がインストールされる.

この後, 再起動する.

GNOME をデフォルトで立ち上げない

ディスプレイマネージャの設定を変更することで, 起動時にテキストログインできるようにする.

まず /etc/X11/default-display-manager を編集する.

# vi /etc/X11/default-display-manageri

ファイル中の下の行

/usr/sbin/gdm3

を下のようにコメントアウト (行頭に # を挿入する) する.

#/usr/sbin/gdm3

さらに, 下のようにして, ディスプレイマネージャの起動設定を変更する.

# cd /lib/systemd/system
# mv gdm.service gdm.service.bk

上の操作では, systemd が使う, OS 起動時の gdm 起動のための設定ファイルの名前を変えている. それによって OS 起動時に gdm が起動しなくなる.

システムの文字コードの設定

デフォルトでは文字コードが UTF-8 にしか対応していないため, EUC にも対応するようにする.

下のようにして文字コード (ロケール) の設定の変更する.

# dpkg-reconfigure locales

"ja_JP.EUC-JP EUC-JP" をチェックして有効にする. その後, デフォルトロケールに "ja_JP.UTF-8" を選択して終了する.

mksigen のインストール

mksigen とは

mksigen は地球流体電脳倶楽部で使われているディレクトリデータベースマネージャである. SIGEN を拡張子に持つファイルやディレクトリ (たとえば hoge というディレクトリには hoge.SIGEN を書く) に所定の書式でメモを書いておくと, mksigen がクロールして目次となる html ファイルを作成してくれる. ITPASS サーバでは, 複数人で共有する資源については, SIGEN ファイルに資源の概要や取扱い上の注意を書いておくようにすること.

mksigen の詳細は mksigen homepage を参照のこと.

mksigen のインストール

まず, /usr/local/src へ移動した後, ソースファイルをダウンロードする.

mksigen の最新バージョンはこちらで確認できる. 最新バージョンは 2018 年 10 月現在, 0.2-2 であった.

# cd /usr/local/src
# wget http://www.gfd-dennou.org/arch/cc-env/mksigen/mksigen_0.2-2_all.deb

パッケージをインストールする.

# dpkg -i mksigen_0.2-2_all.deb

dpkg は個別にパッケージを操作する (インストールなど) ためのコマンドである.

この後の設定を以下のようにする (hostname 以外はデフォルトの設定).

<--- configuration of mksigen --->
top directory: [/home]
top directory title: [/home]
background color (name or #aabbcc): [#CCFFCC]
ignored filename pattern: [\.bak$|~$|^lost\+found$]
hostname written in HTML: [tako-itpass.scitec.kobe-u.ac.jp]ika-itpass.scitec.kobe-u.ac.jp
make <DL> indentation?: (y/n) [N]
make summary?: (y/n) [N]
summary section title: [summary]
detail section title: [detail]
force mksigen to be in a group: []

hostname についてはデフォルトが tako になっているので変更する. 最後に mksigenconfig の中身を確認する (設定の最後に表示される).

<--- your configuration --->
summarytext: summary
heading: ika-itpass.scitec.kobe-u.ac.jp
bgcolor: #CCFFCC
indent:
ignorepat: \.bak$|~$|^lost\+found$
forcegid:
summarize:
toptitle: /home
acktext: this page is generated with ::mksigen::
detailtext: detail
topdir: /home
acklink: http://www.gfd-dennou.org/arch/cc-env/mksigen/desc.htm
is this okay?: (y/n) [N]y
configuration file: [/usr/sbin/../lib/mksigen.conf]
Processing triggers for man-db (2.7.6.1-2) ...

/usr/lib 以下に mksigen.conf ができたことを確認する.

また, man ページについては,

/usr/share/man/ja/man5/ 以下に mksigen-sigen.5.gz
/usr/share/man/ja/man8/ 以下に mksigen-email.8.gz
/usr/share/man/ja/man8/ 以下に mksigen-intro.8.gz
/usr/share/man/ja/man8/ 以下に mksigen.8.gz
/usr/share/man/man5/ 以下に mksigen-sigen.5.gz
/usr/share/man/man8/ 以下に mksigen-email.8.gz
/usr/share/man/man8/ 以下に mksigen-intro.8.gz
/usr/share/man/man8/ 以下に mksigen.8.gz

がインストールされることを確認する.

参考資料

システムログの保管期間を 3 ヶ月にする

システムログが 3 ヶ月間保存されるように設定する.

rsyslog の設定

ログが 3 ヶ月間保存されるように, ローテーションを設定する.

/etc/logrotate.d/rsyslog を開き

rotate 7
daily

= 中略 =

rotate 4
weekly

の部分を

rotate 90
daily

= 中略 =

rotate 12
weekly

に変更する.

aptitude の設定

6 ヶ月間保存する設定になっているため, 変更は不要であるが,

念のため /etc/logrotate.d/aptitude を開き

rotate 6
monthly

となっていることを確認する.

dpkg の設定

12 ヶ月 (1 年) 間保存する設定になっているため, 変更は不要であるが,

念のため /etc/logrotate.d/dpkg を開き, dpkg.log, alternatives.log のどちらも

monthly
rotate 12

となっていることを確認する.

[[ITPASS2018]2018年度サーバ構築マニュアル へ戻る]