ページ

2014/07/15

さくらのVPS初期設定[SSH接続設定/ユーザ追加/公開鍵認証/iptables]

2014年も半年が過ぎ、今年の目標のイテレーションを回そうと思ったら
思いのほか何もやっていない感があったので
何かやらねば、と思い、タスク管理がしたかったので Redmine を動かすために
去る7月1日にさくらのVPSを借りてみました。

さくらのVPSを借りる

HDD プランのメモリ 1G のやつを借りました。
月額約1000円、年間1万円ちょっとで自由に使えるサーバがあるなんて最高な気分です。
どうせなので2週間無料お試しで借りました。
スペックは 料金・サービス仕様 | VPS(仮想専用サーバ)は「さくらのVPS」
OS は CentOS6 x86_64 の標準 OS です。
アカウント登録とクレカ登録などを済ませてちょっとしたら「お申込受付完了のお知らせ」、
その10分後くらいに「[さくらのVPS] 仮登録完了のお知らせ」のメールが届きました。

たしか仮登録完了のお知らせが来るまで何もできないです。

用語定義

USER
サーバの作業ユーザ名
IP.ADD.RE.SS
サーバの IP アドレス
PORT
変更した SSH のポート番号
%
Mac でのコマンド
$
サーバのコマンド
#
コメント

VPS を起動する

さくらインターネットVPSコントロールパネルで仮想サーバ操作の起動ボタンを押します。
Updating RPMS on system: で結構待たされるのでエラーかと思いますが、ひたすら待ちます。
参考: さくらのVPSの初回起動時に応答が無くなるように見えるけど、気長に待つ | ただのにっき。

ここから先は さくらのVPSで最初にやっておくこと - 飲んだり寝たり を参考にした。

VPS に接続する

Mac の Terminal からいつものように SSH 接続。IP アドレスとパスワードは仮登録のメールにある。
ssh root@IP.ADD.RE.SS

root パスワードの変更

passwd
# パスワード入力
セキュリティ対策。

SSH のポートを変更する

# 設定ファイルのバックアップ
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
vi /etc/ssh/sshd_config
-Port 22
+Port PORT
セキュリティ対策:サーバの 22 番ポートを調べて脆弱性がないか確認するポートスキャンという手法対策。
10022 に変える記述が多いけど 10022 に変えるのがデファクトスタンダードになったら
10022 にもポートスキャンしてくるんじゃないかなーと思ったり。
49513 〜 65535 が自由に使えるダイナミックポート/プライベートポートと呼ばれるポートらしいので
僕はその間のポートにしました。
参考: ポート番号は何番を使えばいいのか教えて下さい - ポート開放ナビ
SSH 接続設定の再読み込み
/etc/rc.d/init.d/sshd reload
Command + T で Terminal のタブを増やして動作確認(元のタブは万が一のために閉じない)
ssh -p PORT root@IP.ADD.RE.SS
# 変更したパスワードを入力

作業用ユーザの追加と設定

作業用ユーザの追加

useradd USER
passwd USER
# パスワード入力
USER: ユーザ名
以降、root ユーザでは接続せず、作業用ユーザで接続する。
必要のある場合のみ sudo su - で root になる。

root ユーザでのログイン禁止

sudo vi /etc/ssh/sshd_config
#PermitRootLogin yes 
PermitRootLogin no

sudo の設定

sudo が使える wheel グループに追加する
usermod -G wheel USER
参考
「wheelグループ」とは:ITpro
[Linux] なぜ sudo する権限のあるグループが「 wheel 」という名前なのか « Codaholic
wheel が sudo を使えるようにする
visudo
## Allows people in group wheel to run all commands
-# %wheel  ALL=(ALL)       ALL
+%wheel  ALL=(ALL)       ALL

SSH 接続方式を公開鍵認証方式に変更

Mac でキーペア(秘密鍵, 公開鍵)の生成

ssh-keygen -t rsa
ssh-add ~/.ssh/id_rsa

公開鍵をサーバーに転送

scp -P PORT ~/.ssh/id_rsa.pub USER@IP.ADD.RE.SS:~/

公開鍵を登録する

ssh -p PORT USER@IP.ADD.RE.SS
mkdir ~/.ssh
chmod 700 ~/.ssh
mv id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

パスワード認証の無効化

sudo vi /etc/ssh/sshd_config
-PasswordAuthentication yes 
+PasswordAuthentication no
sudo service sshd restart
# 問題がなければ [OK] と表示される

接続の確認

ssh -p PORT USER@IP.ADD.RE.SS
# ログイン出来る(パスワードが聞かれない)
ssh -p PORT root@IP.ADD.RE.SS
ログイン出来ない

SSH 接続の簡略化

vi ~/.ssh/config
HOST ALIAS
    HostName IP.ADD.RE.SS
    Port PORT
    User USER
    identityfile ~/.ssh/id_rsa
ssh ALIAS
エイリアスで SSH 接続できるので便利です。
参考: .ssh/configで設定すると接続が楽になる方法 - Qiita

iptables (Firewall)の設定

参考
俺史上最強のiptablesをさらす - Qiita
さくらVPS/Cent OS 6.4 iptableの設定[Railsサーバへの道][セキュリティ] - 酒と泪とRubyとRailsと
iptablesでパケットフィルタリングするための設定 - 飲んだり寝たり
sudo mkdir /root/bin/
sudo vim /root/bin/iptables.sh
wada811/iptables.sh
sudo sh /root/bin/iptables.sh
sudo iptables -L
sudo chkconfig iptables on
# OS起動時にiptablesを起動するようにする
chkconfig --list iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
# 3:on になっていれば OK

設定完了

とりあえず必須な初期設定はこれで完了だと思います。
必ずコレはやっておけみたいなのとか、間違ってるとか、もっとこうした方が良いとかあればコメント下さい。