Rocky LinuxのAzure VM作成手順やOS初期設定手順

2019-05-19Azure,Rocky Linux/CentOS,Virtual Machines

Rocky Linuxの仮想マシン(Azure VM)のリソース作成から、日本語化、swap有効化などのOS初期設定手順です。

    • 主な内容
        • 仮想マシンのリソースを作成
        • ネットワークセキュリティグループ(NSG)設定を確認
        • パッケージのアップデート
      • OSの日本語化
      • swapの設定
      • Rocky Linuxのアカウントロック設定(ログイン試行上限の設定)
      • SELinuxの無効化

※Rocky Linux release 8.8 (Green Obsidian)を利用しています。2023年7月現在の情報です。
※SELinux無効化については、セキュリティ的に推奨されるものではありません。
※本記事内では、Azure Virtual Machines(Azure VM)を仮想マシンと記載しています。
※本記事内では、Azure Network Security Group(NSG)をネットワークセキュリティグループと記載しています。
※初期設定は、OSの設定を中心に確認しています。

スポンサーリンク

Rocky Linuxの仮想マシンを作成する手順

仮想マシンのリソースを作成

Rocky Linux 8の仮想マシンを作成します。
今回はsv-cacti-01という名前で、East US2リージョンに作成します。

仮想マシンのリソース作成手順
Azure Portalのトップ画面でリソースの作成を選択します。
Marketplaceの画面が表示されます。
“rocky linux"と入力し検索します。
Rocky Linuxのオフィシャルイメージが表示されます。
Rocky Linux 8 – Freeを選択します。

仮想マシンの作成画面が表示されます。
仮想マシン名やリージョンなどを設定します。

※認証の種類はSSH公開キーを選択し、新しくキーの組を生成しています。
※Rocky Linux 8のイメージでは、セキュリティの種類はStandardのみ選択可能でした。
※VMアーキテクチャはx64のみ選択可能でした。

マネージドディスクの設定画面です。
ディスクの種類などを設定します。

※今回は検証目的のため、Standard HDDを選択しています。
※VMと共に削除にチェックを入れると、仮想マシン削除時にマネージドディスクも同時に削除されます。
※Rocky Linuxのディスクイメージサイズは10GBです。

ネットワーク設定画面です。
作成する仮想ネットワーク、サブネット、パブリックIPを設定します。

※VMが削除されたときにNICを削除するにチェックを入れると、仮想マシン削除時にネットワークインターフェースも同時に削除されます。
※パブリックIPを利用している場合は、パブリックIPも仮想マシンと一緒に削除できます。
※Rocky Linuxのイメージは、NICネットワークセキュリティグループの設定が必須となっていました。

【パブリックIPを利用する場合】

管理画面です。
マネージドIDや自動シャットダウンなどの設定ができます。
利用用途や環境に合わせて適切に設定します。

※今回は検証利用目的のため、自動シャットダウンを無効化しています。

監視設定画面です。
ブート診断やOSゲスト診断の有効化を設定します。
利用用途や環境に合わせて適切に設定します。

※今回はデフォルト値のまま進めます。

詳細設定画面です。
拡張機能のインストールなどの設定ができます。
仮想マシンのリソース作成と同時に設定できます。
確認画面です。
内容を確認後、作成を選択してリソースを作成します。
新しいキーの組の生成を選択している場合は、秘密キーのダウンロード画面が表示されます。
秘密キーのダウンロードはこのタイミングでしかできません。
紛失しないように安全に保管します。

カスタムデータの利用方法については、こちらで紹介してます。
TimeZoneやLocaleの設定変更を例に手順を紹介しています。

作成した仮想マシンへのログイン

Tera Termを使用して仮想マシンへログインします。

仮想マシンへログイン
ホストには接続先のIPアドレスまたはホスト名を指定します。
認証画面が表示されます。
ユーザー名とダウンロードした秘密キー(秘密鍵)を指定します。
サーバーへログインすることができました。
パスワードを使用することなく、sudo su -でrootユーザーになることもできます。

ネットワークセキュリティグループを新規作成した場合、SSHがインターネットに全開放される

Rocky Linuxのイメージを利用して仮想マシンを作成する場合、ネットワークセキュリティグループを指定する必要があります。
このネットワークセキュリティグループはネットワークインターフェースに関連付けられます。
新規作成するか、既存のネットワークセキュリティグループから選択します。

新規作成したネットワークセキュリティグループを確認すると、SSH(22番ポート)がインターネットに公開されています。
セキュリティ上非常に危険な状態なので、速やかにIPアドレスなどでアクセス制限を行う必要がある。

ネットワークセキュリティグループの設定を確認
受信セキュリティ規則にSSHのルールがあります。
ソース、宛先共に任意となっています。
どこからでもSSH(22番ポート)へアクセスできるようになっています。

仮想マシンのネットワークセキュリティグループ設定については、こちらで紹介しています。

新規に生成したSSHキーは再利用できる

