Red Hat Enterprise Linux 8 新機能をわかりやすく解説【RHEL8】

Red Hat Enterprise Linux 8 新機能をわかりやすく解説【RHEL8】

https://hackers-high.com/linux/rhel8-new-features/

Red Hat Enterprise Linux 8 (RHEL8)が、2019年5月7日にリリースされました。RHEL 7 のリリースが2014年6月だったので、約5年ぶりの新OSとなります。

前回のメジャーアップデートから少し間隔が空いたためか、リリースノートはなんと120ページもあります!(ちなみにRHEL 7は90ページでした)

この記事では、そんな山ほどあるRHEL 8 の新機能や変更点の中から、気になるものをまとめてみました。

 

また、RHELのクローンである CentOS のメジャーアップデートも近いうちに行われるでしょう。CentOS8でも、これと同様の変更がなされるかと思われるので、参考にしてみてください。

目次 [非表示]

1 パッケージ管理
1.1 DNF(YUM v4) の登場
1.2 新しいパッケージ管理法「Application Streams」
1.3 各パッケージのバージョンアップ
2 nftables
2.1 nftables を利用するメリット
2.2 使用方法
2.3 iptables から nftables への変換ツール
3 crypto-policies
3.1 対応アプリケーション / ライブラリ
3.2 設定方法
4 削除された機能
5 参考

パッケージ管理
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へのシンボリックリンクになっており、どれを使っても結果同じコマンドを参照することになります。

$ ll /usr/bin | grep -P “(yum|dnf)”
lrwxrwxrwx. 1 root root 5 2月 14 21:02 dnf -> dnf-3
-rwxr-xr-x. 1 root root 1954 2月 14 21:02 dnf-3
lrwxrwxrwx. 1 root root 5 2月 14 21:02 yum -> dnf-3

Bash
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 コマンドを使用します。

$ subscription-manager repos –list-enabled
+———————————————————-+
/etc/yum.repos.d/redhat.repo で利用可能なリポジトリー
+———————————————————-+
リポジトリー ID: rhel-8-for-x86_64-baseos-rpms
リポジトリー名: Red Hat Enterprise Linux 8 for x86_64 – BaseOS (RPMs)
リポジトリー URL: https://cdn.redhat.com/content/dist/rhel8/$releasever/x86_64/baseos/os
有効: 1

Bash

 

(2) 有効になっていない場合は、以下のコマンドで有効化します。

#AppStream リポジトリの有効化
$ subscription-manager repos –enable=rhel-8-for-x86_64-appstream-rpms
リポジトリー ‘rhel-8-for-x86_64-appstream-rpms’ は、このシステムに対して有効になりました。

#有効なリポジトリの確認
$ subscription-manager repos –list-enabled
+———————————————————-+
/etc/yum.repos.d/redhat.repo で利用可能なリポジトリー
+———————————————————-+
リポジトリー ID: rhel-8-for-x86_64-baseos-rpms
リポジトリー名: Red Hat Enterprise Linux 8 for x86_64 – BaseOS (RPMs)
リポジトリー URL: https://cdn.redhat.com/content/dist/rhel8/$releasever/x86_64/baseos/os
有効: 1

リポジトリー ID: rhel-8-for-x86_64-appstream-rpms
リポジトリー名: Red Hat Enterprise Linux 8 for x86_64 – AppStream (RPMs)
リポジトリー URL: https://cdn.redhat.com/content/dist/rhel8/$releasever/x86_64/appstream/os
有効: 1

Bash

 

(3) モジュール一覧を取得します。

$ dnf module list
Updating Subscription Management repositories.
Red Hat Enterprise Linux 8 for x86_64 – AppStream (RPMs)
Name Stream Profiles Summary
389-ds 1.4 389 Directory Server (base)
ant 1.10 [d] common [d] Java build tool
container-tools 1.0 common [d] Common tools and dependencies for container runtimes
container-tools rhel8 [d] common [d] Common tools and dependencies for container runtimes
freeradius 3.0 [d] server [d] High-performance and highly configurable free RADIUS server
gimp 2.8 [d] common [d], devel gimp module
go-toolset rhel8 [d] common [d] Go
httpd 2.4 [d] common [d], devel, minimal Apache HTTP Server
idm DL1 common [d], adtrust, client, dns, server The Red Hat Enterprise Linux Identity Management system module
idm client [d] common [d] RHEL IdM long term support client module
inkscape 0.92.3 [d] common [d] Vector-based drawing program using SVG
javapackages-runtime 201801 [d] common [d] Basic runtime utilities to support Java applications
libselinux-python 2.8 common Python 2 bindings for libselinux
llvm-toolset rhel8 [d] common [d] LLVM
mailman 2.1 [d] common [d] Electronic mail discussion and e-newsletter lists managing software
mariadb 10.3 [d] client, server [d], galera MariaDB Module
maven 3.5 [d] common [d] Java project management and project comprehension tool
mercurial 4.8 [d] common [d] Mercurial — a distributed SCM
mod_auth_openidc 2.3 Apache module suporting OpenID Connect authentication
mysql 8.0 [d] client, server [d] MySQL Module
nginx 1.14 [d] common [d] nginx webserver
nodejs 10 [d] common [d], development, minimal, s2i Javascript runtime
parfait 0.5 common Parfait Module
perl 5.24 common [d], minimal Practical Extraction and Report Language
perl 5.26 [d] common [d], minimal Practical Extraction and Report Language
perl-App-cpanminus 1.7044 [d] common [d] Get, unpack, build and install CPAN modules
perl-DBD-MySQL 4.046 [d] common [d] A MySQL interface for Perl
perl-DBD-Pg 3.7 [d] common [d] A PostgreSQL interface for Perl
perl-DBD-SQLite 1.58 [d] common [d] SQLite DBI driver
perl-DBI 1.641 [d] common [d] A database access API for Perl
perl-FCGI 0.78 [d] common [d] FastCGI Perl bindings
perl-YAML 1.24 [d] common [d] Perl parser for YAML
php 7.2 [d] common [d], devel, minimal PHP scripting language
pki-core 10.6 PKI Core
pki-deps 10.6 PKI Dependencies
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 9.6 client, server [d] PostgreSQL server and client module
python27 2.7 [d] common [d] Python programming language, version 2.7
python36 3.6 [d] common [d], build Python programming language, version 3.6
redis 5 [d] common [d] Redis persistent key-value database
rhn-tools 1.0 [d] common [d] Red Hat Satellite 5 tools for RHEL
ruby 2.5 [d] common [d] An interpreter of object-oriented scripting language
rust-toolset rhel8 [d] common [d] Rust
satellite-5-client 1.0 [d][e] common [d], gui Red Hat Satellite 5 client packages
scala 2.10 [d] common [d] A hybrid functional/object-oriented language for the JVM
squid 4 [d] common [d] Squid – Optimising Web Delivery
subversion 1.10 [d] common [d], server Apache Subversion
swig 3.0 [d] common [d], complete Connects C/C++/Objective C to some high-level programming languages
varnish 6 [d] common [d] Varnish HTTP cache
virt rhel [d] common [d] Virtualization module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Bash

 

