Rocky LinuxのAzure VMデプロイから使用開始までにする初期設定纏め

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

Rocky Linuxの仮想マシン(Azure VM)のデプロイ、OSの日本語化、swap有効化など、使用開始時に利用する手順について紹介しています。

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

※Rocky Linux release 8.8 (Green Obsidian)を利用しています。2023年7月現在の情報です。
※Selinux無効化についてはセキュリティ的に推奨されるものではありません。
※初期設定はOSの設定を中心に纏めています。

スポンサーリンク

Rocky Linuxのデプロイ

Rocky Linux 8の仮想マシン(Azure VM)をデプロイします。
今回は”sv-cacti-01”という名前で”East US2”リージョンにデプロイしています。

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

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


※認証の種類はSSH公開キーを選択しています。新規にキーの組を生成しています。
※セキュリティの種類はStandardしか選択できません。x64のVMアーキテクチャしか選択できません。

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

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

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

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

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

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

※今回は検証目的に合わせて自動シャットダウンを無効化しています。

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

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

詳細設定画面です。
拡張機能のインストールなどの設定をデプロイと一緒に出来ます。
確認画面です。
作成を選択するとリソースをデプロイします。
新しいキーの組の生成を選択しいる場合は、秘密キーのダウンロード画面が表示されます。
秘密キーのダウンロードはこのタイミングでしかできません。
無くさないように保管します。

Rocky Linuxへのログイン

Tera Termを使って仮想マシン(Azure VM)へログインします。

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

初期状態ではSSHがインターネットへ全開放されてしまう

Rocky Linuxをデプロイする場合はネットワークインターフェースへアタッチするNSG(ネットワークセキュリティグループ)指定する必要があります。
自動的にリソースを生成した場合に作成されるNSG(ネットワークセキュリティグループ)を確認するとSSH(22番ポート)がインターネットへ公開されています。
非常に危険なのでNSG(ネットワークセキュリティグループ)を事前に作成したものをアタッチするもしくはすぐにIPアドレスの制限をするようにします。

NSG確認
受信セキュリティ規則にSSHのルールがある事が確認出来ます。
ソースも宛先も任意となっておりどこからでもアクセスできるようになっています。

仮想マシン(Azure VM)のNSGについたはこちらに纏めています。
併せて参照願います。

生成されたSSHキー

仮想マシン(Azure VM)デプロイ時にSSHキーを生成した場合はSSHキーのリソースが生成されます。
SSHキーのリソースに公開鍵が保管されます。
SSHキーに保管した公開鍵は別の仮想マシン(Azure VM)デプロイ時に利用する事も出来ます。

SSHキー確認

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

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

SSHキーに関してはこちらに纏めています。併せて見て頂けると有難いです。

——-

 

仮想マシン(Azure VM)デプロイ後の設定

rootユーザー周りの設定

MarketplaceからデプロイしたRocky Linuxですがrootユーザーのパスワードが公開されていません。
仮想マシン(Azure VM)作成時に設定した初期ユーザーには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が設定されていません。
仮想マシン(Azure VM)の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の仮想マシン(Azure VM)デプロイから利用開始までのOS初期設定などを纏めてみました。
パブリッククラウドの場合は外部からの攻撃を受けやすいので注意が必要かと思います。
NSG(ネットワークセキュリティグループ)は必要最低限の許可しかしない、アカウントロック設定等を行っておくなどの軽減策は必要かと思います。

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

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

https://www.tama-negi.com/2023/08/13/azure-vm-deploy-alert-rule-backup/

スポンサーリンク