ひと昔以上前のノートに、「ubuntu」入れてみたのが、2年前

会社でもローカル環境にwordpressでのコミュニティサイトを検討しているので、wordpress環境構築作業に戸惑わないよう、コピペできるよう、まとめました。
せっかくなので、RockyLinux10で試してみましたが、筆者の10数年前のノートPCではインストーラさえ起動しませんでした
RockyLinux9.7であれば起動したので、クリーンインストールして再構築しました
RockyLinux9.7 ダウンロード・インストール
ダウンロード・インストールの詳細はこちらを確認してください

有線デバイスを認識しない
wifiを利用していたので、あまり意識しませんでしたが、wifiでのトラブルがあったので、有線LANを利用しようとしましたが、認識しない状況になりました。
AIに聞きながらどうにか解決したので、ここに覚書としてメモしておきます
インターフェースの確認:
nmcli device
通常、正常であればここに enp... や eth0 といった名称のデバイスが表示されますが
リストに出てきませんでした。
AIに相談すると
リストにないということは、設定の問題ではなく「ドライバが読み込まれていない」か「ハードウェアが認識されていない」可能性が極めて高いです。
次の結果を教えてください
lspci -nn | grep -i net
$ lspci -nn | grep -i net
08:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter [10ec:8176] (rev 01)
09:00.0 Ethernet controller [0200]: JMicron Technology Corp. JMC250 PCI Express Gigabit Ethernet Controller [197b:0250] (rev 05)
原因が特定できました。搭載されている有線LANコントローラー 「JMicron JMC250 [197b:0250]」 は、Rocky Linux 9 (RHEL 9) の標準カーネルではサポート(ドライバが同梱)されていません。
JMicron用ドライバのインストール
JMicron JMC250 [197b:0250]」 は、ELRepo リポジトリからドライバを提案してもらいましたが、結局、Rocky Linux 9 (EL9) 用には JMicron [197b:0250] のドライバが提供されていない ようです
「ELRepo-kernel」から最新カーネルを試す(成功率:中)
成功率は「中」ですが、新しいカーネルには、稀に古いドライバが復活していたり、汎用ドライバで動く可能性があるとの事なので、やってみます
# 最新カーネルのインストール
sudo dnf --enablerepo=elrepo-kernel install kernel-ml
# 再起動して、起動メニューで新しいカーネル(数字が大きい方)を選択
sudo reboot
再起動後に nmcli device を確認
nmcli device
DEVICE TYPE STATE CONNECTION
wlp8s0 wifi 接続済み aterm-e41133-g
lo loopback 接続済み (外部) lo
enp9s0f0 ethernet 切断済み --
認識されました
ethernetデバイスを接続する
接続は「nmcli device connect デバイス名」で接続できます
sudo nmcli device connect enp9s0f0
その他、ネットワーク設定は、下記を参考にしてください

