さくらの VPS を使ってみる

色々と便利に使えるかと思ってさくらの VPS を契約した。 プランは 1 core 512 MB を選択した。大量のファイルを置くことも考えてストレージは HDD 100 GB を選んだ。 リージョンは東京と石狩が選べたが、まあ東京にしておけばいいだろうと思った。ちなみに料金は月額で 685 円ですごく安い。

ソフトウェアをインストールする前に、セキュリティ上で重要な設定を行う必要があるのだが、その手順は公式マニュアルとして整備されている。

help.sakura.ad.jp

この記事では公式マニュアルの内容をまとめる。

最低限の設定

サーバの起動・ログイン

サーバの起動は Web 上でポチポチやると簡単にできる。まずは root でログインするのだが、初回起動時はログインできるようになるまで(数時間?)少し時間がかかった。 ちなみに root のパスワードは登録後すぐにメールで送られてくる。 ローカルから

local$ ssh root@xxx.xxx.xxx.xxx

とやって VPS にログインする。

root パスワードの変更

標題の通り。

# passwd

ユーザーの追加

# useradd hoge
# passwd hoge

ユーザー hoge を sudoer に加えて、sudo できるようにする。 そのためには、hoge を wheel グループに属させる必要がある。

# usermod -G wheel hoge
# visudo

visudo で何をするかというと

# %wheel ALL=(ALL) ALL 

の行のコメントアウトを外す。

local$ ssh hoge@xxx.xxx.xxx.xxx

でログインできることを確かめる。念のため sudo が使えることを確かめておく。例えば以下のようにやってみる。

$ sudo shutdown -h now

SSH 周りの設定

まずは、公開鍵認証のために鍵ペアをローカルでつくる。

local$ ssh-keygen -t rsa

出来上がった id_rsa の中身(ssh-rsa ******* みたいなやつ)を VPS 上の authorized_keys にコピペする。

$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh
$ echo ssh-rsa ******* > authorized_keys
$ chmod 600 authorized_keys 

sshd_config 以下のように書き換える。

  • ポート番号を 22 以外に変更
  • root ログイン禁止
  • パスワード認証禁止
$ sudo vi /etc/ssh/sshd_config
...
#Port22 
...
#PermitRootLogin yes
...
PasswordAuthentication yes
...

これを

...
Port50022 
...
PermitRootLogin no
...
PasswordAuthentication no
...

のように書き換えた。リロードして設定完了。

$ sudo /etc/rc.d/init.d/sshd reload

パッケージのアップデート

ものの数秒で終了した。

$ sudo yum update

ファイアーウォールの設定

HTTP(S) と SSH だけ開けておいた。iptables -A INPUT -p tcp -m tcp --dport 50022 -j ACCEPT を忘れると詰む。

$ su -
# iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -p icmp -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 50022 -j ACCEPT
# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -P INPUT DROP
# iptables -P OUTPUT ACCEPT
# service iptables save
# cat /etc/sysconfig/iptables
...
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:528]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP 
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP 
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 50022 -j ACCEPT 
COMMIT
...

以上で最低限の設定は完了した。