さくらVPS(その3:セキュリティ設定)
「さくらVPS」のサーバにセキュリティを設定する方法について紹介します。
この記事は「さくらVPS」環境設定シリーズの3回目です。
本エントリーの実施内容を先にまとめておきます。
- 新しいユーザーを追加し、追加したユーザーが
- 公開鍵をつかってsshログインできるようにする
- root権限になれるようにする(=sudoコマンドを利用可能にする)
- rootのパスワード変更
- rootでssh経由のログインができないようにする
- パスワード認証によるsshログイン禁止
- パスワードなしsshログイン禁止
このエントリーで解説する作業はすべてrootアカウントで実施してください。
1.ユーザーの作成
TeraTermなどからログインするためのユーザーを作成します(後の作業でrootで直接ログインできないようにします)。
ユーザーを作成するのは「adduser」コマンドです。「adduser ユーザー名」でユーザーを作成し、「passwd 作成したユーザー名」でユーザーのパスワードを設定します。
# adduser hoge ←ユーザーの作成
# passwd hoge ←作成したユーザーのパスワード設定
Changing password for user hoge.
New password: ←パスワードを入力(入力文字は表示されません)
Retype new password: ←パスワードを再入力(入力文字は表示されません)
passwd: all authentication tokens updated successfully.
実際の画面
「adduser -D」は、どのようなユーザーが作成できるかを確認するためのコマンドです。
# adduser -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
2.ユーザーをwheelグループに追加
作成したユーザーがrootになれるよう、「usermod -G wheel ユーザー名」でwheelグループに追加します。
# usermod -G wheel hoge
「wheel」とは、Linuxでrootになることのできるユーザーが属するグループの名称です。
3.wheelグループにroot権限を付与
root権限で「visudo」と入力して、/etc/sudoersファイルを編集します。
# visudo
デフォルトエディタとしてviが開きます。viはクセがあるので不要なキーを叩かないように気をつけましょう。
ファイルが開いたら、カーソルキーで一番下の方にある、
# %wheel ALL=(ALL) ALL
という行の先頭の「#」に移動して、「x」キーを2回押下し、
%wheel ALL=(ALL) ALL
に変更します。「x」キーは文字を削除するキーです。
実際の画面(変更前)
実際の画面(変更後)
削除したら「:wq」と入力し、ファイルを保存します。
編集で訳が分からなくなったら「Esc」キーのあとに「:q!」と入力すれば保存せずに終了できるはずなので、もう一度最初からやり直してください。
新しいTeraTermを開いて、作成したユーザーでログインし、sudoコマンドが実行できればOKです。
sudoコマンドはrootしか実行することのできないコマンドの使用権限を一般ユーザーに与えることができるものです。
例えば、root権限でしか編集できない/etc/ssh/sshd_configの編集を行う場合、次のようにします。
% sudo vi /etc/ssh/sshd_config
実行時に自分のパスワード(rootのパスワードではない)を入力します。
実際の画面
本エントリーの設定が終わったあと、root権限が必要なコマンドは、suコマンドでrootに切り替えて実行しても構いませんが、そのたびにrootのパスワードを入力しなければならないので、一般ユーザーからsudoコマンドで実施するようにしましょう。
4.rootのパスワード変更
契約時に発行されたrootのパスワードを変更します。パスワードを変更するにはターミナルから「passwd」コマンドを入力します。
# passwd
Changing password for user root.
New password: ←新しいパスワードを入力(入力文字は表示されません)
Retype new password: ←新しいパスワードを再入力(入力文字は表示されません)
passwd: all authentication tokens updated successfully.
実際の画面
設定後、一般ユーザーからsuコマンドを実行し、設定したパスワードでrootに切り替わることを確認してください。
5.公開鍵でログインできるようにする
まず、「公開鍵認証でサーバにログインする方法(サーバで鍵生成)」を参照して作業を実施してください。
設定後、さくらVPSでこの設定を有効にするため、/etc/ssh/sshd_configを編集します。
# vi /etc/ssh/sshd_config
ファイルを開いたら、
#PubkeyAuthentication yes
という行の先頭の「#」を削除して、
PubkeyAuthentication yes
にします(「no」になっていたら「yes」にしてください)。
保存後、変更を有効にするため、sshdを再起動します。
# /etc/init.d/sshd restart
他の記事で、「RSAAuthentication」や「AuthorizedKeysFile」を設定するように記載されているものもありましたが、試してみたところ、上記の修正でログインできることを確認しています。
6.rootのsshログインを禁止する
サーバを乗っ取られないようにするため、ssh経由でrootにログインできないようにします。この設定を行う前に5項の設定を完了させてください。
5項と同様、/etc/ssh/sshd_configを編集します。6~7項で同じファイル「sshd_config」を編集するので、まとめて編集してもかまいません。
# vi /etc/ssh/sshd_config
ファイルが開いたら、
#PermitRootLogin yes
という行の先頭の「#」を削除し、さらに「yes」を「no」に変更して、
PermitRootLogin no
に変更します。
実際の画面(変更前)
実際の画面(変更後)
viで文字を書き換えるときには「i」キーを押下すれば文字の挿入や削除が行えるようになり、大体通常のテキストエディタのキー操作で編集できるようになります。ただし、DeleteキーはBackspaceキーの動作になるので気をつけてください。
編集が終わって保存するときは「Esc」キーを押下してから「:wq」と入力してください。
保存後、変更を有効にするため、sshdを再起動します。
# /etc/init.d/sshd restart
この画面は終了させず(設定を失敗したときに使えるため)、新しいTeraTermの画面を開き、rootでログインできなければ設定完了です。
7.パスワード認証禁止とパスワードなしログインの禁止
前項同様、/etc/ssh/sshd_configを編集し、以下のようにパスワード認証禁止とパスワードなしログインの禁止の設定を行います。
PermitEmptyPasswords no # パスワードなしログイン禁止
PasswordAuthentication no # パスワード認証禁止
保存後、変更を有効にするため、sshdを再起動します。
# /etc/init.d/sshd restart
8.システムの更新
システムを最新の状態に保つため、「yum update」コマンドを定期的に実施してください。
# yum update
以上です。
セキュリティの設定はここに挙げているもの以外に、sshのポート変更やiptablesの設定などがあります。必要に応じて設定するとよいでしょう。
認識誤りや「これも行った方がいい」という項目があればどこかでつぶやいてください。
- メール送信で「smtp-source: fatal: connect: Connection refused」となる場合の対処
- Apache+mod_proxy+PSGIでMovable TYpeを利用する方法
- さくらVPSにCPANをインストールする方法
- Movable TypeのPSGI環境で503エラーになる場合の対処
- さくらのVPSでrootパスワードを忘れたときの対処
- さくらVPS:NTPの脆弱性を利用したDDoS攻撃対策のまとめ
- さくらVPS(その8:ImageMagickとPerlMagickのインストール)
- さくらVPS(その7:phpMyAdminのインストール)
- さくらVPS(その6:Remiを使ったPHPの最新バージョンのインストール)
- さくらVPS(その5:MySQLのインストールと起動)
- さくらVPS(その4:Apacheのインストールと起動)
- さくらVPS(その2:TeraTerm Menuで自動ログイン)
- さくらVPS(その1:コントロールパネル・サーバ起動・ログイン)