公開日:2022/7/18 0:00:00

AlmaLinux 9

AlmaLinux 9.0 セットアップメモ

Section 1.2 標準最小構成化

About

最小構成でインストールしていても、不要なパッケージが含まれていたりするので、そういうモノを削除します。最も、ハードウェアによって状況が異なるのでそこはそこで調整してください。仮想マシン上に構築する場合は概ねこの処理で問題無いと思います。

まずは、リモートからsshクライアント(puttyやpowershellのssh)を使って、インストール時に作成したvgrantユーザー(もしくは自分で作成したユーザー)でログイン。

login as: vagrant
root@xxx.xxx.xxx.xxx's password: (表示されないけれどパスワード)
[root@localhost ~]#

rootでログインするのは?

PC上のコンソールから直接ログインすればできます。
sshクライアント経由でのrootログインはインストール時に無効化する設定が基本になっています。なので、ログインしようとアクセスしてパスワードを入れると、**Permission denied, please try again.**と出て拒否されます……Permission denied だったら、try againも何もないよなぁ……

roor になる

これ以降の設定はrootでやることが多いのでいちいちsudo つけてると大変なので、rootで作業します。

インストール時にrootアカウントのパスワードを設定しているので、sudo か su でrootになることができるでしょう。

[vagrant@localhost ~]$ sudo su -

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] vagrant のパスワード:<kbd>rootパスワード</kbd>
[root@localhost ~]#

sudo実行するとこういう警告出るのね……sudoerに追加すれば表示されなくなると思うけれど、とりあえず先に進めます。

パッケージ整理

不要になるパッケージを削除していきます。dnf というパッケージ管理ツールを使って行きます。

まずは、wireless アダプターのドライバ。PCに直接インストールしている場合は、これを消すとネットワークが死ぬ可能性もあるのでその場合は削除しないでください。

[root@localhost ~]# dnf remove iwl100-firmware-39.31.5.1-126.el9_0.noarch \
iwl1000-firmware-39.31.5.1-126.el9_0.noarch \
iwl105-firmware-18.168.6.1-126.el9_0.noarch \
iwl135-firmware-18.168.6.1-126.el9_0.noarch \
iwl2000-firmware-18.168.6.1-126.el9_0.noarch \
iwl2030-firmware-18.168.6.1-126.el9_0.noarch \
iwl3160-firmware-25.30.13.0-126.el9_0.noarch \
iwl5000-firmware-8.83.5.1_1-126.el9_0.noarch \
iwl5150-firmware-8.24.2.2-126.el9_0.noarch \
iwl6000g2a-firmware-18.168.6.1-126.el9_0.noarch \
iwl6050-firmware-41.28.5.1-126.el9_0.noarch \
iwl7260-firmware-25.30.13.0-126.el9_0.noarch


(中略)
これでよろしいですか? [y/N]: y

これ以外にも消して構わないものもあるのですが、なにかと使う可能性がありそうなので残しています。

アップデート

インストール直後でもパッケージのアップデートがかかっていると思われるので、パッケージの更新を行います。

運用に入ってからは、試験してから本番もアップデートするほうがいいです。 パッケージングに失敗して、confが飛ぶというバグが含まれていたこともありますので……

[root@localhost ~]# dnf -y update
(中略)
完了しました!
[root@localhost ~]# 

ユーザーの追加

インストール時にユーザーを作成していると思いますが、それ以外に利用させるユーザーがいれば作成します。

sudoを許可する場合は、wheelグループ にも追加しましょう。一般的には不要なはずですが……

[root@localhost ~]# useradd ユーザー名 -G wheel
[root@localhost ~]#

sshのアクセス鍵の作成

SSHでログインするための鍵を作成します。 とりあえず、vagrantユーザーのものを作成します。

[vagrant@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):(何も入力しない)
Created directory '/home/vagrant/.ssh'.
Enter passphrase (empty for no passphrase):(パスワード)
Enter same passphrase again:(上で入力したのと同じパスワード)
Your identification has been saved in /home/vagrant/.ssh/id_rsa.
Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx vagrant@xxxxx
The key's randomart image is:
+---[RSA 3072]----+
(中略)
+----[SHA256]-----+
[vagrant@localhost ~]$ cd .ssh
[vagrant@localhost .ssh]$ ls
id_rsa  id_rsa.pub
[vagrant@localhost .ssh]$ mv id_rsa.pub authorized_keys
[vagrant@localhost .ssh]$ mv id_rsa vagrant.localhost.rsa.key
[vagrant@localhost .ssh]$ ls
authorized_keys  vagrant.localhost.rsa.key
[vagrant@localhost .ssh]$ cat vagrant.localhost.rsa.key
-----BEGIN RSA PRIVATE KEY-----
(省略)
-----END RSA PRIVATE KEY-----
[vagrant@localhost .ssh]$

表示された秘密鍵の内容を、sshクライアントを起動しているPC上の適当なファイルに保存します。この鍵を使って、sshクライアントで使えるように変換するなどして、鍵を使ってログインできるようにしましょう。

SSHの設定変更

ログイン方式の制限をかけます。これを仮想マシンに設定してしまうといろいろ大変で無駄な労力を割くことになりかねないので、外部に公開する者にはこういう設定をしましょうという事を憶えておけば良いと思っています。

