[ITPASS2017]OSの各種設定
- 構築作業用アカウントの作成
- アカウント作成方法
- chikuwaX アカウントの作成
- テストユーザの削除
- アカウントリスト
- sudo の設定
- /etc/sudoers の編集
- root になれるかの確認
- APT の設定
- APT-LINE の修正
- GPG 鍵の登録
- セキュリティアップデート
- SSH のインストールと設定
- ssh パッケージのインストール
- パスワード認証の拒否と root ログインの拒否設定
- /etc/init.d/ 以下の不要なネットワークサービスの停止
- その他の /etc/init.d 以下から起動される不要なネットワークサービスの停止
- /usr/sbin/inetd によって起動されるネットワークサービスの停止
- NetworkManager の停止
- OS が認識しているメモリの確認
- 時刻の設定
- debianパッケージの引き継ぎ
- システムの文字コードの設定
- mksigen のインストール
- システムログの保管期間を 3 ヶ月にする
[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 権限を行使できるようにする.
/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 には, このページ を参考にして以下のような内容を記述する. ただし, 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 行目は地球流体電脳倶楽部のソフトウェアのダウンロード先である.
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 がインストールされていれば再設定する. (なお, 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 を再起動してしまう方が簡単であることが多い.
参考資料
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 を参照のこと.
mksigen のインストール
まず, /usr/local/src へ移動した後, ソースファイルをダウンロードする.
mksigen の最新バージョンはこちらで確認できる. 最新バージョンは 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
がインストールされることを確認する.
参考資料
システムログの保管期間を 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サーバ構築・運用ドキュメント へ戻る]
Keyword(s):
References:[[ITPASS2017]2017年度サーバ構築マニュアル] [[ITPASS2017]gate-toroku-system のインストールと設定] [[ITPASS2018]gate-toroku-system のインストールと設定] [[ITPASS2021]gate-toroku-system のインストールと設定] [[Memo2018][ITPASS]gate-toroku-system のインストールと設定] [[Memo2020][ITPASS]gate-toroku-system のインストールと設定] [[Memo2021][ITPASS]gate-toroku-system のインストールと設定] [[Memo2022][ITPASS]gate-toroku-system のインストールと設定]