IT pass HikiWiki - [ITPASS2017]OSの各種設定 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc_here}}

[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]


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

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 は適当な数字). 下では chikuwa1 アカウントを作成する例を示す.

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

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


= テストユーザの削除

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

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

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

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

REMOVE_HOME = 1
REMOVE_ALL_FILES = 1

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

# 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 権限を行使できるようにする.

#= 構築作業用の管理者ユーザの追加
#
#ユーザの追加については,
#((<[ITPASS2015]構築作業用アカウント>)) を参考にして行うこと.


= /etc/sudoers の編集

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

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

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

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

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

文末に以下を追加する.

chikuwa1 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 には, ((<このページ|URL:http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou/index.htm.ja>)) を参考にして以下のような内容を記述する.
    ただし, Debian のバージョンに応じてコード名 (stretch など) を適切に変更すること.
  * 2017 年のサーバ再構築では, 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 行目は((<地球流体電脳倶楽部|URL:http://www.gfd-dennou.org/>))のソフトウェアのダウンロード先である.


= GPG 鍵の登録

地球流体電脳倶楽部のパッケージを取得するには apt-key によって鍵を登録する必要がある.
詳しくは((<"apt の設定 - Computer Memorandum"|URL:http://www.gfd-dennou.org/member/uwabami/cc-env/AptGet.html>))を参照のこと.
APT-LINE の修正と同様, ((<このページ|URL:http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou/index.htm.ja>))を参考にして 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 対象を週次で報告するメールが来るようになるのでそれを参考に行うこと.

== 参考資料

* ((<"apt の設定 - Computer Memorandum"|URL:http://www.gfd-dennou.org/member/uwabami/cc-env/AptGet.html>))
* ((<"KeN's GNU/Linux Diary | secure apt"|URL:http://kmuto.jp/d/index.cgi/debian/apt-secure.htm>))


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

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

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


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

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

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

(2017 年のサーバ再構築時には, /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

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

  $ 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: enp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether bc:ae:c5:21:b0:df brd ff:ff:ff:ff:ff:ff
  3: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 68:05:ca:66:61:a0 brd ff:ff:ff:ff:ff:ff
    inet 10.35.19.150/24 brd 10.35.19.255 scope global enp9s0
       valid_lft forever preferred_lft forever
    inet6 fe80::6a05:caff:fe66:61a0/64 scope link
       valid_lft forever preferred_lft forever
  4: enp11s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0e:0c:d0:55:07 brd ff:ff:ff:ff:ff:ff
    inet 133.30.109.22/24 brd 133.30.109.255 scope global enp11s2
       valid_lft forever preferred_lft forever
    inet6 fe80::20e:cff:fed0:5507/64 scope link
       valid_lft forever preferred_lft forever


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

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

  # systemctl disable NetworkManager.service

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

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

  # systemctl


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

  allow-hotplug enp11s2
  iface enp11s2 inet static
        address 133.30.109.22
        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 enp9s0
  iface enp9s0 inet static
        address 10.35.19.150
        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 enp9s0 table 100
        post-down ip route del default table 100
        post-down ip rule del table 100 prio 10000

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


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

  # systemctl

の表示に NetworkManager.service が含まれていないことを確認する.
* なお, この時, 起動しているネットワークサービスは, networking.service である.


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

   # /etc/init.d/networking stop

   # /etc/init.d/networking start

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


== 参考資料
* ((<URL:https://www.debian.org/doc/manuals/debian-reference/ch05.ja.html#_the_network_interface_with_the_static_ip>))


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

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

  $ top

として, 例えば,

  top - 22:28:34 up 3 min,  1 user,  load average: 0.09, 0.22, 0.10
  Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
  %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  KiB Mem : 16433728 total, 15925928 free,   266924 used,   240876 buff/cache
  KiB Swap: 62498808 total, 62498808 free,        0 used. 15894016 avail Mem

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


= 時刻の設定

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

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

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

  # apt-get install ntpdate


== 時刻の修正(手動)

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

  # /usr/sbin/ntpdate-debian

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

  # date
  2017年 10月 20日 金曜日 22:30:41 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
  [tako] # dpkg --set-selections < new_list.txt

この際,

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

という警告が大量に表示されるかもしれない.
このときは,

# dselect update

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

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

を実行する.

2016 年には, これで警告の数が 3 つになったようであるが, 2017 年には,
相変わらず大量の警告が表示された.

2017 年は, このままインストールした.

  [tako] # apt-get dselect-upgrade


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

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

  [tako] # apt-get dselect-upgrade

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

  # apt-get install gnome

を行う. (2017 年のサーバ再構築では, この作業で実際に 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" をチェックして有効にする.
その後, デフォルトロケールに UTF-8 を選択して終了する.

= mksigen のインストール

== mksigen とは

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

mksigen の詳細は ((<"mksigen homepage"|URL:http://www.gfd-dennou.org/arch/cc-env/mksigen/desc.htm>)) を参照のこと.


== mksigen のインストール

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

mksigen の最新バージョンは((<こちら|URL:http://www.gfd-dennou.org/arch/cc-env/mksigen/SIGEN.htm>))で確認できる. 最新バージョンは 2017 年 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]
  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

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

== 参考資料

* ((<"mksigen homepage"|URL:http://www.gfd-dennou.org/arch/cc-env/mksigen/desc.htm>))


= システムログの保管期間を 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

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

== 参考文献

((<[ITPASS2014]システムログの保管期間を 3 ヶ月にする>))


[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]