お金がない!?さくらVPSなら月額980円でYahoo砲にも耐えちゃうよ!(サーバ構築 1/3)

Movable Type Web制作 開発環境

こんにちは、視力が0.03未満の及川です。

仕事では、主にWeb制作、システム開発、サーバ管理など、フロントエンドからバックエンドまで広く広ーくをモットーに業務を行なっています。
どうぞよろしくお願いします。

クラウドといえばAWSですが、さほど規模の大きくもないWebサイトであればやはりさくらVPSがコスパ最強です。
しかも石狩のデータセンターは室内温度の調整が必要なく、エアコンいらずで光熱費が安いらしいので尚お得です。

Yahoo砲を受けても512MBの980円/月のプランでさえ耐えしのいだ実績もあるようです。
こうしてみるとコスパ最強はさくらVPSだと思えてきませんか?
さくらVPS512で、Yahoo!砲食らっても WordPress を平常運転させるための設定

今回は弊社でもよく利用するさくらVPSの環境構築の手順をまとめてみました。
デフォルトで設定されているCentOS上に、Webサーバ、データベースなど必要なものを1台で用意することを前提としています。

商用CMSでは導入数が最も多い、Movable Type 5.2系の最新版を動作させることをゴールとします。

ユーザーを追加する

はじめにroot以外でログインするためにユーザーを追加します。
任意のSSHクライアントで接続してください。

#ユーザーの追加
$ useradd oikawa

#パスワードの設定
$ passwd oikawa

#所属グループの確認
$ id oikawa
uid=500(oikawa) gid=500(oikawa) groups=500(oikawa)

#グループの追加
$ usermod -G wheel oikawa

作成したユーザーとパスワードでSSH接続を試して、ログインできたらこのステップは完了です。

iptablesでファイアーウォールを設定する

iptablesで不必要なポートへのアクセスを拒否し、必要なポートだけ開放してセキュリティを向上させます。

# reset
$ iptables -F
$ iptables -X

# set OUTPUT,FORWARD policies. After set the INPUT policy
$ iptables -P OUTPUT ACCEPT
$ iptables -P FORWARD DROP

# loopback
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A OUTPUT -o lo -j ACCEPT

# accept packets on the established connectiones
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# accept mainly protcoles
$ iptables -A INPUT -p icmp -j ACCEPT
$ iptables -A INPUT -p tcp -j ACCEPT
$ iptables -A INPUT -p udp -j ACCEPT

# accept ssh
$ iptables -A INPUT -p tcp --dport 12022 -j ACCEPT
$ iptables -A INPUT -p tcp --sport 12022 -j ACCEPT

# accept http
$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ iptables -A INPUT -p tcp --sport 80 -j ACCEPT

# accept https
$ iptables -A INPUT -p tcp --dport 443 -j ACCEPT
$ iptables -A INPUT -p tcp --sport 443 -j ACCEPT

# accept smtp
$ iptables -A INPUT -p tcp --dport 25 -j ACCEPT
$ iptables -A INPUT -p tcp --sport 25 -j ACCEPT

# accept MySQL port
$ iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# drop ssh port
$ iptables -A INPUT -p tcp --dport 22 -j DROP

# Only one syn packet is accepted per 1 second.
$ iptables -A INPUT -i ppp+ -p tcp --syn -m limit --limit 1/s -j ACCEPT
$ iptables -A INPUT -i ppp+ -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# drop others
$ iptables -P INPUT DROP

sshのポート番号を12022に変えています。22番ポートだとデフォルトすぎるので、任意の番号に変えておくことでセキュリティを高めることができます。
あわせてsshの設定ファイルも変更します。このとき、rootユーザーでログインできないようにPermitRootLoginの設定も以下のように変更します。

# sshポート番号を変更
$ vi /etc/ssh/sshd_config
#Port 22
Port 12022

#PermitRootLogin yes
PermitRootLogin without-password

ここで一度、sshdを再起動します。

$ /etc/init.d/sshd restart

変更したポート番号でサーバへSSH接続を試します。もしログインできなくなってしまったら、コントロールパネルから初期化して、最初からやり直すことができます。

秘密鍵・公開鍵認証でなりすまし対策

SSH接続の方法はいくつかありますが、公開鍵を使うことでなりすましやパスワードクラッキングに対するセキュリティをUPすることができます。
秘密鍵と公開鍵のペアを作成してサーバに登録します。

鍵の作成方法はご利用のOSによって異なるのでそれぞれ検索してください。
作成した鍵をサーバ上にアップして次のコマンドにより公開鍵を登録します。

$ mkdir /home/oikawa/.ssh
$ chmod 700 /home/oikawa/.ssh/

$ cat /home/oikawa/oikawa.pub >> /home/oikawa/.ssh/authorized_keys
$ chmod 600 /home/oikawa/.ssh/authorized_keys
$ chown -Rf oikawa:oikawa /home/oikawa

次に、sshdの設定ファイルを変更してパスワード認証を無効にします。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

PasswordAuthentication no

ここでまたsshdを再起動。

$ /etc/init.d/sshd restart

パスワード認証が無効化されているか、秘密鍵でログインできるか、を確認します。
もしうまくいかない場合は、コントロールパネルのコンソールから設定を確認するか、サーバを初期化して最初からやり直します。

だいぶ長くなってきたので次回は、nginxとphpのインストールについてまとめたいと思います。

商品・サービスへのお問い合わせ

ご相談、お見積もりのご依頼など

お問い合せはこちら