公開日:2022/5/8 0:00:00

AlmaLinux 8

AlmaLinux 8.5 セットアップメモ

Section 1.2 標準最小構成化

About

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

まずは、リモートからputtyを使ってrootでログイン。

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

パッケージ整理

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

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

[root@localhost ~]# dnf remove iwl100-firmware-39.31.5.1-104.el8_5.1.noarch \
iwl1000-firmware-39.31.5.1-104.el8_5.1.noarch \
iwl105-firmware-18.168.6.1-104.el8_5.1.noarch \
iwl135-firmware-18.168.6.1-104.el8_5.1.noarch \
iwl2000-firmware-18.168.6.1-104.el8_5.1.noarch \
iwl2030-firmware-18.168.6.1-104.el8_5.1.noarch \
iwl3160-firmware-25.30.13.0-104.el8_5.1.noarch \
iwl5000-firmware-8.83.5.1_1-104.el8_5.1.noarch \
iwl5150-firmware-8.24.2.2-104.el8_5.1.noarch \
iwl6000-firmware-9.221.4.1-104.el8_5.1.noarch \
iwl6000g2a-firmware-18.168.6.1-104.el8_5.1.noarch \
iwl6050-firmware-41.28.5.1-104.el8_5.1.noarch \
iwl7260-firmware-25.30.13.0-104.el8_5.1.noarch
(中略)
これでよろしいですか? [y/N]: y

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

アップデート

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

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

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

ユーザーの追加

いつまでもrootユーザーでSSHログインしているのはセキュリティ的によろしくないので、普段使いのユーザーを追加します。

仮想マシンを使うときは、vagrant を使っているので、この説明の中でも vagrant ユーザーを追加して使っていきたいと思います。

[root@localhost ~]# useradd vagrant -G wheel
[root@localhost ~]#

主にメンテナンスを行うユーザーであるので、wheelグループ にも追加しています。

SSHでログインするための鍵を作成します。

[root@localhost ~]# su - vagrant
[vagrant@localhost ~]$ ssh-keygen -t rsa -b 2048
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
[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]$

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

SSHの設定変更

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

[vagrant@localhost .ssh]$ logout
[root@localhost ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
[root@localhost ~]# vi /etc/ssh/sshd_config
*** /etc/ssh/sshd_config.org    YYYY-mm-dd hh:ii:ss.000000000 +0900
--- /etc/ssh/sshd_config        YYYY-mm-dd hh:ii:ss.000000000 +0900
***************
*** 39,51 ****

        # Authentication:

!       #LoginGraceTime 2m
!       PermitRootLogin yes
        #StrictModes yes
!       #MaxAuthTries 6
        #MaxSessions 10

!       #PubkeyAuthentication yes

        # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
        # but this is overridden so installations will only check .ssh/authorized_keys
--- 39,51 ----

        # Authentication:

!       LoginGraceTime 1m
!       PermitRootLogin no
        #StrictModes yes
!       MaxAuthTries 3
        #MaxSessions 10

!       PubkeyAuthentication yes

        # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
        # but this is overridden so installations will only check .ssh/authorized_keys

ログインを試みることのできる接続時間、rootログインを許すかのフラグ、認証を試みることのできる最大回数、公開鍵認証を許可するかどうか、の設定を変えています。

***************
*** 67,73 ****
        # To disable tunneled clear text passwords, change to no here!
        #PasswordAuthentication yes
        #PermitEmptyPasswords no
!       PasswordAuthentication yes

        # Change to no to disable s/key passwords
        #ChallengeResponseAuthentication yes
--- 67,73 ----
        # To disable tunneled clear text passwords, change to no here!
        #PasswordAuthentication yes
        #PermitEmptyPasswords no
!       PasswordAuthentication no

        # Change to no to disable s/key passwords
        #ChallengeResponseAuthentication yes

パスワード認証でのログインを無効に。

***************
*** 103,109 ****
        #AllowAgentForwarding yes
        #AllowTcpForwarding yes
        #GatewayPorts no
!       X11Forwarding yes
        #X11DisplayOffset 10
        #X11UseLocalhost yes
        #PermitTTY yes
--- 103,109 ----
        #AllowAgentForwarding yes
        #AllowTcpForwarding yes
        #GatewayPorts no
!       X11Forwarding no
        #X11DisplayOffset 10
        #X11UseLocalhost yes
        #PermitTTY yes

最後は使わないので、X11フォワーディングを無効にしています。

保存したらサービスを再起動してください。

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

サービス再起動後にrootでログインできない事と、鍵方式でログインできる事を確認しましょう。

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

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