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

2019-05-19Azure,RockyLinux/CentOS,Virtual Machine

Rocky Linuxの仮想マシン(Azure VM)の作成から、日本語化、swap有効化などのOS初期設定手順について紹介しています。

    • 主な内容
      • 仮想マシンリソース作成
      • ネットワークセキュリティグループ(NSG)設定確認
      • パッケージアップデート
      • Rocky Linuxの日本語化
      • 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公開キーを選択しています。新規にキーの組を生成しています。
※セキュリティの種類はStandardしか選択できませんでした。
※VMアーキテクチャはx64のしか選択できませんでした。

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

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

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

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

【パブリック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キー確認

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

※秘密キー(秘密鍵)はダウンロードできません。

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

—広告—

仮想マシン作成後の初期設定

rootユーザー周りの設定

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

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

rootユーザーの設定についてはこちらに纏めています。

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

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

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

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

TimeZoneを日本時間に設定

TimeZoneを日本時間に設定します。
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の無効化は一時的な設定と恒久的な設定が出来ます。

SELinuxの設定ファイルは/etc/selinux/configになります。
SELINUX=の行が設定値になります。
disabledを設定すると完全に無効化されます。

※SELinuxの無効化を推奨するものではございません。SELinuxの無効化はセキュリティレベルを下げるものとなります。SElinuxを無効化する場合はご注意下さい。
※Rocky Linux9の場合の手順はこちらに纏めています。

#初期状態の設定(有効かつアクセスを拒否する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 Linux8の仮想マシン作成から利用開始までのOS初期設定などを纏めてみました。
パブリッククラウドの場合は外部からの攻撃を受けやすいので注意が必要かと思います。
ネットワークセキュリティグループは必要最低限の許可しかしない、アカウントロック設定等を行っておくなどの軽減策は必要かと思います。

今後も色々試してみたいと思います。

作成時に推奨されるアラートルールやバックアップ設定を作成時に有効化した場合についてはこちらに纏めています。

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

スポンサーリンク