[ITPASS2020]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

この後,

# deluser test

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

アカウントリスト

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

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

sudo の設定

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

/etc/sudoers の編集

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

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

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

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

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

文末に以下を追加する.

chikuwaX ALL=(ALL) ALL

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

root になれるかの確認

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

$ sudo -s

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

APT の設定

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

APT-LINE の修正

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

    # cp /etc/apt/sources.list /etc/apt/sources.list.org
  • sources.list を編集して下のように記述する.

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

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

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

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

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

GPG 鍵の登録

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

debian-keyring を取得する.

# apt install debian-keyring

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

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

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

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

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

# apt update

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

# apt upgrade

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

参考資料

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

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

# vi /etc/ssh/sshd_config

PermitRootLogin no
        :
PasswordAuthentication no
        :
UsePAM no

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

# systemctl restart ssh.service

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

exim4

exim4 がインストールされていれば再設定する.

# dpkg -l exim4

で, exim4 の行の左端が un と表示されればインストールされていない. (2018 年, 2020 年のサーバ再構築時にはインストールされていなかった.)

もしインストールされていれば下の作業を行う.

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

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

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

下のコマンドにより nfs が起動しているかどうか確認する.

# systemctl | lv

"nfs" の文字を含むサービスがなければ起動していない.

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

# /etc/init.d/nfs-common stop

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

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

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

# apt install openbsd-inetd

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

# vi /etc/inetd.conf

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

# systemctl restart inetd

NetworkManager の停止

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

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

# apt install net-tools resolvconf

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

# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  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: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  link/ether b4:2e:99:d2:9b:14 brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  link/ether 68:05:ca:b9:e0:b2 brd ff:ff:ff:ff:ff:ff
  inet 133.30.109.21/24 brd 133.30.109.255 scope global noprefixroute enp2s0
     valid_lft forever preferred_lft forever
  inet6 fe80::6a05:caff:feb9:e0b2/64 scope link noprefixroute
     valid_lft forever preferred_lft forever

enp2s0 がグローバルネットワークに接続されていることがわかる.

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

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

# systemctl disable NetworkManager.service

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

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

# systemctl

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

allow-hotplug enp2s0
iface enp2s0 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 eno1
iface eno1 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

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

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

# ping 133.30.109.22

# ping 133.30.109.203

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

# systemctl  

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

備考

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

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

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

参考資料

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

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

$ top

として, 例えば,

top - 15:24:08 up 13 min,  1 user,  load average: 0.00, 0.01, 0.00
Tasks: 121 total,   1 running, 120 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  32104.6 total,  31678.6 free,    250.1 used,    175.8 buff/cache
MiB Swap: 122070.0 total, 122070.0 free,      0.0 used.  31494.8 avail Mem

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

より, 32 GB のメモリが認識されている.

時刻の設定

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

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

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

# apt install ntpdate

時刻の修正(手動)

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

# /usr/sbin/ntpdate-debian

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

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

cron の設定

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

# vi /etc/cron.daily/ntpdate

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

次に, /etc/cron.daily/ntpdate を作成し, 上記のような時刻修正コマンドを毎日実行するように設定する.

/etc/cron.daily/ntpdate の内容は以下.

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

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

# chmod 755 /etc/cron.daily/ntpdate

debianパッケージの引き継ぎ

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

準備

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

# apt install dselect

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

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

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

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

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

リストを ika から tako に転送する. 必要に応じて joho?? (適当な joho 実験機) で仲介すること.

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

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

[tako] $ sudo -s
[tako] # 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 2260: tracker-gui
dpkg: warning: package not in status nor available database at line 2262: transfig
dpkg: warning: package not in status nor available database at line 2277: uim-common
dpkg: warning: package not in status nor available database at line 2282: uim-qt

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

[tako] # apt-get dselect-upgrade

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

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

[tako] # apt-get dselect-upgrade

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

# apt install gnome

を行って gnome がインストールしておき, 再起動する.

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

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

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

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

ファイル中の下の行

/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 を参照のこと.

システムログの保管期間を 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, /etc/logrotate.d/alternatives を開き, dpkg.log, alternatives.log のどちらも

monthly
rotate 12

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

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