最初の設定!一般ユーザの作成とsshによるroot接続の禁止等

メモ:

WindowsやLinuxで運用していくにあたり、使用環境によってセキュリティ面を考慮する必要があると思います。CentOS の環境を構築した後のセキュリティ対策として作業ユーザ(一般ユーザ)の作成やsudoの設定、sshサーバの設定を確認していきます。

ここでは、次の設定を行っていきます。

  • 一般ユーザの作成
  • sudo 設定
  • ssh 接続で root でのログインを禁止する
  • 公開鍵認証の設定
  • ssh 接続のパスワード認証を禁止する

一般ユーザの作成

CentOS 7 のインストール中にユーザを作成していない場合、 root のみがログイン可能な状態になっていると思います。root は、サーバ上で全ての操作が可能な特権ユーザのため、攻撃する側は root の権限が欲しいという感じになっています。対策の一つとして root でのログインを禁止し、一般ユーザのみログイン出来るよう設定を行います。

一般ユーザの作成には「useradd」コマンドを使います。ここでは、「bnote」というユーザを作成していきます。

# useradd bnote

「passwd」コマンドを使用して、作成したユーザのパスワードを設定します。

# passwd bnote
ユーザー bnote のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

エラーなどが表示されなければ、ユーザの作成ができていると思います。念のため作成したユーザでログインできるかどうか ssh で接続してみます。私の場合、RLogin を使っていますので RLogin から確認しました。

一般ユーザで root と同じ権限で操作可能な状態にする

一般ユーザのままでは、出来ることの幅が狭いので「sudo」コマンドで root と同じ権限で操作できるよう設定します。sudo とは、別のユーザとしてコマンドを実行するためのコマンドで、一般ユーザでも root と同じ権限で操作可能な状態になります。sudo コマンドは、実行時に常にログが残り、root のパスワードも必要ありません。(同じようなユーザを切り替える 「su」コマンドでは、root のパスワードを知る必要があった)

CentOS をインストールすると 「wheel」というグループが用意されています。wheel グループは、sudo コマンドで root 権限を実行するための、特別なグループという位置づけになっていますので、先ほど作成したユーザを「wheel」グループに追加し、sudo コマンドが使えるようにします。

# usermod -G wheel bnote

wheel グループに所属できたか、次のコマンドで確認してみます。

# groups bnote
bnote : bnote wheel

「wheel グループは、sudo コマンドで root 権限を実行できるよ~」という sudo の設定は、 /etc/sudoers に次のように設定されています。この /etc/sudoers は、別の機会に掘り下げていきたいと思いますが、「wheel」グループは、すべてのホストからすべてのユーザに切り替えでき、すべてのコマンドを実行できるという意味になります。

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

これで、rootに代わって作業ができるようになりました。

ssh 接続で root でのログインを禁止する

root でssh 接続ができないように「/etc/ssh/sshd_config」の設定を変更します。

# vi /etc/ssh/sshd_config

・・・・・
#PermitRootLogin yes
PermitRootLogin no
・・・・・

PermitRootLoginの部分がコメントアウトされていると思うので、「PermitRootLogin no」に設定します。

ファイルを保存後、sshd を再起動して設定を有効化します。

# systemctl restart sshd

これで、root でのログインが禁止されます。

ssh 接続のパスワード認証を禁止し公開鍵認証方式に変える

公開鍵認証の作成

※鍵ペアの作成は、クライアント側のPCで行います。

クライアント側で SSH 接続用の鍵ペア(秘密鍵 id_rsa と、公開鍵 id_rsa.pub の組み合わせ )を作成します。

ここでは、git bash(git for windows)を使って鍵を作成しています。

$ ssh-keygen -t rsa -C ""
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/27905/.ssh/id_rsa):【Enterキーを押す】
Created directory '/c/Users/bnote/.ssh'.
Enter passphrase (empty for no passphrase):【任意のパスワード】
Enter same passphrase again:【上で入力したパスワード】
Your identification has been saved in /c/Users/27905/.ssh/id_rsa.
Your public key has been saved in /c/Users/27905/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:fCCwWYfA9WpUfEUtB/Bi77Cy/5mBDsyB1hCE8WPJEsY
The key's randomart image is:
+---[RSA 2048]----+
|   o**=oo .++o   |
|   .EO.*. ... o  |
|    + X o.o .o   |
|     + O o o     |
|      = S o .    |
|     o o o =     |
|        = o o    |
|         =   +   |
|        ..o.+    |
+----[SHA256]-----+

デフォルトのパス /c/Users/(ユーザー名)/.ssh/id_rsa に鍵のペアが作成されます。公開鍵の名前は秘密鍵の名前の末尾に .pub が付いたものになります。

公開鍵をサーバへアップロードし登録する

公開鍵(id_rsa.pub)をサーバ上の作成したユーザのホームディレクトリにアップロードします。アップロードしたファイルを公開鍵リスト用ファイル(authorized_keys)に公開鍵を追加します。

$ cd
$ mkdir .ssh
$ chmod 700 .ssh/
$ mv id_rsa.pub .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

公開鍵リストを保存するディレクトリを作成し、ディレクトリのアクセス権を自分以外のアクセスを禁止に設定します。公開鍵リストのファイルを作成し、ファイルのアクセス権を自分以外の読み書きを禁止に設定します。

ssh 接続のパスワード認証を禁止する

パスワード認証で ssh 接続ができないように「/etc/ssh/sshd_config」の設定を変更します。

# vi /etc/ssh/sshd_config

・・・・・
#PasswordAuthentication yes
PasswordAuthentication no
・・・・・

PasswordAuthentication の部分がコメントアウトされていると思うので、「PasswordAuthentication no」に設定します。

ファイルを保存後、sshd を再起動して設定を有効化します。

# systemctl restart sshd

これで、パスワード認証によるログインが禁止されます。

まとめ

ここまでの設定で、作業は完了です。お好みのターミナルで、正しく設定されているか確認します。

正しく設定されていれば、root によるログインが禁止され、パスワード盗用による不正アクセスにも対応できそうです。