IT pass HikiWiki - [Memo2018][ITPASS]OSの各種設定 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc_here}}
[((<[ITPASS2018]2018年度サーバ構築ログ>)) へ戻る]
#= 構築作業用アカウントの作成
#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 chikuwa4 --uid 40004
test ユーザをログアウトした.
= テストユーザの削除
#OS のインストール時に作成したテストユーザ "test" を uid も含めて削除する.
chikuwa4 でログインし, /etc/deluser.conf を編集した.
$ su root
# パスワード:適切なパスワードを入力
# vi /etc/deluser.conf
/etc/deluser.conf を以下のように書き換えた.
REMOVE_HOME = 1
REMOVE_ALL_FILES = 1
この後, chikuwa4 でログインし直し,
# 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 の編集
chikuwa4 でログインし, root になった.
# su root
# パスワード:適切なパスワードを入力
以下のコマンドを入力し, sudoers ファイルを編集した.
# apt-get install vim
# export EDITOR=vim
# apt-get install sudo
# visudo
#環境変数 EDITOR に指定されたエディタ (vim) が立ち上がる.
文末に以下を追加した.
chikuwa4 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 など) を適切に変更すること.
# * 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 行目は((<地球流体電脳倶楽部|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 がインストールされていれば再設定する.
#(なお, 2018 年のサーバ再構築時には, exim4 がインストールされていなかった. つまり, 下のコマンドを実行すると, exim4 がインストールされていない旨のメッセージが表示された. そのため, 下の作業は行わなかった.)
# # export LANG=C
# # dpkg-reconfigure exim4-config
#設定画面で local delivery only のみになっていることを確認する.
#他はデフォルトのままにする.
#= その他の /etc/init.d 以下から起動される不要なネットワークサービスの停止
#nfs が起動していれば停止するために, 下のコマンドを実行する.
# # /etc/init.d/nfs-common stop
#(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: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast 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
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.21/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 を再起動してしまう方が簡単であることが多い.
#== 参考資料
#* ((<URL:https://www.debian.org/doc/manuals/debian-reference/ch05.ja.html#_the_network_interface_with_the_static_ip>))
= 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 で取り寄せる.
リストを ika から tako へ転送した.
== リストを元にインストール
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 がインストールされた.
#(2017 年のサーバ再構築では, この作業で実際に 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"|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>))で確認できる.
最新バージョンは 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
がインストールされることを確認した.
#== 参考資料
#* ((<"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 ヶ月にする>))
[((<[ITPASS2018]2018年度サーバ構築ログ>)) へ戻る]
[((<[ITPASS2018]2018年度サーバ構築ログ>)) へ戻る]
#= 構築作業用アカウントの作成
#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 chikuwa4 --uid 40004
test ユーザをログアウトした.
= テストユーザの削除
#OS のインストール時に作成したテストユーザ "test" を uid も含めて削除する.
chikuwa4 でログインし, /etc/deluser.conf を編集した.
$ su root
# パスワード:適切なパスワードを入力
# vi /etc/deluser.conf
/etc/deluser.conf を以下のように書き換えた.
REMOVE_HOME = 1
REMOVE_ALL_FILES = 1
この後, chikuwa4 でログインし直し,
# 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 の編集
chikuwa4 でログインし, root になった.
# su root
# パスワード:適切なパスワードを入力
以下のコマンドを入力し, sudoers ファイルを編集した.
# apt-get install vim
# export EDITOR=vim
# apt-get install sudo
# visudo
#環境変数 EDITOR に指定されたエディタ (vim) が立ち上がる.
文末に以下を追加した.
chikuwa4 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 など) を適切に変更すること.
# * 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 行目は((<地球流体電脳倶楽部|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 がインストールされていれば再設定する.
#(なお, 2018 年のサーバ再構築時には, exim4 がインストールされていなかった. つまり, 下のコマンドを実行すると, exim4 がインストールされていない旨のメッセージが表示された. そのため, 下の作業は行わなかった.)
# # export LANG=C
# # dpkg-reconfigure exim4-config
#設定画面で local delivery only のみになっていることを確認する.
#他はデフォルトのままにする.
#= その他の /etc/init.d 以下から起動される不要なネットワークサービスの停止
#nfs が起動していれば停止するために, 下のコマンドを実行する.
# # /etc/init.d/nfs-common stop
#(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: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast 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
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.21/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 を再起動してしまう方が簡単であることが多い.
#== 参考資料
#* ((<URL:https://www.debian.org/doc/manuals/debian-reference/ch05.ja.html#_the_network_interface_with_the_static_ip>))
= 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 で取り寄せる.
リストを ika から tako へ転送した.
== リストを元にインストール
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 がインストールされた.
#(2017 年のサーバ再構築では, この作業で実際に 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"|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>))で確認できる.
最新バージョンは 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
がインストールされることを確認した.
#== 参考資料
#* ((<"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 ヶ月にする>))
[((<[ITPASS2018]2018年度サーバ構築ログ>)) へ戻る]