Azure VMのroot初期パスワードやsudo権限設定手順(Rocky Linux)

2020-07-05Azure,RockyLinux/CentOS,Virtual Machine

Azureで作成したLinuxの仮想マシンで、管理者アカウントとして作成したユーザーのセキュリティ設定例の紹介です。
仮想マシン作成後に、最初に行ったrootユーザーに関するセキュリティ設定例も紹介しています。

初期状態では、管理者アカウントのユーザーにはsudo権限が付与され、自由に操作できます。
しかし、パブリッククラウド上の仮想マシンは攻撃を受けやすいため、セキュリティを強化することが重要です。
今回はRocky Linuxを例に、rootユーザーや管理者アカウントのセキュリティ設定手順を確認しました。

    • 主な内容
      • rootユーザーのパスワード設定
      • rootユーザーのSSHログイン拒否
      • 管理者アカウントのsudo権限剥奪
      • SSHポート番号の変更

※ Rocky Linux release 8.8 (Green Obsidian) を利用して手順を確認しています。
※ 本記事内では、Azure Virtual Machines (Azure VM) を仮想マシンと記載しています。

スポンサーリンク

rootユーザーのパスワード設定

仮想マシン作成直後(初期状態)のrootユーザーのパスワード

仮想マシンを作成した直後のrootユーザーのパスワードは公開されていません。
管理者アカウントとして作成したユーザーに付与されているsudo権限を利用して、rootユーザーに切り替えます。

rootユーザーのパスワード設定

管理者アカウントのユーザーはsudo権限を持っており、すべてのコマンドをパスワードなしで実行できるように設定されています。
sudo権限を利用してrootユーザーのパスワードを設定できます。

    • rootユーザーのパスワード設定方法
      • “sudo -i" コマンドでrootユーザーに切り替えてからパスワードを設定
      • “sudo passwd root" コマンドで直接rootユーザーのパスワードを設定

# sudo権限でrootユーザーへ切り替え
[azureuser@test-vm-01 ~]# sudo -i
#もしくは
[azureuser@test-vm-01 ~]
# sudo su –

# rootユーザーに切り替えてから、passwdコマンド使ってパスワードを設定
[root@test-vm-01 ~]# passwd
ユーザー root のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

# sudo passwdコマンドでrootユーザーのパスワードを設定
[azureuser@test-vm-01 ~]$ sudo passwd root

ユーザー root のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

※パスワードに身近な単語を使うと、”よくないパスワード: このパスワードは辞書チェックに失敗しました – 辞書の単語に基づいています”と表示されます。

管理者アカウントの認証方法にSSH公開キーを選択した場合

管理者アカウントの認証方法にSSH公開キーを選択した場合でも、ユーザー権限は変わりません。
sudo権限により、すべてのコマンドをパスワードなしで実行できます。
パスワード認証と同じ手順で、rootユーザーのパスワードを設定できます。

—広告—

SSH関連の設定変更

rootユーザーのSSHログイン拒否(PermitRootLogin)

rootユーザーのSSHログインを拒否する設定の手順です。

初期設定では、rootユーザーのSSHログインが許可されていることがあります。
しかし、外部からrootユーザーで直接ログインを許可するのは、セキュリティ上好ましくありません。
特別な理由がない限り、rootユーザーのSSHログインを拒否した方が良いです。

rootユーザーのSSHログインの設定ファイルは/etc/ssh/sshd_configです。
PermitRootLoginオプションで行います。
許可する場合は"Yes"、拒否する場合は"No"を設定します。

sshd_configの43行目あたりに設定があるので、"PermitRootLogin No"に変更します。

#PermitRootLoginの設定を確認
[root@test-vm-01 ~]# grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin yes

#PermitRootLoginの設定をNoに変更する
[root@test-vm-01 ~]# vi /etc/ssh/sshd_config

40 #Authentication:
41
42 #LoginGraceTime 2m
43 PermitRootLogin No #YesからNoに変更する

#sshdを再起動して設定を反映
[root@test-vm-01 ~]# systemctl restart sshd

パスワードでのログイン許可設定(PasswordAuthentication)

管理者アカウントの認証方式をSSHキーに設定した場合、初期状態ではパスワードでのSSHログインは拒否されています。
/etc/ssh/sshd_configのPasswordAuthentication設定で確認できます。
PasswordAuthenticationがnoとなっています。

50-cloud-init.confファイルにもPasswordAuthenticationの設定があり、同様にPasswordAuthenticationがnoとなっています。

#sshd_configでPasswordAuthenticationの設定を確認
[root@test-vm-01 ~]# grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication no
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication, then enable this but set PasswordAuthentication

#50-cloud-init.confでPasswordAuthenticationの設定を確認
[root@test-vm-01 ~]# grep PasswordAuthentication /etc/ssh/sshd_config.d/50-cloud-init.conf
PasswordAuthentication no

