サーバーコストの節約という事で専用サーバ+共用レンタルの構成をVPS2台にしようとお試しで1台借りてみました。
さくらのVPS|VPS(仮想専用サーバ)はさくらインターネット
早速ですが最初はrootユーザしか無いためセキュリティ関連の設定を行います。ちょっと変則的かも知れないかもしれませんが一例として。
まずはroot権限に昇格できる作業ユーザを作成します。俺ルールとしてはこのユーザでメールやウェブは使わないようにしています。ここでは名称をworkuserとして書きますが、実際に作業ユーザを作成する場合は辞書にヒットするような名称は避けましょう。
作業ユーザの作成
# useradd workuser
パスワードの設定
# passwd workuser
ユーザグループの変更(wheelグループに所属させる)
# usermod -g wheel workuser
# usermod -G wheel,workuser workuser
SSHのログイン方法ですがVPSなら運用上SSHログインするユーザは狭い範囲で限定されることが多いと思いますのでクライアント認証の方式にします。
ユーザ用のキーペアを作成しておく
※今回はteratermの機能で作成
メニュー[設定]-[SSHキー作成]
作成した公開鍵をログインするユーザの~/.ssh/authorized_keysに保存
workuserに切り替え
# su – workuser
.sshディレクトリの作成とパーミッションの設定
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
authorized_keysを新規編集
$ vi ~/.ssh/authorized_keys
クライアントからSCP等で公開鍵をアップロードしても良いのですが、ターミナル上でコピペでも行けるので最初のユーザの場合等はそうしています。あと面倒だからってサーバーでキーペアを作成して秘密鍵をダウンロードするというのはセキュリティ運用上悪いので避けてください。
authorized_keysもパーミッションを適正値に修正します。グループやその他に権限があるとログインできなくなりますので後で慌てる事のないよう必ずチェックしてください。
$ chmod 600 ~/.ssh/authorized_keys
workuserから脱出
$ logout
ここでrootユーザに戻っているはず
次にsshdのログイン方法の設定変更をします。
まずは/etc/ssh/sshd_configの編集
# vi /etc/ssh/sshd_config
以下3行をnoに変更
PermitRootLogin no
PasswordAuthentication no
UsePAM no
1行目はrootでのSSHログインを無効、2行目はパスワード認証を無効、3行目はPAMを無効(多分パスワード認証で使っているものだから不要ということで無効なのかな?)
設定修正が終わったらsshdを再起動します。serviceコマンドでもOK。
# /etc/init.d/sshd restart
次にsuコマンドでrootに成れるユーザの制限をします。
suコマンドの制限
/etc/pam.d/suの下記のコメントを外す
auth sufficient pam_wheel.so trust use_uid
auth required pam_wheel.so use_uid
サーバー再起動
shutdown -r now
作業ユーザでクライアント認証ログインし、さらに
su – でrootに成れるところまで確認する。
一応作業ユーザ以外にもユーザを作ってみてwheelグループに属していない場合はsuコマンドでのユーザ切り替えができないことを確認する。
さくらのVPSの場合は管理画面にシリアル接続のターミナルがあるのでログインできなくなったらそこから設定の見直しをする。
鍵の管理は厳重に取り扱う
root自体のパスワードを無効化した時やroot権限を使う場合でもrootのパスワードを利用したくない場合はsudoの利用設定をします。sudoもwheelグループだけ使えるように制限します。
visudo コマンドでsudoの許可制限
# visudo
以下1行のコメントを外します
%wheel ALL=(ALL) ALL
続きは次回に
参考:
yukotan hour: CentOSで特定のユーザがsuでrootに昇格できるよう設定する
myfinder’s blog: さくらのVPSを借りたら真っ先にやるべきssh設定