自分用・検証用 Ubuntu21 作成手順メモ(2021/09/20 版)
以前に下記のメモを書きました。
今回は Ubuntu 21.x 系を検証に構築する手順をメモしておきます。 検証環境用の VM を作成する手順ですので、意図的にセキュリティレベルを下げています。
SSH 接続時の警告時を表示しない
別のホストへ SSH 接続する際、警告が表示されないように設定しておきます。
| cat << EOF > /etc/ssh/ssh_config.d/99_lab.conf
UserKnownHostsFile=/dev/null
EOF
|
root へユーザの鍵&パスワード設定
Ubuntu のインストーラでは「root のパスワードは指定不可」「必ず標準ユーザを作成しなければいけない」ようです (たぶん)。 まず、root ユーザのパスワードを設定しておきます。
| # passwd
New password:
Retype new password:
passwd: password updated successfully
|
root ユーザ用の公開鍵も登録しておきます。
| vi ~/.ssh//authorized_keys
|
システムのアップデート
システムをアップデートしておきます。
| apt -y update
apt -y upgrade
reboot
|
標準ユーザの削除
(パッケージのアップデートに伴い、再起動を実施したら) 直接、root ユーザとして SSH ログインし、インストーラで作成した標準ユーザは削除します。
コンソールの有効化
IP 到達性が無い部分に仮想マシンを作成する場合、直接コンソールアクセス出来ると便利ですので、コンソール接続を有効化しておきます。 コンソール接続を有効化するには GRUB2 の設定ファイル (/etc/default/grub
) を修正します。
変更前
GRUB2 の設定ファイルは初期状態で下記のようになっていました (※ コメントは省略しています)。
| GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
|
変更後
| cat << EOF > /etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_TERMINAL="console serial"
EOF
|
次に securetty の定義を追加します。
| cp /usr/share/doc/util-linux/examples/securetty /etc/securetty
echo "ttyS0" >> /etc/securetty
|
最後に GRUB をアップデートします。
パッケージの追加インストール
| apt -y install \
fping \
nmap \
tree \
tshark \
unzip
|
コメント除外ツールのインストール
| curl -L \
https://github.com/sig9org/uncmnt/releases/download/v0.0.1/uncmnt_v0.0.1_linux_amd64 \
-o /usr/local/bin/uncmnt
chmod 755 /usr/local/bin/uncmnt
|
キャッシュ / コマンド実行履歴を削除する
apt のキャッシュとコマンド実行履歴を削除しておきます。 ここまで完了したら仮想マシンを電源オフします。
| apt clean
history -c
poweroff
|
アドレス変更スクリプト
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 | cat << EOF > /usr/local/bin/chaddr
#!/usr/bin/env python3
import argparse
import subprocess
import textwrap
parser = argparse.ArgumentParser()
parser.add_argument('-a', '--address', required=True)
parser.add_argument('-g', '--gateway', required=True)
args = parser.parse_args()
hostname = args.address.replace('.', '-')
subprocess.call('hostnamectl set-hostname ' + hostname, shell=True)
netplan = textwrap.dedent('''
network:
ethernets:
ens160:
dhcp4: false
dhcp6: false
addresses: [{arg1}/24]
gateway4: {arg2}
nameservers:
addresses: [1.1.1.1, 1.0.0.1]
version: 2
''').format(arg1=args.address, arg2=args.gateway).strip()
with open('/etc/netplan/99_config.yaml', 'w') as f:
f.write(netplan)
hosts = textwrap.dedent('''
127.0.0.1 localhost {arg1}
127.0.1.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet {arg1}
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
''').format(arg1=hostname).strip()
with open('/etc/hosts', 'w') as f:
f.write(hosts)
EOF
chmod 755 /usr/local/bin/chaddr
|
VM から DVD メディアを取り出しておく
テンプレート化する前に仮想マシンの光学ドライブからインストールに利用した DVD メディアを取り出しておきます。
テンプレート化する
ここまで用意が出来たら仮想マシンをテンプレート化します。 以降、検証用の仮想マシンを作成したい場合はこのテンプレートから複製します。