Stream は、パッケージのバージョンを指します。リストを見ると、現状複数のバージョンが利用できるモジュールは少なめのようです。

 

Profilesは、モジュールを構成するRPMパッケージのバリエーションのことです。いくつかのモジュールで、サーバ用、クライアント用、開発用など複数のプロファイルが用意されており、用途に適したパッケージのセットがインストールされます。

各プロファイルにどんなパッケージが含まれているのかという情報は、リポジトリのデータをキャッシュしているディレクトリに格納されています。ファイルパスは、/var/cache/dnf/rhel-8-for-x86_64-appstream-rpms-*****/repodata/*****-modules.yaml.gz(*****は数字)です。

#*****は数字(長いので省略)
[root@rhel8b repodata]$ gunzip -c *****-modules.yaml.gz > /tmp/modules.yaml
[root@rhel8b repodata]$ less /tmp/modules.yaml

#例として、Python36のエントリを見てみる
document: modulemd
version: 2
data:
name: python36

——- 中略 ——-

profiles:
build: #プロファイル”build”で提供されるパッケージ
rpms:
– python36
– python36-devel
– python36-rpm-macros
common: #プロファイル”common”で提供されるパッケージ
rpms:
– python36
…..

Bash

 

(4) モジュールをインストール・アンインストールする

dnf module install <モジュール名>:<Stream>/<プロファイル> でインストールできます。

#インストール
$ dnf module install postgresql:10/server

#アンインストール
$ dnf module remove postgresql:10/server

Bash
各パッケージのバージョンアップ

プリインストールされているパッケージや、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 から移行することも可能です。コマンドを以下に示します。

#現在のfirewalldの設定を nftables.conf へ上書きコピーする
$ nft list ruleset > /etc/sysconfig/nftables.conf

#firewalld の停止&自動起動無効化
$ systemctl disable firewalld
$ systemctl stop firewalld

# nftables の起動&自動起動有効化
$ systemctl start nftables
$ systemctl enable nftables

Bash

 

また、iptables のコマンドや設定ファイルを、nftables のコマンドや設定ファイルに変換するコマンドも存在するので、iptables の使い方しか知らなくても nftables を利用することができます。詳細は後述します。
(3)iptables のみ

RHEL7の時と同様に、dnf(yum)から iptables-services をインストールすれば、iptables コマンドと iptables ファイルを使ってファイアウォールを操作することができます。

#iptables-service のインストール
$ dnf install iptables-services

#firewalld の停止&自動起動無効化
$ systemctl disable firewalld
$ systemctl stop firewalld

#iptables の起動&自動起動有効化
$ systemctl start iptables
$ systemctl enable iptables

Bash
iptables から nftables への変換ツール

iptables-restore-translate や、ip6tables-restore-translate を使えば、iptables の設定ファイルを、nftables 用の設定ファイルに変換することができます。これにより、RHEL7以前の環境の設定ファイル引き継いでnftablesへ移行することが可能です。

#iptablesの設定を出力する
$ iptables-save > /tmp/iptables.dump

#iptablesの設定を変換して、nftables.conf へ上書きコピーする
$ iptables-restore-translate -f /tmp/iptables.dump > /etc/sysconfig/nftables.conf

#nftablesの設定を確認
$ nft list ruleset

#iptables の停止&自動起動無効化
$ systemctl disable iptables
$ systemctl stop iptables

#nftables の起動&自動起動有効化
$ systemctl start nftables
$ systemctl enable nftables

Bash

また、iptables-translate を使うと、iptables形式の設定をnftables形式の設定コマンドに変換することができます。

$ iptables-translate -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
nft add rule ip filter INPUT tcp dport 80 counter accept

Bash
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 コマンドを使用します。

#現在のポリシーの確認
$ update-crypto-policies –show
DEFAULT

#ポリシーの変更(FUTUREに変更)
$ update-crypto-policies –set FUTURE
Setting system policy to FUTURE
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.

Bash

コマンド例中でも表示されているように、新しいポリシーを適用するにはシステムの再起動(推奨)か、対象アプリケーションの再起動が必要になります。
削除された機能

デフォルトユーザー “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

 

 

Linux、Netatalk、Samba、NFSを使用したファイルサーバーについて研究・運用しています。

fsをフォローする
更新情報

コメント