以前はsshd_configを修正していたのですが、conf.dに入れるのが良いそうなので、その方法で進めます。

設定フォルダを確認するとRHELで標準的に上書きする内容がありますが、これは触れずにそのままで。

[root@localhost ~]# ls /etc/ssh/sshd_config.d
50-redhat.conf
[root@localhost ~]#

変える項目は、

となっています。
rootログインを許すかのフラグを書き換えていますが、デフォルトでは、秘密鍵方式であればログインできるようになっています。rootフォルダ内に.sshフォルダ作ってauthorized_keysを配置すればアクセスできるということになり、これはこれで便利ですが、wheelグループに属しているユーザーが乗っ取られ、ファイルを置かれてしまえば遠隔からrootで入られてしまうという危険性を残しているということになります。そのため、完全にできないようにしてしまいましょうということです。

設定は、echo で出力した内容でファイルに書き込んでしまいましょう。

[root@localhost ~]# echo "# Authentication:" > /etc/ssh/sshd_config.d/10-authentication.conf
[root@localhost ~]# echo "LoginGraceTime 1m" >> /etc/ssh/sshd_config.d/10-authentication.conf
[root@localhost ~]# echo "MaxAuthTries 3" >> /etc/ssh/sshd_config.d/10-authentication.conf
[root@localhost ~]# echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config.d/10-authentication.conf
[root@localhost ~]# echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-authentication.conf
[root@localhost ~]# echo "PermitRootLogin no" > /etc/ssh/sshd_config.d/01-permitrootlogin.conf

実行後は、cat等でファイルの中身を確認してください。フォルダの中身は下記のようになります。

[root@localhost ~]# ls /etc/ssh/sshd_config.d
01-permitrootlogin.conf  10-authentication.conf  50-redhat.conf
[root@localhost ~]#

確認出来たらサービスを再起動します。

[root@localhost ~]# systemctl restart sshd
[root@localhost ~]#

サービス再起動後にrootでログインできない事と、鍵方式でログインできる事を確認しましょう。
PCに直接アクセスできないところの場合は、作業中のコンソールとは別に開いてアクセス確認しましょう。失敗していると閉め出されます。

PAMの設定変更

上記で、wheelグループを使うことにしていますので、pamの設定を変更してrootになる事のできるユーザを制限します。

[root@localhost ~]# cp /etc/pam.d/su /etc/pam.d/~su.org
[root@localhost ~]# vi /etc/pam.d/su
*** /etc/pam.d/~su.org  YYYY-mm-dd hh:ii:ss.000000000 +0900
--- /etc/pam.d/su       YYYY-mm-dd hh:ii:ss.000000000 +0900
***************
*** 4,10 ****
        # Uncomment the following line to implicitly trust users in the "wheel" group.
        #auth           sufficient      pam_wheel.so trust use_uid
        # Uncomment the following line to require a user to be in the "wheel" group.
!       #auth           required        pam_wheel.so use_uid
        auth            substack        system-auth
        auth            include         postlogin
        account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
--- 4,10 ----
        # Uncomment the following line to implicitly trust users in the "wheel" group.
        #auth           sufficient      pam_wheel.so trust use_uid
        # Uncomment the following line to require a user to be in the "wheel" group.
!       auth            required        pam_wheel.so use_uid
        auth            substack        system-auth
        auth            include         postlogin
        account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
[root@localhost ~]#

時刻同期設定

インストール時に設定忘れた……という場合以外はスキップしてかまいません。

時刻同期は Chrony というパッケージを使って同期を行います。
インストール済みだと思うので確認ついでにinstallコマンドを実行します。

[root@localhost ~]# dnf -y install chrony

時刻同期は、GPSや原子時計を使って時刻を正確に刻んでいるntpサーバー(Stratum1)などから、ネットワーク経由で時刻情報を得て自分の時間を合わせるという仕組みを持っています。

[root@localhost ~]# cp /etc/chrony.conf /etc/chrony.conf.org
[root@localhost ~]# vi /etc/chrony.conf
*** /etc/chrony.conf.org   YYYY-mm-dd hh:ii:ss.000000000 +0900
--- /etc/chrony.conf       YYYY-mm-dd hh:ii:ss.000000000 +0900
***************
***************
*** 1,6 ****
        # Use public servers from the pool.ntp.org project.
        # Please consider joining the pool (http://www.pool.ntp.org/join.html).
!       pool 2.cloudlinux.pool.ntp.org iburst

        # Record the rate at which the system clock gains/losses time.
        driftfile /var/lib/chrony/drift
--- 1,7 ----
        # Use public servers from the pool.ntp.org project.
        # Please consider joining the pool (http://www.pool.ntp.org/join.html).
!       #pool 2.cloudlinux.pool.ntp.org iburst
!       pool ntp.jst.mfeed.ad.jp iburst

        # Record the rate at which the system clock gains/losses time.
        driftfile /var/lib/chrony/drift
[root@localhost ~]# 

大きくずれていると問題が出そうなので、コマンドを使って一度、時刻同期します。

[root@localhost ~]# chronyc makestep
200 OK
[root@localhost root]# 

後はサービスの有効化と、サービスを起動しておきましょう。

[root@localhost ~]# systemctl enable chronyd
[root@localhost ~]# systemctl start chronyd

とりあえず、ここまでで最小構成化が完了となります。