田舎のパパが日常で感じた気になる話を発信するブログです。

気になるボックス

VPS

VPS 初心者が「最初にやりたい3つのセキュリティ設定」

投稿日:

VPSでは、セキュリティに関する設定を怠ってしまうと容易に乗っ取られてしまい、自分だけではなく他の方にも多大な迷惑をかけてしまいます。そこで今回は、VPS 初心者が「最初にやるべき3つのセキュリティ設定」について解説します。

スポンサーリンク

1.sshのポート番号を変更

まずは、sshのポート番号を変更します。攻撃者は、sshの標準ポートである「22」が空いていることがわかると、ユーザとパスワードを総当りで侵入を試みてきます。そのため、この番号を変更することで狙われる可能性を激減させることができます。

ServersMan@VPS では、賛否はありましたが運営側の方針で、sshのポート番号は、標準の「22」ではなく「3843」が初期値として設定されています。ServersMan@VPSの方は、この部分は飛ばしてもOKです。

ポート番号の変更

sshd の設定ファイルを編集します。

$ vi /etc/ssh/sshd_config

変更後のポート番号は、10000 から 65535 で好きな番号を設定します。下の例では、「20022」に変更しています。

Port 22
  ↓
Port 20022

sshd を再起動して変更内容を反映させます。

$ service sshd restart
Stopping sshd:                                            [  OK  ]
Starting sshd:                                            [  OK  ]

2.rootによるログインを禁止

システム内に存在する確率の高いユーザー名は、攻撃者に狙われやすくなります。そのため、最初から存在する root のログインを禁止することででも狙われる可能性を減らせます。他に狙われやすいユーザ名には、test、admin、guest、user、mysql 、ftp などがあります。

root 以外のユーザを使用するもう一つの理由

root は、最高権限であり、あらゆる操作が可能です。そのため、不注意でシステムにとって重要なファイルを削除してしまう危険があります。普段の作業では、root 以外のユーザを使用して必要に応じて sudo コマンドなどで、root 権限を得て作業することが望ましいようです。

ユーザの作成

今後、 root の代わりに使用することになるユーザを作成します。

$ useradd hogeuser
$ passwd hogeuser
Changing password for user hogeuser.
New UNIX password: [パスワードを入力]
Retype new UNIX password: [パスワードを入力]
passwd: all authentication tokens updated successfully.

sudo コマンドの許可

追加したユーザが sudo コマンドを実行出来るようにします。sudo コマンドを利用すると root権限(指定したユーザ)でコマンドを実行できます。今後、root 権限が必要な作業を行う際に利用します。

wheel グループに属しているユーザが、sudo コマンドを使用できるように変更する。

$ visudo

wheel グループの記述部分のコメントを外します。

# %wheel ALL=(ALL) ALL
  ↓
%wheel ALL=(ALL) ALL

追加したユーザを wheel グループに設定する。

$ usermod -g wheel hogeuser

環境変数の設定

システム系コマンドのパスを通します。環境変数に設定することで、パスを省略してコマンドを実行できます。

.bash_profile を編集します。

$ vi $HOME/.bash_profile

sbin、/usr/sbin、/usr/local/sbin を PATH に追加します。

PATH=$PATH:$HOME/bin
# --------- ここから追加 ----------
PATH=$PATH:/sbin
PATH=$PATH:/usr/sbin
PATH=$PATH:/usr/local/sbin
# --------- 追加ここまで ----------

root でのログインを禁止

sshd の設定ファイルを編集します。

$ vi /etc/ssh/sshd_config

PermitRootLogin を yes → no に変更する。

#PermitRootLogin yes
  ↓
PermitRootLogin no

sshd を再起動して変更内容を反映させます。

$ service sshd restart
Stopping sshd:                                            [  OK  ]
Starting sshd:                                            [  OK  ]

3.公開鍵認証の導入、及び、パスワード認証等の廃止

パスワード認証では、暗号化はされていますが、パスワードがネットワーク上を流れます。公開鍵認証では、パスワードは一切ネットワーク上に流れることがなく、パスワードの盗聴や推測などによる攻撃を防ぐことができ、パスワード認証に比べセキュリティが向上します。