SSH接続ポート番号の変更

SSHの接続ポート番号を変更する事で、少しだけセキュリティを強化する事ができます。

/etc/ssh/sshd_configの17行目あたりに、SSH接続ポート番号の設定があります。
設定はコメントアウトされています。
デフォルト値は22番ポートとなっています。
例では10022番ポートに変更しています。

なお、仮想マシン側でSSHの接続ポート番号を変更した場合、Azureのネットワークセキュリティグループの設定も併せて変更が必要です。
受信セキュリティ規則の接続許可ポートを、設定したSSHのポート番号に併せて変更する必要があります。

#SSH接続ポートを設定する
[root@test-vm-01 ~]# vi /etc/ssh/sshd_config

17 #Port 22
18 Port 10022 #Portのコメントアウトを外し受信するポートを指定する

#sshdを再起動して設定を反映
[root@test-vm-01 ~]# systemctl restart sshd

Azure ロードバランサーのインバウンドNAT規則を利用したポート番号の変更手順についてはこちらで紹介しています。
仮想マシンやネットワークセキュリティグループの設定変更をすることなく、外部からのアクセスポートを変更する方法を紹介しています。
記事自体はリモートデスクトップで確認していますが、SSHでも同様に設定できます。

管理者アカウントとして作成したユーザーのsudo権限を剥奪

管理者アカウントとして作成したユーザーのsudo権限設定

管理者アカウントとして作成したユーザーにはsudo権限が付与されています。
この権限により、すべてのコマンドをパスワードなしで実行できます。
sudo権限の設定は/etc/sudoers.d/90-cloud-init-usersにあります。

rootユーザーのパスワードを設定してからsudo権限を剥奪します。
そうしないと、rootユーザーへの切り替えができなくなります。

#sudo権限設定を確認
[root@test-vm-01 ~]# cat /etc/sudoers.d/90-cloud-init-users

# Created by cloud-init v. 22.1-5.el8.0.1 on Sat, 22 Jul 2023 03:36:52 +0000
# User rules for azureuser
azureuser ALL=(ALL) NOPASSWD:ALL

#sudo権限はく奪
[root@test-vm-01 ~]# vi /etc/ssh/sshd_config

# Created by cloud-init v. 22.1-5.el8.0.1 on Sat, 22 Jul 2023 03:36:52 +0000

# User rules for azureuser
#azureuser ALL=(ALL) NOPASSWD:ALL #コメントアウトする

#設定変更後の確認(管理者アカウントとして作成したユーザーでsudo実行)
[azureuser@test-vm-01 ~]# sudo su –

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

#1) 他人のプライバシーを尊重すること。
#2) タイプする前に考えること。
#3) 大いなる力には大いなる責任が伴うこと。

[sudo] azureuser のパスワード:

管理者アカウントとして追加したユーザーのsudo権限

仮想マシンのパスワードのリセット機能を利用して、管理者アカウントへユーザーを追加できます。
管理者アカウントとして追加したユーザーにも、同様にsudo権限が付与されています。

管理者アカウントとして追加したユーザーの場合、sudo権限設定ファイルの場所が異なります。
/etc/sudoers.d/waagentに設定があります。
同様にすべてのコマンドが実行できるように、sudo権限が付与されています。
管理者アカウントとして追加したユーザーからsudo権限を剥奪する場合は、該当行をコメントアウトします。

#管理者アカウントとして追加したユーザーのsudo権限を確認
[root@test-vm-01 ~]# cat /etc/sudoers.d/waagent
追加した管理者ユーザー名 ALL = (ALL) NOPASSWD: ALL

管理者アカウントへユーザーを追加する手順はこちらで紹介しています。
仮想マシンのパスワードリセットの機能を利用しています。

—広告—

最後に

管理者アカウントとして作成したユーザーやrootユーザーのセキュリティに関する設定について、Rocky Linuxの仮想マシンを例に確認しました
管理者アカウントとしてユーザーを作成すると、すべてのコマンドが実行できるsudo権限を保有してるなど、自由に操作できるようになっています。
今回実施した内容は基本的な内容のみですが、sudo権限の設定を中心にセキュリティを意識した設定をすることが重要かと思います。

引き続き色々試してみたいと思います。

Rocky Linuxの仮想マシンデプロイから初期設定までの手順を紹介しています。

仮想マシン認証方法にSSHキーを用いる場合の設定はこちらで紹介しています。
パスフレーズ付きの鍵ペアを利用した場合についても確認しています。

Tera TermやPuTTYを利用した鍵ペア生成方法についてはこちらで紹介しています。
ログイン手順についても紹介しています。

仮想マシン作成時のカスタムデータ(cloud-init)設定についてはこちらで紹介しています。
作成時にOSの設定を一緒に実行する手順を紹介しています。

スポンサーリンク