2021年10月にサーバエンジニア職で入社しました、東京チームの三田と申します。
早速ですが、2021年11月に Amazon Linux 2022(以降、AL2022)のプレビュー版が公開されました。
弊社では自社サービス『learningBOX』のインフラ基盤としてAWS(Amazon Web Services)を使用している事もあり、無視できるニュースではありません。
Amazon Linux 2(以降、AL2)のサポート期限が 2023年6月30日 であるため、近い将来、AL2022を用いた構築作業や切り替えが発生する事は確実です。
12月から他業務の合間にAL2022に触れ、AL2との違いや設定を進める上で詰まった箇所などがいくつかありましたので、以下に記載していきたいと思います。
目次はこちら
デフォルトで有効化されているSELinux
AL2ではデフォルトで無効化(Disabled)されていましたが、AL2022では有効化(Enforcing)されています。
試しに以下の手順でSELinuxを無効化したところ、AWSマネジメントコンソール上では正常に起動しているように見えるものの、サーバに対してSSH接続が行えなくなってしまいました。
# vim /etc/selinux/config
SELINUX=disabled
# reboot
/etc/selinux/configを読むと無効化方法がしっかり記載されているので、それに従うとSELinuxが Disabled の状態でサーバが起動します。
# grubby –update-kernel ALL –args selinux=0
# reboot
SELinuxを強制しない(=拒否はしないがログを吐き出させる)場合、以下の方法でPermissiveモードにしてサーバ起動することができます。
# vim /etc/selinux/config
SELINUX=permissive
# grubby –update-kernel ALL –args enforcing=0
# reboot
不正侵入された際の被害を抑えるためにも SElinux は有効化が推奨されるかと思いますが、まずはAL2022環境で既存サービスが動作するか確認したいため、無効化した状態で検証を進めています。
ですが、AL2022を本格的に使用し始めるまでに、SELinuxの設定に慣れたいところです。
暗号化ポリシーの追加
こちらはRedHat様のドキュメントが参考になりました。
あるパッケージをwgetコマンドで取得しようとしたところ、以下のエラーにより失敗しました。
GnuTLS: One of the involved algorithms has insufficient security level.
SSL による接続が確立できません。
AL2022では「システム全体の暗号化ポリシー」が追加されており、デフォルトではこのポリシーレベルがDEFAULTになっています。
今回は、相手サーバとの TLS handshake を行った際に返される signature algorithm にSHA-1が混ざっていた事により、このポリシーレベルに引っかかって接続の確立ができなかったようです。
これまでも使っていたパッケージファイルを1つ取得したいだけなので、
今回はポリシーレベルを一時的に下げて対応しました。
# update-crypto-policies –show
DEFAULT
# update-crypto-policies –set LEGACY
# update-crypto-policies –show
LEGACY
ファイルを取得したら設定戻し
# update-crypto-policies –set DEFAULT
# update-crypto-policies –show
相手サーバがSHA-1を返さないようにしてくれるのがベストではありますが、今回のケースではこちらが妥協しました。
AL2ではそもそも update-crypto-policies コマンドも存在していなかったので、AL2022ではポリシーレベルも意識しつつ構築・運用をしたいと思います。
crontabコマンドが消えている
cronを設定するためにいつも通りcrontabを使おうとしたところ、コマンドが存在しません。
初の経験なので驚きましたが、普通にインストールすれば使えます。
インストール済みパッケージの比較
AL2
$ rpm -qa | grep cron
cronie-1.4.11-23.amzn2.x86_64
cronie-anacron-1.4.11-23.amzn2.x86_64
crontabs-1.11-6.20121102git.amzn2.noarch
AL2022
$ rpm -qa | grep cron
crontabs-1.11-24.20190603git.amzn2022.noarch
インストール
$ sudo yum install cronie-noanacron
$ rpm -qa | grep cron
crontabs-1.11-24.20190603git.amzn2022.noarch
cronie-noanacron-1.5.7-1.amzn2022.x86_64
cronie-1.5.7-1.amzn2022.x86_64
サービス起動
$ sudo systemctl start crond
自動起動確認
$ sudo systemctl is-enabled crond
enabled
まとめ
上記に挙げたもの以外にもAL2と異なっている点、設定を進める上で苦労している点はありますが、また機会があればお伝えしたいと思います。
AL2022はまだプレビュー版であるため、正式リリースまでに更に変更点が加わる可能性は十分あるかと思われます。
ですが、今回挙げた暗号化ポリシーの追加やSELinuxの有効化など、避けては通れないものについては特に重点的に学習・検証し、備えておきたいと思います。
お読みいただきありがとうございました。