Red Hat Enterprise Linux 8 新機能をわかりやすく解説【RHEL8】
Red Hat Enterprise Linux 8 (RHEL8)が、2019年5月7日にリリースされました。RHEL 7 のリリースが2014年6月だったので、約5年ぶりの新OSとなります。
前回のメジャーアップデートから少し間隔が空いたためか、リリースノートはなんと120ページもあります!(ちなみにRHEL 7は90ページでした)
この記事では、そんな山ほどあるRHEL 8 の新機能や変更点の中から、気になるものをまとめてみました。
また、RHELのクローンである CentOS のメジャーアップデートも近いうちに行われるでしょう。CentOS8でも、これと同様の変更がなされるかと思われるので、参考にしてみてください。
目次 [非表示]
パッケージ管理
DNF(YUM v4) の登場
RHEL 7 に搭載されていたパッケージ管理システムの YUM v3 が YUM v4 にアップグレードされました。
DNFとは、Python 2で書かれていたYUMの後継に位置づけられるパッケージ管理システムで、Python 3を利用しています。
これにより、パフォーマンスの向上と、Application Streams という新しいパッケージ管理法(後述)に対応しました。
これまでのYUMとの互換性は?
パッケージのインストールは、これまでと同様のコマンドで行うことができます。
ただし、YUMのプラグインに関しては互換性がないので、RHEL8用に移植されたもの以外は使用できない可能性があります。
ちなみに、RHELのyumコマンドは、dnf-3コマンドへのシンボリックリンクになっています。また、dnfコマンドもdnf-3へのシンボリックリンクになっており、どれを使っても結果同じコマンドを参照することになります。
DNFの使い方
前述したように、ほとんどの場合、DNFはYUMと同じコマンド操作を使うことができます。
ただし、一部動作が変更になったり、削除された機能があります。DNFのYUMとの相違点をまとめたページ(英語)を挙げておくので、参考にしてください。
Changes in DNF CLI compared to YUM
新しいパッケージ管理法「Application Streams」
YUMのアップデートと共に、パッケージ管理に追加された機能が、Application Streams です。
従来、RHELやCentOSのデフォルトリポジトリのパッケージは、OSリリース時からあまり頻繁にメジャーバージョンアップはされず、バグ修正等のバックポートが主でした。
例えば、RHEL7で現在提供されているOpenSSLは、2年以上前にリリースされたバージョン1.0.2kがベースとなっています。
OpenSSLに限らず、最新のバージョンの新機能を利用するには、ソースコードからのビルドが必要となることが珍しくありませんでした。また、リポジトリでは常に単一のバージョンのみが提供されていました。
Application Streams は、アプリケーションのバージョンをOSのバージョンと独立して柔軟に管理するパッケージ管理の概念です。Application Streams では、いくつかのバージョンから選択してパッケージをインストールすることができます。新しめのパッケージを導入することも、古いパッケージを導入することも可能です。ただし、一度にシステムに導入できるバージョンはどれか一つとなっています。
Application Streams によってインストールされる、特定のアプリケーション / ワークロードを構成するパッケージをまとめたものを、モジュールと呼びます。
Application Streams では、このモジュール単位でパッケージを管理します。(ちなみにFedora では、これと同等の機能をModularityと呼んでいます。)
Application Streams の利用法
AppStream というリポジトリを経由して利用することができます。
(1) まず、現在有効なリポジトリを確認します。subscription-manager コマンドを使用します。
(2) 有効になっていない場合は、以下のコマンドで有効化します。
(3) モジュール一覧を取得します。
Stream は、パッケージのバージョンを指します。リストを見ると、現状複数のバージョンが利用できるモジュールは少なめのようです。
Profilesは、モジュールを構成するRPMパッケージのバリエーションのことです。いくつかのモジュールで、サーバ用、クライアント用、開発用など複数のプロファイルが用意されており、用途に適したパッケージのセットがインストールされます。
各プロファイルにどんなパッケージが含まれているのかという情報は、リポジトリのデータをキャッシュしているディレクトリに格納されています。ファイルパスは、/var/cache/dnf/rhel-8-for-x86_64-appstream-rpms-*****/repodata/*****-modules.yaml.gz(*****は数字)です。
(4) モジュールをインストール・アンインストールする
dnf module install <モジュール名>:<Stream>/<プロファイル> でインストールできます。
各パッケージのバージョンアップ
プリインストールされているパッケージや、RHEL公式のリポジトリ(BaseOSとAppStream)からインストールできる各種パッケージのバージョンも新しいものになっています。代表的なパッケージとそのバージョンを以下に挙げておきます。(2019年5月15日現在の情報です)
システム関連
- kernel 4.18
- rsyslog 8.37
- openssh 7.8p1
- openssl 1.1
- gnome-shell 3.28
プログラミング言語
- python 3.6
- python 2.7(短期サポートのみ)
- php 7.2
- ruby 2.5
- perl 5.26
- node.js 10.14
データベースサーバー
- MariaDB 10.3
- MySQL 8.0
- PostgreSQL 10
- PostgreSQL 9.6
- Redis 5.0
ネットワーク
- iptable 1.8
- firewalld 0.6
- nftables 0.9
- bind 9.11
- chrony 3.3
コンパイラー
- gcc 8.2
- glibc 2.28
- make 4.21
パッケージ管理
- dnf 4.0
- yum 4.0
- rpm 4.14
バージョン管理
- git 2.18
- subversion 1.10
Webサーバー
- httpd 2.4
- nginx 1.14
仮想化
- qemu-kvm 2.12
nftables
nftables は、iptables を置き換える目的で新たに実装されたパケットフィルターです。
とはいえ、デフォルトでは nftablesは RHEL 7 での iptables と同様に、firewalld のバックエンドとして動作するので、既に firewalld に移行している場合はあまり気にならないかもしれません。
nftables を利用するメリット
- フィルターの処理が、線形処理からテーブル探索に(処理速度の高速化)
- IPv4とIPv6をひとつのコマンドで管理可能に(ip6tables のような、IPv6専用コマンドは使いません)
- ネットワーク層以外のプロトコルも管理可能に(entablesとarptablesは、nftablesに統合されました)
- 一貫性があり、簡潔な文法(iptables の –dport のようなプロトコル独自の拡張はありません)
使用方法
nftables の追加により、RHEL8のファイアウォールの使用法は3種類になりました。
(1)firewalld + nftables(デフォルト)
従来通り、フロントエンドは firewalld で、バックエンドが nftables です。
既に firewalld に移行しているのであれば、引き続き同じ使い方ができます。
バックエンドが nftables に変更されていますが、firewalld の使用法に特に変更点はありません。
(2)nftables のみ
firewalld を使わずに、nftables デーモンのみを使ってファイアウォールを操作することも可能です。
nftables を操作するコマンドは、nft です。nft コマンドの詳細な使用法は以下のサイトが参考になります。
https://wiki.archlinux.jp/index.php/Nftables
firewalld から移行することも可能です。コマンドを以下に示します。
また、iptables のコマンドや設定ファイルを、nftables のコマンドや設定ファイルに変換するコマンドも存在するので、iptables の使い方しか知らなくても nftables を利用することができます。詳細は後述します。
(3)iptables のみ
RHEL7の時と同様に、dnf(yum)から iptables-services をインストールすれば、iptables コマンドと iptables ファイルを使ってファイアウォールを操作することができます。
iptables から nftables への変換ツール
iptables-restore-translate や、ip6tables-restore-translate を使えば、iptables の設定ファイルを、nftables 用の設定ファイルに変換することができます。これにより、RHEL7以前の環境の設定ファイル引き継いでnftablesへ移行することが可能です。
また、iptables-translate を使うと、iptables形式の設定をnftables形式の設定コマンドに変換することができます。
crypto-policies
サーバーを運用していると、様々なアプリケーションやライブラリで暗号化処理をすることがあります。暗号化関連の設定(特に暗号スイートの設定)は、ただでさえ複雑なことに加え、様々なアプリケーションで同じような設定をする必要があり、暗号化を煩雑なものにしています。
crypto-policiesは、様々なアプリケーションの暗号スイートの設定を、OS側で一元管理することを可能にします。これにより、設定作業の簡略化や、システム全体での一貫したセキュリティーポリシーの確保がしやすくなります。
対応アプリケーション / ライブラリ
RHEL8リリース時点で、以下のアプリケーションやライブラリの暗号化スイートを制御することができます。
- GnuTLS library
- OpenSSL library
- NSS library
- OpenJDK
- Libkrb5
- BIND
- OpenSSH
- Libreswan
設定方法
あらかじめ用意されている4つのポリシーの中から1つを選択して適用します。各ポリシーごとに、許可する暗号スイートの強度に差があります。
各ポリシーの詳細は表のようになっています。
ポリシー名 | 詳細 |
---|---|
LEGACY | 古いシステムとの互換性を維持する。安全性は低い。 プロトコルは、TLS1.0、IKEv1、SSH2と、それ以降のバージョンをサポートする。暗号スイートとしてDSA、3DES、RC4をサポート。RSAとDHパラメーターは1024ビット以上。 |
DEFAULT(既定) | 現代の標準的なポリシーとして適している。 プロトコルは、TLS1.2とTLS1.3、IKEv2、SSH2をサポートする。RSAとDHパラメーターは2048ビット以上。 |
FUTURE | 近い将来の攻撃に耐え得るとされるポリシー。 DEFAULTまでの制限に加え、署名アルゴリズムがSHA-1のものを除外。RSAとDHパラメーターは3072ビット以上。 |
FIPS | FIPS140-2の要件に準拠したポリシー。 OSをFIPSモードで利用する際に内部的に使用される。 |
ポリシーを変更するには、update-crypto-policies コマンドを使用します。
コマンド例中でも表示されているように、新しいポリシーを適用するにはシステムの再起動(推奨)か、対象アプリケーションの再起動が必要になります。
削除された機能
- デフォルトユーザー “nfsnobody”
- 数字のみで構成されたユーザー名の作成
- ntpデーモン
- Btrfs ファイルシステム
- dmraid
- Apache Tomcat
…などなど
参考
Red Hat Enterprise Linux 8.0 リリースノート(日本語)
Considerations in adopting RHEL 8 (English)
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/
Red Hat Enterprise Linux 8 の暗号化ポリシーによる一貫したセキュリティ(英語)
https://www.redhat.com/en/blog/consistent-security-crypto-policies-red-hat-enterprise-linux-8