仮想マシン作成時にSSHキーを生成した場合、SSHキーのリソースが作成されます。
このリソースには公開鍵が保存されます。
別の仮想マシンを作成する際に、そのSSHキーに保存された公開鍵を利用することができます。

SSHキーのリソースを確認

SSHキーのリソースが生成されています。
デフォルトのリソース名は仮想マシン名_Keyとなります。

※SSHキーのリソースでは公開キー(公開鍵)のみを管理します。秘密キー(秘密鍵)を確認したりダウンロードしたりすることはできません。

仮想マシンの管理者アカウントの認証にSSHキーを使う場合の手順については、こちらで紹介しています。
SSHキーでの鍵生成やパスフレーズ付きの鍵ペアを利用する方法についても紹介しています。

—広告—

Rocky Linuxの仮想マシン作成後の基本的な初期設定手順

rootユーザーに関する設定

Marketplaceから作成したRocky Linuxの仮想マシンでは、rootユーザーのパスワードは公開されていません。
仮想マシン作成時に設定した初期ユーザーにはsudo権限が付与されています。

    • rootユーザーに関する設定
      • rootユーザーのパスワード設定
      • 初期ユーザーのsudo権限はく奪
      • rootユーザーのsshログイン拒否

rootユーザーの設定手順については、こちらで紹介しています。

パッケージのアップデート

パッケージをアップデートします。

#アップデート
[root@sv-cacti-01 ~]# dnf -y update

※アップデートは利用環境に合わせて実施してください。

タイムゾーンを日本時間に設定

タイムゾーンを日本時間に設定します。
Rocky Linux 8の時刻設定には、timedatectlコマンドを使用します。

#設定前の確認
[root@sv-cacti-01 ~]# timedatectl
 Local time: Sat 2023-07-22 03:41:48 UTC
 Universal time: Sat 2023-07-22 03:41:48 UTC
 RTC time: Sat 2023-07-22 03:41:47
 Time zone: UTC (UTC, +0000)
 System clock synchronized: no
 NTP service: inactive
 RTC in local TZ: no

#日本時間に設定
[root@sv-cacti-01 ~]# timedatectl set-timezone Asia/Tokyo

#設定後の確認
[root@sv-cacti-01 ~]# timedatectl
Local time: 土 2023-07-22 12:57:11 JST #UTCからJSTに変わっています。
Universal time: 土 2023-07-22 03:57:11 UTC
RTC time: 土 2023-07-22 03:57:11
Time zone: Asia/Tokyo (JST, +0900) #UTCからAsia/Tokyo (JST, +0900)に変わっています。
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no

システムロケールとキーボードマップを日本語に設定

システムのロケールを日本語に設定します。
日本語キーボードマップの設定も行います。
ロケールの設定にはlocalectlコマンドを使用します。

#設定前の確認
[root@sv-cacti-01 ~]# localectl
 System Locale: LANG=en_US.UTF-8
 VC Keymap: us
 X11 Layout: us

#日本語化設定
[root@sv-cacti-01 ~]# localectl set-locale LANG=ja_JP.utf8
[root@sv-cacti-01 ~]# source /etc/locale.conf
[root@sv-cacti-01 ~]# localectl set-keymap jp106

#設定後の確認
[root@sv-cacti-01 ~]# localectl

System Locale: LANG=ja_JP.utf8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp

※初期状態でglibc-all-langpacks-2.28-211.el8.x86_64がインストールされています。Rocky Linux 9ではglibc-all-langpacksがインストールされていません。日本語化を実施する際は、glibc-all-langpacksまたはglibc-langpack-jaを個別にインストールする必要があります。

ログイン失敗の回数上限を設定

Rocky Linuxのローカル認証にはSSSD(System Security Services Daemon)が利用されています。
authselectコマンドを使用して設定します。
アカウントロックに対応するfeatureはwith-faillockです。

    • アカウントロック設定内容
      • ユーザー名が存在しない場合:ログ取得する
      • ログイン試行回数:3回
      • ログイン失敗の間隔:300秒(5分)
      • ローカルユーザーのみを対象とする
      • rootユーザーも対象とする

※コメントアウトを解除すると設定が有効になります。
※ログイン失敗の間隔は最初の失敗からの経過時間になります。

#現在の設定を確認
[root@sv-cacti-01 ~]# authselect current

プロファイル ID: sssd
有効な機能: なし

#アカウントロック機能有効化
[root@sv-cacti-01 security]# authselect enable-feature with-faillock

Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.

#設定後の確認(有効な機能が追加になっています)
[root@sv-cacti-01 security]# authselect current

プロファイル ID: sssd
有効な機能:
– with-faillock

#アカウントロック設定(設定ファイルバックアップしてから設定)
[root@sv-cacti-01 security]# cp -p /etc/security/faillock.conf /etc/security/faillock.conf.`date “+%Y%m%d"`

[root@sv-cacti-01 security]# vi /etc/security/faillock.conf

