こんにちは、視力が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のインストールについてまとめたいと思います。