はじめに
こんにちは、どうもamaebiです。
前回AlmaLinuxをインストールしてミニPCをサーバー化したので、SSHログインもセキュリティなどを考慮して最適化していきます。
前回のOSインストールブログも見ていただけますと幸いです。
やること
今回は以下の内容をやっていきます。
- ターミナルソフトのログ設定、ショートカットキーの追加
- 作業用ユーザーのsudoコマンドを使えるようにする
- 作業用ユーザーの鍵作成、設定
- SELinuxの永久無効化
- ※本番環境等でのSELinuxの無効化はあまりおすすめしません
- EPEL repositoryのインストール
ターミナルソフトのログ設定、ショートカットキーの追加
今回はRLoginを使用していきます。
詳細なインストール方法については省きますが、気になる方はこちらのサイトをご覧ください。
RLoginのexeファイルは、こちらのサイトにzip形式でダウンロードできます。
ここからRLoginのログ設定やコピー&ペーストのショートカットキー追加の手順を説明していきます。
必要に応じて設定を変更してください。
サーバーへのログイン確認
まずはじめに対象サーバーへログインできるかを確認していきます。
RLoginを起動し、新規(N) をクリックします。
以下の情報を入力後、OKをクリックします。
- ホスト名(サーバーIPアドレス)
- ログインユーザー名
-
ユーザー認証の方式によりパスワード or パスフレーズ
※パスワード認証による接続であるため、後ほど鍵認証に変更します。
そうすると、サーバーの接続情報がリスト形式で保存されるため、先ほど登録したものを選択してOKをクリックします。
認証情報が間違っていなければ、以下の画像のようにログインできます。
これでサーバーへのログイン確認は終了です。
ログ設定
次に操作ログを保存するための設定をしていきます。
サーバーにログアウト後、先ほど登録したものを選択し、編集(E) をクリックします。
通信ログを年月日を付けて自動作成するのチェックボックスにチェックを入れ、参照(L) をクリックしてログの保存先のフォルダーを選択していきます。
通信ログの形式を選択後、OKをクリックしてサーバー一覧に戻ります。(自分はLINEを選択してます)
対象サーバーにログインして操作ログが保存されていれば完了です。
コピー&ペーストのショートカットキー追加
最後にコピー&ペーストのショートカットキーを追加していきます。
再度サーバーにログアウト後、編集(E) をクリックします。
以下の情報を入力後、OKをクリックします。(コピーのショートカットキー)
- Key Code
- C
- チェックボックス
- Ctrl
- Assign String
- $EDIT_COPY
同様に以下の情報を入力後、OKをクリックします。(ペーストのショートカットキー)
- Key Code
- V
- チェックボックス
- Ctrl
- Assign String
- $EDIT_PASTE
余談
RLoginでは、Ctrl + zを押すことで実行中の処理をキャンセルすることができます。
すべてのショートカットキーの設定が完了後、OKをクリックしてサーバー一覧に戻ります。
対象サーバーにログインしてショートカットキーが正常に使えれば設定は完了です。
作業用ユーザーのsudoコマンドを使えるようにする
ここからサーバーの設定を行っていきます。
まずは、作業用ユーザーのsudoコマンドを使えるようにしていきます。
実際に作業用ユーザーにログインし、sudoコマンドを使用したところ以下のようなエラーが発生しました。
<作業用ユーザー名> is not in the sudoers file. This incident will be reported.
このままでは少し不便ですので、以下のサイトを参考に設定していきます。
usermod
コマンドを使用して、sudoが使用できるセカンダリグループに追加していきます。
しかし、以下の設定ファイルが変更するため、事前のバックアップが必要になってきます。
- /etc/group : グループ情報
- /etc/gshadow : グループパスワード情報
その他にも、以下の設定ファイルが変更してしまう可能性があります。
(今回はグループのみ変更したため、以下の設定ファイルのバックアップは行っておりません)
- /etc/passwd : ユーザー情報
- /etc/shadow : ユーザーパスワード情報
まずは設定ファイルを確認していきます。
# ls -la /etc | grep -i -e group -e gshadow
対象の設定ファイルが存在していることを確認したら、設定ファイルのバックアップを作成していきます。
# mkdir -v /etc/.backup
# ls -la /etc | grep .backup
# cp -ipv /etc/group /etc/.backup/group.`date +%Y%m%d`
# cp -ipv /etc/gshadow /etc/.backup/gshadow.`date +%Y%m%d`
# ls -la /etc/.backup | grep -i -e group -e gshadow
設定ファイルのバックアップが完了したら、/etc/sudoers
からsudo権限が付与されたグループ名を探していきます。
# cat /etc/sudoers
=== 一部省略 ===
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
=== 一部省略 ===
wheelグループに追加すればsudoコマンドを使用できるため、作業用ユーザーのアカウント情報を書き換えます。
# usermod -G wheel <作業用ユーザー名>
グループに追加されたか設定ファイルの差分をチェックしていきます。
# diff -U0 /etc/.backup/group.<対象ファイルの日付> /etc/group
# diff -U0 /etc/.backup/gshadow.<対象ファイルの日付> /etc/gshadow
実際にsudoコマンドが使えるか確認していきます。
# reboot
~~~ 再起動後、もう一度ログイン ~~~
$ sudo su -
[sudo] password for xxxx:
Last login: xxx xxx x xx:xx:xx JST 2025 on pts/0
#
sudoコマンドが使用できたため、こちらの設定は完了です。
作業用ユーザーの鍵作成、設定
次は鍵認証によるログインができるように設定していきます。
まずはじめに、鍵を配置するディレクトリを作成します。
$ ls -la /home/<作業用ユーザー名> | grep .ssh
$ mkdir -v /home/<作業用ユーザー名>/.ssh
$ ls -la /home/<作業用ユーザー名> | grep .ssh
先ほど作成したディレクトリに鍵を作成していきます。
$ cd /home/<作業用ユーザー名>/.ssh/
$ ssh-keygen -b 4096 -t rsa
$ ls -la
以下のファイル名で鍵が生成されるため、秘密鍵の内容はローカルファイルに保存しておいてください。
- id_rsa : 秘密鍵
- id_rsa.pub : 公開鍵
作成した公開鍵を利用できるように、設定していきます。
$ cat /home/<作業用ユーザー名>/.ssh/id_rsa.pub >> /home/<作業用ユーザー名>/.ssh/authorized_keys
$ ls -la /home/<作業用ユーザー名>/.ssh
$ chmod 600 /home/<作業用ユーザー名>/.ssh/authorized_keys
$ ls -la /home/<作業用ユーザー名>/.ssh
登録した公開鍵を使用してログインするように、設定ファイル(/etc/ssh/sshd_config
)を書き換えていきます。
# ls -la /etc/ssh
# mkdir -v /etc/ssh/.backup
# ls -la /etc/ssh
# cp -ipv /etc/ssh/sshd_config /etc/ssh/.backup/sshd_config.`date +%Y%m%d`
# ls -la /etc/ssh/.backup/
# vi /etc/ssh/sshd_config
# diff -U0 /etc/ssh/.backup/sshd_config.<対象ファイルの日付> /etc/ssh/sshd_config
--- /etc/ssh/.backup/sshd_config.<対象ファイルの日付> 2024-10-03 06:22:19.000000000 +0900
+++ /etc/ssh/sshd_config 2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -40 +40 @@
-#PermitRootLogin prohibit-password
+PermitRootLogin no
@@ -45 +45 @@
-#PubkeyAuthentication yes
+PubkeyAuthentication yes
@@ -65 +65 @@
-#PasswordAuthentication yes
+PasswordAuthentication no
#
変更箇所の詳細は以下の通りです。
- PermitRootLogin : rootユーザーのログインのアクセス制御に関する設定
- PubkeyAuthentication : 公開鍵によるログインのアクセス制御に関する設定
- PasswordAuthentication : パスワードによるログインのアクセス制御に関する設定
※もし以下の設定項目がない場合は追加で設定してください。
AuthorizedKeysFile .ssh/authorized_keys
その後、sshdを再起動します。
# systemctl restart sshd
# systemctl status sshd
実際に設定できたか確認していきます。
一度ログアウトして、Server Select画面からもう一度OK
を押してログインしていきます。
パスワード認証の拒否設定が有効になっていることが確認できました。
続いて秘密鍵を使ってログインできるか確認していきます。
Server Select画面から編集
をクリックします。
先ほどと同様にOK
を押して、サーバーにログインしていきます。
SELinuxの永久無効化
SELinuxを無効にすると、セキュリティ上のリスクが大幅に増加します。無効にする場合は、その影響を十分に理解した上で、慎重に判断してください。
続いてSELinuxを永久に無効化していきます。
SELinuxの概要について、以下のサイトをご覧ください。
まずは、現在のSELinuxの状態を確認していきます。
- Enforcing : 有効 (ログ記録 + アクセス拒否)
- Permissive : 有効 (ログ記録 + アクセス許可)
- Disabled : 無効
# getenforce
Enforcing
#
SELinuxが有効になっているため、無効化していきます。
setenforce
コマンドを利用してもよいのですが、状態を一時的にしか変更できません。
ですので、/etc/selinux/config
ファイルを直接書き換えます。
# ls -la /etc/selinux/
# mkdir -v /etc/selinux/.backup
# ls -la /etc/selinux
# cp -ipv /etc/selinux/config /etc/selinux/.backup/config.`date +%Y%m%d`
# ls -la /etc/selinux/.backup/
# vi /etc/selinux/config
# diff -U0 /etc/selinux/.backup/config.<対象ファイルの日付> /etc/selinux/config
--- /etc/selinux/.backup/config.<対象ファイルの日付> 2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
+++ /etc/selinux/config 2025-xx-xx xx:xx:xx.xxxxxxxxx +0900
@@ -22 +22 @@
-SELINUX=enforcing
+SELINUX=disabled
#
その後、再起動をかけます。
# reboot
再度ログイン後、SELinuxの状態を確認します。
# getenforce
Disabled
#
SELinuxが無効になっていることを確認しました。
EPEL repositoryのインストール
最後にEPEL repositoryのインストールも行っていきます。
EPEL repositoryは様々な場面で利用されることが多く、非常に便利です。
EPEL repositoryの概要については、以下のサイトをご覧ください。
早速、EPEL repository(/etc/yum.repos.d/epel.repo
など)が存在しているか確認します。
# ls -la /etc/yum.repos.d/ | grep epel
EPEL repositoryが存在しなかったため、EPEL repositoryをインストールしていきます。
# dnf update ←※アップデート不要なパッケージが存在する場合は個別に対応してください。
# dnf install epel-release
実際にインストールできたか確認します。
# ls -la /etc/yum.repos.d/ | grep epel
EPEL repositoryが無事インストールされていることが確認できました。
以上でSSHログイン、その他の最適化設定は完了です。
最後に
今回は軽くですが、SSHログインの最適化設定を行いました。
この他にも、少し改良できる点があれば、少しずつしていこうかなと考えております。