# Will log the user name into the system log if the user is not found.
# Enabled if option is present.

audit

# Only track failed user authentications attempts for local users
# in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users.
# The `faillock` command will also no longer track user failed
# authentication attempts. Enabling this option will prevent a
# double-lockout scenario where a user is locked out locally and
# in the centralized mechanism.
# Enabled if option is present.

local_users_only

# Deny access if the number of consecutive authentication failures
# for this user during the recent interval exceeds n tries.
# The default is 3.

deny = 3

# The length of the interval during which the consecutive
# authentication failures must happen for the user account
# lock out is <replaceable>n</replaceable> seconds.
# The default is 900 (15 minutes).

fail_interval = 300

# The access will be reenabled after n seconds after the lock out.
# The value 0 has the same meaning as value `never` – the access
# will not be reenabled without resetting the faillock
# entries by the `faillock` command.
# The default is 600 (10 minutes).

unlock_time = 300

# Root account can become locked as well as regular accounts.
# Enabled if option is present.

even_deny_root

# This option implies the `even_deny_root` option.
# Allow access after n seconds to root account after the
# account is locked. In case the option is not specified
# the value is the same as of the `unlock_time` option.

root_unlock_time = 300

swapの有効化設定

デフォルトではswapが設定されていません。仮想マシンのswap設定は/etc/waagent.confで行います。
swapの有効化はResourceDisk.EnableSwapで設定します。swap領域のサイズはResourceDisk.SwapSizeMBで設定します。
waagent.confの詳細については公式サイトを参照します。

構成(Azure Linux VM エージェントの概要)
ResourceDisk.EnableSwap
ResourceDisk.SwapSizeMB

#設定ファイルのバックアップ
[root@sv-cacti-01 ~]# cp -p /etc/waagent.conf /etc/waagent.conf.`date “+%Y%m%d"`

#設定前の確認
[root@sv-cacti-01 ~]# swapon
※何も表示されません。
[root@sv-cacti-01 ~]# grep /etc/waagent.conf -e “ResourceDisk.EnableSwap=n" -e “ResourceDisk.SwapSizeMB"
ResourceDisk.EnableSwap=n
ResourceDisk.SwapSizeMB=0

#Swap領域設定
[root@sv-cacti-01 ~]# vi /etc/waagent.conf

# Create and use swapfile on resource disk.
ResourceDisk.EnableSwap=y #nからyに変更してSwap有効化

# Size of the swapfile.
ResourceDisk.SwapSizeMB=512 #MB単位でSwapサイズ指定

#設定後の確認(OS再起動後に反映されます)
[root@sv-cacti-01 ~]# swapon

NAME TYPE SIZE USED PRIO
/mnt/swapfile file 512M 0B -2

SELinuxを無効化

動作確認やトラブルシューティングを行う際に、SELinuxを無効化したい場合があります。
SELinuxの無効化には、一時的な設定と恒久的な設定の2種類があります。

SELinuxの設定ファイルは/etc/selinux/configです。
SELINUX=の行が設定値を示しており、disabledを設定するとSELinuxが無効化されます。

※SELinuxの無効化を推奨するものではありません。SELinuxを無効化すると、セキュリティレベルが低下します。無効化する場合は十分に注意してください。

Rocky Linux 9の場合のSELinux無効化手順は、こちらで紹介しています。

#初期状態の設定(有効かつアクセスを拒否するEnforcingが設定されています)
[root@sv-cacti-01 ~]#
getenforce
Enforcing

#一時的な無効化
[root@sv-cacti-01 ~]# setenforce 0

#コマンド実行後の設定(有効だがアクセスは許可されるPermissiveが設定されています)
[root@sv-cacti-01 ~]# getenforce
Permissive

#永続的に無効化する場合
[root@sv-cacti-01 ~]# vi /etc/selinux/config
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
SELINUX=disabled #enforcingからdisabledに変更する

#設定変更後
[root@sv-cacti-01 ~]# getenforce
Disabled

最後に

Rocky Linux 8の仮想マシンを例に、リソースの作成から利用開始までの基本的なOS初期設定について確認しました。
特にパブリッククラウドの場合、外部からの攻撃を受けやすいため、セキュリティに関する設定には注意が必要です。
ネットワークセキュリティグループでは、必要最低限のアクセスのみを許可し、アカウントロックの設定などの対策を行うことが重要です。
OSの設定についてもセキュリティを考慮した対策が必要です。

引き続き、いろいろ試してみたいと思います。

仮想マシン作成時のカスタムデータ(cloud-init)利用方法については、こちらで紹介しています。
OSの初期設定を仮想マシン作成時に実施する手順を確認しています。

仮想マシン作成時に推奨されるアラートルールやバックアップ設定を作成時に有効化した場合の動作については、こちらで紹介しています。

PowerShellを利用した仮想マシン(Rocky Linux)の作成手順については、こちらで紹介しています。

スポンサーリンク