こんにちは、意識高い系エンジニア社長の内です。
2023年3月15日にAmazon Linux 2の後継バージョンとなるAmazon Linux 2023(略してAL2023)が一般公開されました。2021年11月にAmazon Linux 2022(略してAL2022)のプレビュー版が公開されてから、約1年4ヶ月後のリリースとなりました。2022年中にリリースできなかったため、名前もAmazon Linux 2022からAmazon Linux 2023に変更されてのリリースです。
私の投稿も約1年2ヶ月ぶりとなります、前回記事「AmazonLinux3じゃなくってAmazon Linux 2022 (AL2022) だってさ」という、Amazon Linux 2022プレビュー版記事はこちら
当初AmazonLinux2のサポート終了日 (EOL、End of Life) は2023年6月30日でしたが、後継バージョンのリリースが遅れて、移行に十分な時間を提供するために、2025年6月30日と2年間延長されてます。
目次
- 1 AmazonLinux2023よくありそうな質問
- 1.1 Amazon Linux 2からAmazon Linux 2023へのインプレースアップグレード
- 1.2 Amazon Linux 2023へのログインユーザ名は
- 1.3 teratermでAmazon Linux 2023にログインできないケース対応
- 1.4 /var/log配下にログがない
- 1.5 journaldのログを収集してcloudwatch logs他にどうやって送るか
- 1.6 他のRedHat系ディストリビューションとのEOL比較。
- 1.7 SELinuxは「permissive」がデフォルト
- 1.8 SSM AgentとCloudWatch エージェント,AWSCLIがデフォルトでインストールされてる
- 1.9 いつものエンジニア募集の告知
Amazon Linux 2023はFedora34,35,36のコンポーネントがベース
Amazon Linux 2023は、Fedora 34、35、および36のコンポーネントを含んでいて、Fedoraのコンポーネントそのまま使っているものもあれば、修正されているものもあります。その他、CentOS Stream 9のコンポーネントもあれば、独自に開発されたものもあるとのことです。また、カーネルは、Fedoraが提供するカーネルとは別に、kernel.orgにある長期サポートオプションから選択されたものを使用しているとのことです。
FedoraはCentOS Streamのさらにアップストリームなので、最新機能が搭載されている代わりに、安定性は保証されてないものです、そういったものであるFedoraの複数バージョンのコンポーネント+アルファをAWSがメンテして一般公開版を出したということになりますので、独自ディストリビューションの公開と維持に、よっぽどの稼働とコストがかかっていると想定されます、メンテナンスが非常に大変そうですね、これはリリースが1年以上遅れたことからもわかると思います。
AmazonLinux2023よくありそうな質問
AL2023をいろいろ触ってみて、これからよく質問がありそうなことをまとめてみました。
Amazon Linux 2からAmazon Linux 2023へのインプレースアップグレード
残念ながら出来ないようです、また、EPELが使用出来なくなったり、使用可能なパッケージのバージョンが大きく変更になってるので、Amazon Linux 2のEOL対応として移行を検討する際には、他のRedHat系ディストリビューションも候補に入ってくるかと思います。
Amazon Linux 2がリリースされた際はAmazonLinux上で実行することで、Amazon Linux2との非互換性の概要が記載されたレポートが作成されるpreupgrade-assistantが提供されたので、今後Amazon Linux 2023用のプレアップグレードアシスタントも提供されるのを期待しましょう。
Amazon Linux 2023へのログインユーザ名は
これまで同様ec2-userです。
teratermでAmazon Linux 2023にログインできないケース対応
Amazon Linux 2023では、opensshサーバーの設定において、デフォルトでRSA/SHA1(ssh-rsaシグネチャ)が無効化されてますので古いsshクライアント(主にteraterm4系)を使用している場合にはsshログインしようとしてもエラーではじかれます。
こちらは一部AWS公式サイトデフォルトの SSH サーバー設定
にも原因と対応方法の記載があります。
現象に遭遇するとサーバー側では以下のようなjournalログが出力される状態になります。”
1 |
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth] |
これによく該当すると思われるケースとしては、rsaのキーペアを使用していて、且つteraterm4.xを使用しているケースです。
マネジメントコンソール上で見れるキーペア
teraterm4.xのバージョン
rsaのキーペアを使用している場合でも、新しいsshクライアント(rsa-sha2-256かrsa-sha2-512をサポートしているもの)を使っていればエラー回避しログインできますし、teratermでも5.0ベータ版を使用するとエラー回避できます。teraterm5.0アルファだと駄目でログインできません。
また、teratermの4.x系を使用していても、ED25519キーペアを使用していれば接続可能です。
rsaのキーペアを使用し続けて、且つteraterm4.xのようなrsa-sha2-256、rsa-sha2-512をサポートしていないsshクライアントを使用し続ける場合の回避策は、公式では以下と書いてあります。
公開鍵認証に RSA key pair を使用する場合、SSHrsa-sha2-256rsa-sha2-512 クライアントはまたは署名をサポートしている必要があります。互換性のないクライアントを使用していてアップグレードできない場合は、ssh-rsaインスタンスのサポートを再度有効にしてください。そのためには、LEGACY次のコマンドを使用してシステム暗号化ポリシーを有効にします。
$ sudo dnf install crypto-policies-scripts
$ sudo update-crypto-policies –set LEGACY
ですが、update-crypto-policiesでLEGACYを指定するということは、opensshサーバーだけでなく、システム共通の暗号化ポリシーを変える、且つssh-rsaに対応する以外にもセキュリティ的に緩くなる影響がありますので、私は推奨しません。
また、Amazon Linux 2022までは、opensshサーバーの設定ファイル/etc/ssh/sshd_configに、
1 |
PubkeyAcceptedAlgorithms=+ssh-rsa |
を追加すれば、opensshサーバーの暗号化アルゴリズム設定のみ変更出来ましたが、Amazon Linux 2023では、この方法は使えません。
update-crypto-policies経由で、 opensshサーバーのみにssh-rsaのみを追加する以下方法のほうがまだセキュリティ的に安全ですので、個人的にはAWS公式サイトのやり方よりお勧めです。
1./usr/share/crypto-policies/policies/modulesの下に、SHA1SSHD.pmodというファイルを新規作成し、以下内容で保存する。
1 |
$ sign@openssh-server = RSA-SHA1+ |
2.以下コマンドを実行
1 |
$ update-crypto-policies --set DEFAULT::SHA1SSHD |
ちなみに現在適用されているポリシーは/etc/crypto-policies/state/CURRENT.polを表示することで確認できます。
上記対応で、sign@openssh-serverの項目だけに、RSA-SHA1だけが追加された形になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
$ cat /etc/crypto-policies/state/CURRENT.pol # Policy DEFAULT:SHA1SSHD dump # # Do not parse the contents of this file with automated tools, # it is provided for review convenience only. # # Baseline values for all scopes: cipher = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 CAMELLIA-256-GCM AES-256-CTR AES-256-CBC CAMELLIA-256-CBC AES-128-GCM AES-128-CCM CAMELLIA-128-GCM AES-128-CTR AES-128-CBC CAMELLIA-128-CBC group = X25519 X448 SECP256R1 SECP384R1 SECP521R1 FFDHE-2048 FFDHE-3072 FFDHE-4096 FFDHE-6144 FFDHE-8192 hash = SHA2-256 SHA2-384 SHA2-512 SHA3-256 SHA3-384 SHA3-512 SHA2-224 SHA3-224 SHAKE-256 key_exchange = ECDHE RSA DHE DHE-RSA PSK DHE-PSK ECDHE-PSK RSA-PSK ECDHE-GSS DHE-GSS mac = AEAD HMAC-SHA2-256 HMAC-SHA1 UMAC-128 HMAC-SHA2-384 HMAC-SHA2-512 protocol = sign = ECDSA-SHA3-256 ECDSA-SHA2-256 ECDSA-SHA2-256-FIDO ECDSA-SHA3-384 ECDSA-SHA2-384 ECDSA-SHA3-512 ECDSA-SHA2-512 EDDSA-ED25519 EDDSA-ED25519-FIDO EDDSA-ED448 RSA-PSS-SHA3-256 RSA-PSS-SHA2-256 RSA-PSS-SHA3-384 RSA-PSS-SHA2-384 RSA-PSS-SHA3-512 RSA-PSS-SHA2-512 RSA-PSS-RSAE-SHA3-256 RSA-PSS-RSAE-SHA2-256 RSA-PSS-RSAE-SHA3-384 RSA-PSS-RSAE-SHA2-384 RSA-PSS-RSAE-SHA3-512 RSA-PSS-RSAE-SHA2-512 RSA-SHA3-256 RSA-SHA2-256 RSA-SHA3-384 RSA-SHA2-384 RSA-SHA3-512 RSA-SHA2-512 ECDSA-SHA2-224 RSA-PSS-SHA2-224 RSA-SHA2-224 ECDSA-SHA3-224 RSA-PSS-SHA3-224 RSA-SHA3-224 arbitrary_dh_groups = 1 min_dh_size = 2048 min_dsa_size = 2048 min_rsa_size = 2048 __openssl_block_sha1_signatures = 0 sha1_in_certs = 0 ssh_certs = 1 ssh_etm = 1 # Scope-specific properties derived for select backends: hash@bind = SHA2-256 SHA2-384 SHA2-512 SHA3-256 SHA3-384 SHA3-512 SHA2-224 SHA3-224 SHAKE-256 SHA1 sign@bind = ECDSA-SHA3-256 ECDSA-SHA2-256 ECDSA-SHA2-256-FIDO ECDSA-SHA3-384 ECDSA-SHA2-384 ECDSA-SHA3-512 ECDSA-SHA2-512 EDDSA-ED25519 EDDSA-ED25519-FIDO EDDSA-ED448 RSA-PSS-SHA3-256 RSA-PSS-SHA2-256 RSA-PSS-SHA3-384 RSA-PSS-SHA2-384 RSA-PSS-SHA3-512 RSA-PSS-SHA2-512 RSA-PSS-RSAE-SHA3-256 RSA-PSS-RSAE-SHA2-256 RSA-PSS-RSAE-SHA3-384 RSA-PSS-RSAE-SHA2-384 RSA-PSS-RSAE-SHA3-512 RSA-PSS-RSAE-SHA2-512 RSA-SHA3-256 RSA-SHA2-256 RSA-SHA3-384 RSA-SHA2-384 RSA-SHA3-512 RSA-SHA2-512 ECDSA-SHA2-224 RSA-PSS-SHA2-224 RSA-SHA2-224 ECDSA-SHA3-224 RSA-PSS-SHA3-224 RSA-SHA3-224 RSA-SHA1 ECDSA-SHA1 cipher@gnutls = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 AES-256-CBC AES-128-GCM AES-128-CCM AES-128-CBC protocol@gnutls = TLS1.3 TLS1.2 DTLS1.2 cipher@java-tls = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 AES-256-CBC AES-128-GCM AES-128-CCM AES-128-CBC protocol@java-tls = TLS1.3 TLS1.2 DTLS1.2 protocol@libreswan = IKEv2 cipher@libssh = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 CAMELLIA-256-GCM AES-256-CTR AES-128-GCM AES-128-CCM CAMELLIA-128-GCM AES-128-CTR cipher@nss = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 AES-256-CBC AES-128-GCM AES-128-CCM AES-128-CBC protocol@nss = TLS1.3 TLS1.2 DTLS1.2 cipher@openssh-client = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 CAMELLIA-256-GCM AES-256-CTR AES-128-GCM AES-128-CCM CAMELLIA-128-GCM AES-128-CTR cipher@openssh-server = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 CAMELLIA-256-GCM AES-256-CTR AES-128-GCM AES-128-CCM CAMELLIA-128-GCM AES-128-CTR sign@openssh-server = ECDSA-SHA3-256 ECDSA-SHA2-256 ECDSA-SHA2-256-FIDO ECDSA-SHA3-384 ECDSA-SHA2-384 ECDSA-SHA3-512 ECDSA-SHA2-512 EDDSA-ED25519 EDDSA-ED25519-FIDO EDDSA-ED448 RSA-PSS-SHA3-256 RSA-PSS-SHA2-256 RSA-PSS-SHA3-384 RSA-PSS-SHA2-384 RSA-PSS-SHA3-512 RSA-PSS-SHA2-512 RSA-PSS-RSAE-SHA3-256 RSA-PSS-RSAE-SHA2-256 RSA-PSS-RSAE-SHA3-384 RSA-PSS-RSAE-SHA2-384 RSA-PSS-RSAE-SHA3-512 RSA-PSS-RSAE-SHA2-512 RSA-SHA3-256 RSA-SHA2-256 RSA-SHA3-384 RSA-SHA2-384 RSA-SHA3-512 RSA-SHA2-512 ECDSA-SHA2-224 RSA-PSS-SHA2-224 RSA-SHA2-224 ECDSA-SHA3-224 RSA-PSS-SHA3-224 RSA-SHA3-224 RSA-SHA1 cipher@openssl = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 AES-256-CBC AES-128-GCM AES-128-CCM AES-128-CBC protocol@openssl = TLS1.3 TLS1.2 DTLS1.2 |
/var/log配下にログがない
/var/logの下にmessage,secure,sshd等ログがないです。
1 2 3 |
$ ls README audit chrony cloud-init.log dnf.log hawkey.log lastlog sa tallylog amazon btmp cloud-init-output.log dnf.librepo.log dnf.rpm.log journal private sssd wtmp |
これはAmazon Linux 2023には従来のsyslogはインストールされておらず、systemdベースの環境になっているからで、ログはjournalctlコマンドで確認します。
基本的なコマンド操作方法だけご紹介。
・boots一覧を表示する
OSを起動する度に別のBOOTIDが作成されます。
1 2 3 4 5 6 7 |
$ journalctl --list-boots IDX BOOT ID FIRST ENTRY LAST ENTRY -4 d71ecd1b94174ec394541f4b080b52cc Mon 2023-03-20 08:35:51 UTC Mon 2023-03-20 09:01:01 UTC -3 c9a8bfe72ea845f597e250a4a59c3e40 Mon 2023-03-20 23:34:31 UTC Tue 2023-03-21 01:34:56 UTC -2 0316ffabf16a4dcd90c541a2c35db929 Tue 2023-03-21 01:37:12 UTC Tue 2023-03-21 01:47:03 UTC -1 f10c00244ecb498cb172a475eccfad47 Tue 2023-03-21 01:49:38 UTC Tue 2023-03-21 02:24:27 UTC 0 f04c2414252e46ae96691b8d0e4723a4 Tue 2023-03-21 02:26:48 UTC Tue 2023-03-21 07:12:10 UTC |
・BootIDを指定して参照する
見たいログの時間帯を指定したい場合は、FIRST ENTRYとLAST ENTRYを見て、IDXを指定してjournalctlコマンドを実行します。
例えばIDXが-4を見たい場合は以下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ journalctl -b -4 Mar 20 08:35:51 localhost kernel: Linux version 6.1.15-28.43.amzn2023.x86_64 (mockbuild@ip-10-0-52-220) (gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4)> Mar 20 08:35:51 localhost kernel: Command line: BOOT_IMAGE=(hd0,gpt1)/boot/vmlinuz-6.1.15-28.43.amzn2023.x86_64 root=UUID=7efef47b-a4f8-4b90-9504-819> Mar 20 08:35:51 localhost kernel: KASLR disabled Mar 20 08:35:51 localhost kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' Mar 20 08:35:51 localhost kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' Mar 20 08:35:51 localhost kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' Mar 20 08:35:51 localhost kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 Mar 20 08:35:51 localhost kernel: x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format. Mar 20 08:35:51 localhost kernel: signal: max sigframe size: 1776 Mar 20 08:35:51 localhost kernel: BIOS-provided physical RAM map: Mar 20 08:35:51 localhost kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009dfff] usable Mar 20 08:35:51 localhost kernel: BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved Mar 20 08:35:51 localhost kernel: BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved Mar 20 08:35:51 localhost kernel: BIOS-e820: [mem 0x0000000000100000-0x000000003fffffff] usable Mar 20 08:35:51 localhost kernel: BIOS-e820: [mem 0x00000000fc000000-0x00000000ffffffff] reserved Mar 20 08:35:51 localhost kernel: NX (Execute Disable) protection: active Mar 20 08:35:51 localhost kernel: SMBIOS 2.7 present. Mar 20 08:35:51 localhost kernel: DMI: Xen HVM domU, BIOS 4.11.amazon 08/24/2006 Mar 20 08:35:51 localhost kernel: Hypervisor detected: Xen HVM |
・デーモンを指定(フィルター)して表示
例えばsshdのログだけ見たい場合は-uで指定します、以下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ journalctl -u sshd Mar 20 08:36:02 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2038]: Server listening on 0.0.0.0 port 22. Mar 20 08:36:02 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2038]: Server listening on :: port 22. Mar 20 08:36:02 ip-172-31-15-44.ap-northeast-1.compute.internal systemd[1]: Starting sshd.service - OpenSSH server daemon... Mar 20 08:36:02 ip-172-31-15-44.ap-northeast-1.compute.internal systemd[1]: Started sshd.service - OpenSSH server daemon. Mar 20 08:36:03 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2038]: Received signal 15; terminating. Mar 20 08:36:03 ip-172-31-15-44.ap-northeast-1.compute.internal systemd[1]: Stopping sshd.service - OpenSSH server daemon... Mar 20 08:36:03 ip-172-31-15-44.ap-northeast-1.compute.internal systemd[1]: sshd.service: Deactivated successfully. Mar 20 08:36:03 ip-172-31-15-44.ap-northeast-1.compute.internal systemd[1]: Stopped sshd.service - OpenSSH server daemon. Mar 20 08:36:03 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2051]: Server listening on 0.0.0.0 port 22. Mar 20 08:36:03 ip-172-31-15-44.ap-northeast-1.compute.internal systemd[1]: Starting sshd.service - OpenSSH server daemon... Mar 20 08:36:03 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2051]: Server listening on :: port 22. Mar 20 08:36:03 ip-172-31-15-44.ap-northeast-1.compute.internal systemd[1]: Started sshd.service - OpenSSH server daemon. Mar 20 08:41:57 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2286]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preaut> Mar 20 08:41:58 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2286]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preaut> Mar 20 08:41:59 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2286]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preaut> Mar 20 08:42:00 ip-172-31-15-44.ap-northeast-1.compute.internal sshd[2286]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preaut> |
journaldのログを収集してcloudwatch logs他にどうやって送るか
Fluent Bitでやるのが良さそうです、試せてませんが以下Amazon Linux 2022で行っている記事がありました。
Jornald を Fluent-bit で CW Logs へ in Amazon Linux 2022
他のRedHat系ディストリビューションとのEOL比較。
ディストリビューション | リリース | EOL |
AmazonLinux1 | 2010年09月14日 | 2023年12月31日 |
AmazonLinux2 | 2018年06月 | 2025年06月30日 |
AmazonLinux2023 | 2023年03月15日 | 2028年03月15日 |
AmazonLinux2025 | 2025年03月 | 2030年(月日未定) |
RedHatEnterpriseLinux8 | 2019年05月07日 | 2029年05月31日 2031年05月31日(ELS) |
RedHatEnterpriseLinux9 | 2022年05月18日 | 2032年05月31日 2034年05月31日(ELS) |
RockyLinux8 | 2021年06月21日 | 2029年05月31日 |
RockyLinux9 | 2022年07月14日 | 2032年05月31日 |
AlmaLinux8 | 2021年03月30日 | 2029年5月1日 |
AlmaLinux9 | 2022年05月126日 | 2032年5月31日 |
Amazon Linux 2からAmazon Linux 2023へのインプレースアップグレードがないので、移行先OSはフラットに、コスト、EOLまでの期間等、何を重視するかで判断すればよいのでは、と思いました。
・以下、検討する際のポイントとなる点列挙しました。
- 最新の機能が使えるけどEOLが短めなのはAmazon Linux 2023だけど、Amazon Linux 2のEOLは2025年6月まで延びてるので、そのころにはAmazon Linux 2025が出てると思うので、今すぐ2023への移行の必要はないかも。
- EOL重視で考えるとRed Hat Enterprise Linux,Rocky Linux,AlmaLinuxの9系で、さらにRed Hat Enterprise Linux 9は別途有償にはなりますが、他OSよりさらに2年サポートを延長することができます。
- パッチマネージャー対応に関して、Red Hat Enterprise Linux,Rocky Linuxは8系に対応しているけど9系は未対応、AlmaLinuxはそもそもパッチマネージャー対応OSに含まれてない、Amazon Linux 2023は勿論対応しているという状況です。
- Rocky Linuxの場合は新しいマイナーバージョンがリリースされたら、それ以前のマイナーバージョンがリリースされない。セキュリティとバグフィックスを適用する際には、マイナーバージョンをアップデートする前提での運用が必要になる。
SELinuxは「permissive」がデフォルト
AL2022ではデフォルトでselinuxがenforcingになってましたがAL2023ではpermissiveになりました。
また、AL2022では/etc/default/grubを編集しないと設定変更できませんでしたが、AL2023では従来の/etc/selinux/configを編集する方法で設定変更可能です。
SSM AgentとCloudWatch エージェント,AWSCLIがデフォルトでインストールされてる
AL2022ではデフォルトでインストールされてませんでしたが、AL2023ではSSM AgentとCloudWatch エージェント,AWSCLIがインストールされてる状態がデフォルトになってました。
いつものエンジニア募集の告知
ギークフィードではハイレベルなクラウドエンジニア(を目指している人含む)を随時募集しております。
量より質を重視する企業理念の関係上、採用合格率は決して高くはございませんが、我こそはと思う方はhttps://www.geekfeed.co.jp/recruitment
よりご気軽にご応募お待ちしております。
こんなギークな記事を読んでいる方はきっとギークなので、「内さんの記事を見て応募しました。」で、書類選考通過キャンペーン実施中です。
- 2023年ギークフィードが評価されて表彰されたことの振り返りとアピール - 2023-12-24
- Linuxコンソールで、本番、ステージング、テスト環境を混同しないための4つの工夫 - 2023-09-13
- Amazon Linux 2023を触ってみて質問がありそうなことをまとめてみました。 - 2023-03-22
- AmazonLinux3じゃなくってAmazon Linux 2022 (AL2022) だってさ。 - 2022-01-31
- 【祝:月間PV6万越え】2021年のギークブログ大賞を発表します。 - 2022-01-10