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 を利用して、公開鍵と秘密鍵を作成します。
- TeraTermを起動してメニューから「設定」 – 「SSH鍵生成」をクリック
- 「RSA」を選択し「生成」ボタンをクリック
- 「鍵のパスフレーズ」「パスフレーズの確認」を入力
- 「公開鍵の保存」ボタンをクリックして任意の場所に保存(id_rsa.pub)
- 「秘密鍵の保存」ボタンをクリックして任意の場所に保存(id_rsa)
公開鍵の登録
「hogeuser」(公開鍵認証を導入したいユーザ)で接続して、ホームディレクトリに 「.ssh」ディレクトリを作成します。パーティションは、所有者のみ読み書き可能とします。
$ cd $HOME $ mkdir .ssh $ chmod 700 .ssh
クライアントで作成した公開鍵(id_rsa.pub)をサーバーにアップロードします。TeraTerm でしたら以下の手順のアップロードできます。
- TeraTermを起動してメニューから「ファイル」 – 「SSH SCP...」をクリック
- 「From」に公開鍵ファイル(id_rsa.pub)を選択
- 「Send」ボタンをクリックしてアップロード
※ログインしているユーザのホームディレクトリにアップロードされます。
アップロードしたファイルを「.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 での接続例
- TeraTermを起動してメニューから「ファイル」 – 「新しい接続」をクリック
- 「ホスト名」を入力/li>
- 「TCPポート#」を入力
- 「サービス」は[SSH]を選択
- 「SSHバージョン」は[SSH2]を選択
- 「OK」ボタンをクリック
- SSH認証ダイアログを起動
- 「ユーザ名」を入力
- 「パスフレーズ」を入力
- 「RSA/DSA鍵を使う」を選択
- 「秘密鍵」ボタンをクリックして生成した秘密鍵(id_rsa)を選択
- 「OK」ボタンをクリック