インストール直後の設定
ホームディレクトリの日本語表記を英語表記に変更
LANG=C xdg-user-dirs-gtk-update
特定のユーザーにsudo を可能にする
su
visudo
visudo で、コメント行になっている、下記の「#」を外し有効にします
%wheel ALL=(ALL) NOPASSWD: ALL
・ ・ ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL ・ ## Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL
その後、特定ユーザーを、「wheel」グループに追加すればそのユーザーはパスワードなしで「sudo」実行が可能になります
usermod -aG wheel hogehoge
SSH利用状況の確認
RockyLinux9では、ほとんどの選択でsshは自動起動している状態になっています。
動作は、「ssh」コマンドで確認できます
ssh
usage: ssh [・・・・」のような
コマンドの使い方を示すヘルプメッセージが表示されれば動作しています
また、sshサービスはファイヤーウォールでの制限対象ですが、こちらも標準では許可されていますが、確認しておきます
詳細は、下記記事を参照してください

ここでは、sshの許可状態だけ確認します
firewalldでのsshの確認
まず、「firewalld」の起動状態を確認してみます
systemctl status firewalld
これで、になっていれば、起動しています
ファイヤーウォールのアクセスルール対象となるのはアクティブゾーンになります
まずは、アクティブゾーンを確認します
sudo firewall-cmd --get-active-zones
public
interfaces: wlp8s0
アクティブゾーンは「public」のみと言うのがわかりました
今回は「ssh」の許可状態は「public」の設定で確認すればわかります
sudo firewall-cmd --list-all --zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: wlp8s0
sources:
services: cockpit dhcpv6-client ssh
ports:
「services」に、「ssh」があるので、許可されています
SSHでリモート操作
上で確かめたように、RockyLinux9では、デフォルトでsshサービスもファイヤーウォールでの許可も利用可能な状態になっています。
「ssh」コマンドでアクセスしてみましょう。
ssh hogehoge@192.168.*.* -p 22
ssh 「Linux側のユーザー@IPアドレス」 でパスワード入力で接続できます
「-p 22」は、ポート番号指定です。sshはデフォルトでは22番ポートです。
デフォルトであれば、省略できます。
「-p 22」はオプションですが、違うポート番号の場合は、その番号を指定します。
また以前ポート番号などを変更していたなどで接続できない事もあります
その場合には、標準ポート番号「22」を指定する事で接続できるようになります
windowsターミナルでも同じコマンドです
接続ができれば、windowsから、Linuxマシンを殆どリモートで設定できます
ローカル内だけでの運用であれば、この設定でもいいかもしれませんが、後ほどポート番号変更と鍵認証方式に変更しようと思います
インストール後の設定2(SSHでも可)
まずは、パッケージのアップデート
sshアクセスができれば、windowsターミナルからでも操作できまます
インストール初期のアップデートで、依存関係の競合とかでエラーが表示される事があります
エラーメッセージでは、「--skip-broken」の付加のアドバイスが出ますが、ついでに「–allowerasing」オプションも追加したほうがいいようです
sudo dnf update --skip-broken --allowerasing
sudo reboot
SELinuxに強制させない設定
SELinuxはセキュリティをより強固にする機能で、RockyLinuxなどRedHat系では標準で有効になっていますが、思うように動作しないトラブルも多いようです。
ポリシーを読み込まず、無効的な状態にする方法もありますが、警告のみでポリシーを強制しない「Permissiveモード」に設定にしようと思います
su
vi /etc/selinux/config
・ ・ #SELINUX=enforcing SELINUX=permissive ・ ・
reboot
再起動後、確認
sudo getenforce
「Permissive」が返ってくれば、設定されています
設定中に本体のGUIがクラッシュした
外部PCからsshで操作していて、たまに戻ると、画面がクラッシュしている場合があります
これはGUIのディスプレイマネージャー(gdm)がロックやスリープ状態になっているか、セッションがクラッシュしている場合に起こるようです
復旧方法:キーボードショートカットで復旧
私の状況は、マウスカーソルだけが動く状態だったので、その画面で:
Ctrl + Alt + F2(または F3〜F6)を押す → テキストコンソールに切り替え- ログイン後、以下を実行:
systemctl restart gdm
Ctrl + Alt + F1(または F7)でGUI画面に戻る
恒久対策として:スリープ・省電力設定を無効化する
# GNOMEのスクリーンセーバー・自動サスペンドを無効化
sudo -u ユーザー名 gsettings set org.gnome.desktop.screensaver lock-enabled false
sudo -u ユーザー名 gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
このコマンドは、私の環境でSSH経由では、X11のDISPLAY環境変数がないとのエラーになりました
ssh経由の場合には、DISPLAY変数を指定して実行します
sudo -u ユーザー名 DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ユーザー名)/bus gsettings set org.gnome.desktop.screensaver lock-enabled false
sudo -u ユーザー名 DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ユーザー名)/bus gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
確認方法
sudo -u ユーザー名 DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ユーザー名)/bus gsettings get org.gnome.desktop.screensaver lock-enabled
sudo -u ユーザー名 DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ユーザー名)/bus gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type
下記の結果がでれば、正常に反映されている
false 'nothing'
CUIモードをデフォルトにする
SSH経由でのリモートがほとんどになれば、CUIモードのほうがトラブルは少なそうなので、CUIモードに設定します
sudo systemctl set-default multi-user.target
これで、再起動後はGUIなしで起動します。
もし、GUIが必要になったら、
sudo systemctl start gdm
再度GDMを停止させCUIに戻るには、サーバー機で操作できる場合には
Ctrl+Alt+F2
または、リモートも含めたコマンド操作の場合は
sudo systemctl stop gdm
このコマンド操作で、画面が止まったように見える場合は、サーバー機で
上記の
Ctrl+Alt+F2
SSHのセキュリティ向上対策
SSHを鍵認証方式で運用
「鍵認証方式」は、「秘密鍵」と「公開鍵」のペアの鍵を作成し、アクセスする側は「秘密鍵」が必要になり、アクセスされる(サーバー)側には、「公開鍵」を登録します
一般的には、アクセス側で鍵を生成し、「公開鍵」の登録をサーバーへお願いします
鍵生成は、windowsでもLinuxでも、「ssh-keygen」コマンドで生成できます
今回は、windowsターミナルで生成します
ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\hogehoge/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again
Your identification has been saved in C:\Users\hogehoge/.ssh/id_ed25519
Your public key has been saved in C:\Users\hogehoge/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:o2ojnUu7UflR12VZq2yOcTY/Ky-VzibafGh/PJbPe6C hogehoge@hoge-Pc
The key's randomart image is:
+--[ED25519 256]--+
| .+.o|
| Oo|
| o + o . . |
| . Z . . o..|
| . o . *AC|
+----[SHA256]-----+
秘密鍵のアクセス権限を厳しく設定
下記のアクセス権の設定は、windowsターミナルでの操作コマンドです。
Linuxでの操作は、こららを参考にしてください
継承の無効化と権限のクリア
icacls "$HOME\.ssh\id_ed25519" /inheritance:r
ユーザーにのみ読み取り権限を付与
icacls "$HOME\.ssh\id_ed25519" /grant:r "$($env:USERNAME):R"
「自分自身」以外のユーザー権限を削除
icacls "$HOME\.ssh\id_ed25519" /remove "SYSTEM"
icacls "$HOME\.ssh\id_ed25519" /remove "Administrators"
icacls "$HOME\.ssh\id_ed25519"
エクスプローラの「プロパティ」⇒「セキュリティ」でも確認できます
公開鍵をサーバー側へコピー
作成した、「id_ed25519.pub」をサーバー側ユーザーの「.ssh」ディレクトリへコピー
・windowsの自分自身のホームの「.ssh」に移動
・scp コマンドへ、サーバー側ユーザーの「.ssh」へコピー
cd $HOME\.ssh
scp .\id_ed25519.pub hogehoge@192.168.*.*:.ssh
サーバー側へsshでログインし操作
windows側から、sshログインし、「.ssh」ディレクトリへ移動し確認
ssh hogehoge@192.168.*.*
ログイン後、コピーされているか、確認
cd ./.ssh
ls -la
公開鍵を保存ファイル(authorized_keys)へ登録
コピーされた公開鍵を、保存用のファイルへ登録し、そのファイルのアクセス権は厳しくします
持ってきて、公開鍵は削除しておきます
cd ~/.ssh
cat id_ed25519.pub >> authorized_keys
chmod 600 authorized_keys
rm id_ed25519.pub
exit
再度、鍵を使って、SSHログイン
ssh に「i」オプションで鍵指定
ssh -i .ssh/id_ed25519 hogehoge@192.168.*.*
ログイン時、鍵生成時登録したパスフレーズを入力し、ログイン
鍵認証以外ではログイン拒否
鍵を使ってのログインが確認できたら、鍵以外でのログインは拒否する設定をしておきます
設定は、「/etc/ssh/sshd_config」ファイルの”PasswordAuthentication”を”no”に設定します
まずは、ファイルをバックアップして、編集します
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
sudo vi /etc/ssh/sshd_config
・
・
#PasswordAuthentication yes
PasswordAuthentication no
・
・
ついでにリモートからのROOTログインも拒否設定します
「/etc/ssh/sshd_config」ファイルの”PermitRootLogin”も”no”に設定
・
・
#PermitRootLogin prohibit-password
PermitRootLogin no
・
・
さらに、ポート番号を変更
「ssh」のポートは「22番」が標準なので、自動スキャンなどのアタックが増えるので、違う番号に変更しておきます。
ポート番号も「/etc/ssh/sshd_config」ファイルの”Port”で設定します
ポート番号は登録済み番号などもあるので、49152–65535の範囲に設定します
・
・
#Port 22
Port 55522
・
・
「22番」は「ssh」サービスのデフォルトなので、firewalldの設定でsshは「22番」になります
firewalld設定は、ポート番号を直接設定する事もできますが、やはりsshのポート番号を変更する方法がfirewalldは再起動だけで、設定は不要なのでスマートだと思います
デフォルト設定は、「 /usr/lib/firewalld/services/ ssh.xml 」に保存されているので、
そのファイルを「 /etc/firewalld/services /」にコピーして編集します。
sudo cp -p /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
sudo cd /etc/firewalld/services/
sudo ls /etc/firewalld/services/
sudo vi /etc/firewalld/services/ssh.xml
・
・
<port protocol="tcp" port="22"/>
↓
<port protocol="tcp" port="55522"/>
・
・
sshとfirewall サービスを再起動して、アクセスにはポート番号を明示します
sudo systemctl reload sshd.service
sudo firewall-cmd --reload
ssh -p 55522 hogehoge@192.168.*.*
ここまでで、RockyLinux9.7のインストールと、やっておきたい初期設定を解説しました
「ssh」の設定も完了しているので、windowsターミナルからでも実行できます
WordPress環境構築まとめ
6