公開鍵認証では、パスフレーズ(パスワードに相当するもの)を入力しますがパスワード認証と違い、クライアントで秘密鍵を復号するためだけに使われネットワーク上には流れることはありません。

公開鍵と秘密鍵の作成

クライアントでTeraTerm を利用して、公開鍵と秘密鍵を作成します。

  1. TeraTermを起動してメニューから「設定」 – 「SSH鍵生成」をクリック
  2. 「RSA」を選択し「生成」ボタンをクリック
  3. 「鍵のパスフレーズ」「パスフレーズの確認」を入力
  4. 「公開鍵の保存」ボタンをクリックして任意の場所に保存(id_rsa.pub)
  5. 「秘密鍵の保存」ボタンをクリックして任意の場所に保存(id_rsa)

公開鍵の登録

「hogeuser」(公開鍵認証を導入したいユーザ)で接続して、ホームディレクトリに 「.ssh」ディレクトリを作成します。パーティションは、所有者のみ読み書き可能とします。

$ cd $HOME
$ mkdir .ssh
$ chmod 700 .ssh

クライアントで作成した公開鍵(id_rsa.pub)をサーバーにアップロードします。TeraTerm でしたら以下の手順のアップロードできます。

  1. TeraTermを起動してメニューから「ファイル」 – 「SSH SCP...」をクリック
  2. 「From」に公開鍵ファイル(id_rsa.pub)を選択
  3. 「Send」ボタンをクリックしてアップロード
  4. ※ログインしているユーザのホームディレクトリにアップロードされます。


アップロードしたファイルを「.ssh」ディレクトリにファイル名を「authorized_keys」として移動します。パーティションは、所有者のみ読み取り可能とします。

$ mv $HOME/id_rsa.pub $HOME/.ssh/authorized_keys
$ cd $HOME/.ssh
$ chmod 600 authorized_keys

公開鍵認証の設定、及び、パスワード認証等の廃止

sshd_config ファイルを編集します。所有者は root なので sudo コマンドを利用します。
sudo 初回起動時は、ログインユーザ(ここでは、hogeuser)のパスワードの入力を求められます。

$ sudo vi /etc/ssh/sshd_config
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for hogeuser: [パスワードを入力]

SSH2のみ許可となっていることを確認する。(なっていなければ変更する。)

Protocol 2

パスワード認証を禁止する。

PasswordAuthentication yes
 ↓
PasswordAuthentication no

パスワード無しでのログインを禁止する。

#PermitEmptyPasswords no
 ↓
PermitEmptyPasswords no

公開鍵認証を許可する。

#PubkeyAuthentication yes
 ↓
PubkeyAuthentication yes

公開鍵の格納場所を 「.ssh/authorized_keys」 とする。

#AuthorizedKeyFile   .ssh/authorized_keys
   ↓
AuthorizedKeyFile   .ssh/authorized_keys

チャレンジレスポンス認証を禁止する。明示的に禁止しておかないと、PAM認証となりプレーンパスワードでのログインが可能となるようです。公開鍵認証のみとしたいので明示的に禁止しておく。

#ChallengeResponseAuthentication yes
   ↓
ChallengeResponseAuthentication no

記述されたユーザ(hogeuser)のみSSH接続を許可する。(適当な場所に追記)

AllowUsers hogeuser 

sshd を再起動して変更内容を反映させます。

$ service sshd restart
Stopping sshd:                                            [  OK  ]
Starting sshd:                                            [  OK  ]

補足:TeraTerm での接続例

  1. TeraTermを起動してメニューから「ファイル」 – 「新しい接続」をクリック
  2. 「ホスト名」を入力/li>
  3. 「TCPポート#」を入力
  4. 「サービス」は[SSH]を選択
  5. 「SSHバージョン」は[SSH2]を選択
  6. 「OK」ボタンをクリック

  1. SSH認証ダイアログを起動
  2. 「ユーザ名」を入力
  3. 「パスフレーズ」を入力
  4. 「RSA/DSA鍵を使う」を選択
  5. 「秘密鍵」ボタンをクリックして生成した秘密鍵(id_rsa)を選択
  6. 「OK」ボタンをクリック

-VPS
-,

Copyright© 気になるボックス , 2016 AllRights Reserved Powered by AFFINGER4.