サーバ情報
■ 契約プラン
- リージョン:東京
- メモリ:1GB
- CPU:2コア
- SSD:100GB
■ OS情報
$ cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
■ CPU情報
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
stepping : 1
microcode : 0x1
cpu MHz : 2397.222
cache size : 4096 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit
bogomips : 4794.44
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
stepping : 1
microcode : 0x1
cpu MHz : 2397.222
cache size : 4096 KB
physical id : 1
siblings : 1
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit
bogomips : 4794.44
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
■ メモリ情報
$ cat /proc/meminfo
MemTotal: 841024 kB
MemFree: 221220 kB
MemAvailable: 543912 kB
Buffers: 104976 kB
Cached: 325808 kB
SwapCached: 0 kB
Active: 331072 kB
Inactive: 186516 kB
Active(anon): 87972 kB
Inactive(anon): 15072 kB
Active(file): 243100 kB
Inactive(file): 171444 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 86856 kB
Mapped: 81360 kB
Shmem: 16244 kB
KReclaimable: 43428 kB
Slab: 74596 kB
SReclaimable: 43428 kB
SUnreclaim: 31168 kB
KernelStack: 1760 kB
PageTables: 7276 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2517660 kB
Committed_AS: 356324 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 10240 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 90104 kB
DirectMap2M: 958464 kB
DirectMap1G: 0 kB
■ ストレージ情報
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 396M 0 396M 0% /dev
tmpfs 411M 0 411M 0% /dev/shm
tmpfs 411M 16M 395M 4% /run
tmpfs 411M 0 411M 0% /sys/fs/cgroup
/dev/vda2 50G 3.8G 44G 8% /
tmpfs 83M 0 83M 0% /run/user/0
tmpfs 83M 0 83M 0% /run/user/1000
サーバ構築
【STEP1】一般ユーザの作成
ユーザを作成
$ useradd [ユーザ名]
作成したユーザのパスワードを変更
$ passwd [ユーザ名]
スーパーユーザ権限でコマンドを実行できるように変更
$ gpasswd -a [ユーザ名] wheel
ちょっと疑問に思ったこと・・・
リンク:なぜ、Wheelグループと呼ばれるのか?
$ su [ユーザ名]
【STEP2】SSH ログイン環境の整備
SSHの設定ファイルを編集する前にバックアップ
$ cd /etc/ssh
$ cp -pi sshd_config sshd_config.org
Rootログインを禁止する
$ vi sshd_config
---------------
PermitRootLogin yes -> no
---------------
SSHのポート番号を変更する
※ ここでは例として10099を設定する
$ vi sshd_config
---------------
Port 22 -> 10099
---------------
ウェルノウンポートを設定しないように注意!
リンク:ウェルノウンポート
パスワード無しログインを禁止する
$ vi sshd_config
---------------
PermitEmptyPasswords yes -> no
---------------
特定のユーザのみ、SSHでログイン可能とする
$ vi sshd_config
---------------
# 1ユーザだけ許可する場合
AllowUsers [ユーザ名]
# 複数のユーザを許可する場合
AllowUsers [ユーザ名1] [ユーザ名2] [ユーザ名3]
---------------
設定ファイルの構文チェックを実施する
※ 何も表示されなければ、問題なし。
$ sshd -t
sshdサービスを再起動して、設定を反映させる
$ systemctl restart sshd.service
SSHの設定反映は完了したが、ファイアウォールで22番ポートを未許可に変更し、10099番ポートを許可へ変更する必要がある。
まずは、ファイアウォールのステータスを確認する
$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor p>
Active: active (running) since Wed 2020-04-08 17:48:55 JST; 39min ago
Docs: man:firewalld(1)
Main PID: 701 (firewalld)
Tasks: 2 (limit: 5056)
Memory: 30.6M
CGroup: /system.slice/firewalld.service
mq701 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork ->
active (running) なので、ファイアウォールが動作している。
ファイアウォールの設定を確認する
$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
ssh(22番ポート)が許可状態にあるため、22番ポートを許可対象から除外する
# 恒久的にsshを許可対象から除外する
$ firewall-cmd --permanent --remove-service=ssh
# ファイアウォールの設定を反映する
$ firewall-cmd --reload
ssh(22番ポート)が未許可状態になったことを確認する
$ firewall-cmd --reloadlist-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
servicesの項目からsshが除外されていれば、設定反映は成功。
次に、ポート番号10099を許可対象として追加する
# ポート番号10099を許可対象として追加する
$ firewall-cmd --zone=public --add-port=10099/tcp --permanent
# ファイアウォールの設定を反映する
$ firewall-cmd --reload
ssh(10099番ポート)が許可状態になったことを確認する
$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client
ports: 10099/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
portsの項目に10099/tcpが追加されていれば、設定反映は成功。
SSH,ファイアウォールの設定反映が完了したため、以下のことを確認する
- RootユーザでSSHできないこと
- 一般ユーザでSSHできること
- ポート番号22でSSHできないこと
- ポート番号10099でSSHできること
- 未許可ユーザではSSHできないこと
- 許可ユーザではSSHできること
上記の結果がOKであれば、SSHの設定はひとまず完了。
【STEP3】SSH 鍵認証ログインの設定
公開鍵配置用のディレクトリを作成する
# 鍵認証ログインさせたい一般ユーザでホームディレクトリへ移動
$ cd ~
# 公開鍵配置用のディレクトリを作成
$ mkdir .ssh
# 所有者のみ公開鍵へのアクセスを許可する
$ chmod 700 .ssh
一旦、ローカル側の作業に移動する。
以下、公開鍵と秘密鍵を生成方法を説明する。
teratermを起動し、新しい接続が表示されたら[キャンセル]する
上段メニューの[設定]を選択する
[SSH鍵生成]を選択すると、鍵生成画面が表示される
[生成]を押下し、パスフレーズを入力する。
その後、[公開鍵の保存]と[秘密鍵の保存]を選択して、ローカルに公開鍵と秘密鍵を保存する。
ここでサーバ側の作業に戻る。
鍵認証ログインさせたい一般ユーザのホームディレクトリへ移動する
$ cd ~
teratermに対して、先ほど生成した公開鍵をドラッグ&ドロップする
[SCP]を選択すると、一般ユーザのホームディレクトリに公開鍵が配置される
$ ls
id_rsa.pub
公開鍵をauthorized_keysへ結合する
# 公開鍵をauthorized_keysへ結合する
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
# 不要となった公開鍵は削除する
$ rm id_rsa.pub
# authorized_keysのパーミッションを600で制限する
$ chmod 600 authorized_keys
公開鍵の配置が完了したので、teraterm等のSSHクライアントを使用して、秘密鍵を使用した接続ができるか確認してみる。
ログインに成功すれば、ひとまず鍵認証ログインは成功であるが、まだ通常のパスワードログインが可能であるため、SSHの設定を変更する。
パスワード認証によるログインを禁止する
# SSHの設定ファイルがあるディレクトリへ移動する
$ cd /etc/ssh
# 設定変更前にSSHの設定ファイルをバックアップする
$ cp -pi sshd_config sshd_config.YYYYMMDDHHMM
# パスワード認証を禁止するように、設定を修正する
$ vi sshd_config
---------------
PasswordAuthentication yes -> no
---------------
# 構文チェックを実施する
$ sshd -t
# sshdサービスを再起動して、設定を反映する
$ systemctl restart sshd.service
設定反映が完了したので、パスワード認証ログインができず、鍵認証のみでログインができればOKである。
Teraterm から自動ログインするマクロ
;=====================================================================
; 接続情報
HOSTADDR = 'ホストアドレス'
USERNAME = 'ユーザ名'
PASSWORD = 'パスフレーズ'
KEYFILE = '秘密鍵のフルパス'
;=====================================================================
; 処理ディレクトリを現在ディレクトリに変更
getdir DIR
setdir DIR
; コマンドオプション組立て
COMMAND = HOSTADDR
strconcat COMMAND ':[ポート番号] /ssh /2 /auth=publickey /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
strconcat COMMAND ' /keyfile='
strconcat COMMAND KEYFILE
; 接続
connect COMMAND
end