さくらの VPS を使ってみる
色々と便利に使えるかと思ってさくらの VPS を契約した。 プランは 1 core 512 MB を選択した。大量のファイルを置くことも考えてストレージは HDD 100 GB を選んだ。 リージョンは東京と石狩が選べたが、まあ東京にしておけばいいだろうと思った。ちなみに料金は月額で 685 円ですごく安い。
ソフトウェアをインストールする前に、セキュリティ上で重要な設定を行う必要があるのだが、その手順は公式マニュアルとして整備されている。
この記事では公式マニュアルの内容をまとめる。
最低限の設定
サーバの起動・ログイン
サーバの起動は 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 ...
以上で最低限の設定は完了した。