さんまがおいしい季節だねー(´・ω・`)

さくらの VPS の設定ダダ流し

開発環境 — タグ: — さくら @ 2010/08/08 17:37

さくらインターネットの VPS ベータ版に申し込んだのですが、このままだと放置したままベータテストが終わっちゃうような気がしたので、サーバの設定するついでにメモ残すことにしました。とりあえず用途が決まってないので思いついた順で作業してます。ということでダダ流しっすw

やった作業は、パケットフィルタ(iptables)の設定、Apache2 のインスコと設定、Python-2.6.5 をソースからインスコ、PHP-5.2.14 をソースからインスコ、とそれに付随する作業です。

1. まずぶっ壊れたときにどうしたら良いか調べる

VPS とか言っても、普通に全権限があるリモートサーバですので、設定とか間違ったときにどこまで対処できるか調べとかないと色々まずいす。

とりあえずさくらインターネットから来たメールには、

《VPSコントロールパネルについて》

VPSコントロールパネルでは、仮想サーバのリセットやリモート
コンソールでの接続、OSの再インストールを行っていただけます。

VPSコントロールパネルは、会員メニュー内リンクからご利用いただけます。

とか書いてあるんですが、会員メニューが重いのもあって VPS コントロールパネルにたどり着くのにちょいちょい時間がかかってしまいましたが、[会員メニュー]→[契約情報]→[無料サービスの確認]から開けます。契約したら有料サービスの確認に移るんでしょうけど。

VPS コンパネはさくらのデフォルトで激重です。普通の鯖のコンパネと違ってちょっと今風デザインになってますが、ぶっちゃけ微妙な感じす。まあコンパネなんでデザインとかどうでもいいすが。

サイドメニューからリモートコンソールを選ぶとシリアル接続でサーバにログインできますので、なんか設定に失敗して ssh とかで外部からログインできなくなったときはここから直せます。ほんでもダメなら最悪 OS の再インストールからやり直すことになります。

2. ログイン用ユーザーを作って ssh から root ログインできなくする

root ログインできるままですとクラッキングの良い対象になりますので、外からログインする用のユーザーを作ります。

# useradd -m USER
# passwd USER

実際にコマンド入力するときは、USER 部分をユーザー名にしてください。

ユーザーを追加したら、そのユーザーで外部から ssh でログインできるか確認します。ログインできたら root で外部からログインできなくします。/etc/ssh/sshd_config に以下の設定を加えます。

PermitRootLogin no

コメントアウトされた PermitRootLogin が元からありますのでその辺に追加します。追加したら sshd をリスタートします。

# cd /etc/init.d/sshd restart

リスタートした時点で root で ssh にログインすることはできなくなりますので、設定漏れとかパスワードちゃんと控えたかとか確認してからリスタートした方が無難です。

後から設定間違ってたとか気づいたら VPS コンパネから root でログインしてください。(コンパネは ssh じゃありませんので、ここまでした設定には影響されません。)

ちなみにログイン用ユーザー作っただけですとセキュリティ的にはちょっと弱いですので、もっとセキュアにしたい方は ssh のパスワード認証を無効にして秘密鍵認証のみ有効にした方が良いと思います。説明面倒くさいのでその辺については割愛しますが、興味ある人は ggrks です。

最後に sudo 経由で root としてコマンド実行できるようにします。まず /etc/sudores の以下の行がコメントアウトされていると思いますので、コメント(#)を外します。visudo コマンドは入ってないっぽいので直接 vi で編集です。

%wheel  ALL=(ALL)       ALL

んでから /etc/group を開いて wheel グループに追加したユーザーを足します。usermod コマンドとかでいじくってもいいですが面倒なのでこっちも vi で直接編集しますた。

wheel:x:10:root,USER

なお以下の説明では、通常ユーザーでの作業のプロンプトを $、root での作業を # で書いています。前後に su とか sudo 入れて書いてませんが、実際にコマンド実行する時は必要ですのであしからず。

3. パケットフィルタを設定する

不要な攻撃受けたく無いのでパケットフィルタを設定します。(今んとこ大したデータ置くつもりも無いのでそんなセキュアにするつもりないですが一応。)

まず root でログインして(ログイン用ユーザーでログインしてから root に su して)、iptables コマンドでパケットフィルタの状態を確認します。デフォルトだとこんな感じになってると思います。

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

今回のサーバは Web サーバとしてしか使うつもり無いので、パケットフィルタで 22番 (ssh) と 80番 (http) 以外のポートは外からは閉じます。(ssl を使う場合は 443 番ポートも開ける必要があります。)

まず iptables 初期化用のスクリプトを作ります。

#!/bin/sh

iptables -F
iptables -X

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP

# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

このスクリプトでは icmp パケットに応答しないように設定しています。ping 通したい人はコメントアウトしてるそれ用に設定してください。

スクリプトができたらおもむろに実行します。スクリプトとして実行しないと(上のスクリプトを全部直接コマンド入力した場合) iptables -P INPUT DROP を実行した時点でサーバへの入力がすべてパケットフィルタにひっかかっちゃってにっちもさっちもいかなくなりますのでご注意ください。

とりあえず上のスクリプトを iptables-init.sh として保存したということで話を進めます。スクリプトに続けて iptables -L を実行し、パケットフィルタの状態を確認します。

# sh iptables-init.sh
# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
DROP       all  --  10.0.0.0/8           anywhere
DROP       all  --  172.16.0.0/12        anywhere
DROP       all  --  192.168.0.0/16       anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

確認できたら、現在のフィルタがシステムリブート時に同じ設定で有効になるように iptables-save コマンドを使って /etc/sysconfig/iptables に保存します。

# iptables-save > /etc/sysconfig/iptables

保存したら、保存した内容でパケットフィルタが有効になるように iptables スクリプトをリスタートします。

# /etc/rc.d/init.d/iptables restart

最後に chkconfig でリブート時に iptables が起動するように設定します。(たぶんこの設定はデフォルトで有効になってると思うんですが、作業始める前にその辺確認するの忘れてたのでよく分かりません><暇だったら自分で調べてね、とw)

# chkconfig --level 2345 iptables on

4. Apache2 をインスコする

まず yum で Apache がインスコ済みか確認します。

# yum list installed | httpd

何も表示されんと思います。表示されたらインスコ済みです。yum list でインストール可能なパッケージの一覧表示、yum list installed でインストール済みのパッケージ一覧表示です。

インスコされてない前提で話進めます。

# yum install httpd.x86_64

で、インスコされました。Apache を動かします。

# /etc/rc.d/init.d/httpd start

ブラウザから IP アドレス指定で VPS にアクセスすると Apache 2 Test Page が表示されると思います。

表示できるのを確認したら、リブート時に起動するように chkconfig します。

chkconfig --level 345 httpd on

5. Python-2.6 をインスコする

とりあえずポックンは Pythonistan なので Python 入れます。

元から Python は入っているのですが、バージョン 2.4.3 とか使い物にならんぐらい古い感じなので(だから Cent OS 嫌いやねん(*´・ω・)(・ω・`*)ブー) Python-2.6 をソースからビルドしてインスコします。(stable は 2.7 なんすが、テスト環境と合わんのでw)

まずソースを wget でダウンロードします。

$ wget 'http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tgz'

てけとーにビルドします。特に問題無く終わると思います。

$ tar xvzf Python-2.6.5.tgz
$ ./configure
$ make
# make install

で、/usr/local/bin/python に 2.6 がインスコされます。あとで mod_python 入れる予定ですが今日はパスしますたw

6. PHP をインスコする

あった方が便利なので PHP もインスコします。yum からインスコしても良いのですが、バージョン古いので Python と同じくソースからインスコします。なお PHP はデフォルトでは入っていません。

ということでソースをダウンロードします。

$ wget 'http://www.php.net/distributions/php-5.2.14.tar.gz'

当然 Apache の SAPI として動かしますので、apxs が入ってるか先に調べます。

$ ls /usr/sbin/apxs*
ls: /usr/sbin/apxs*: No such file or directory

無さそうですので先に httpd-devel をインスコします。

# yum install httpd-devel.x86_64

ビルドします。

$ tar xvzf php-5.2.14.tar.gz
$ cd php-5.2.14
$ ./configure --with-apxs2=/usr/sbin/apxs
...
configure: error: xml2-config not found. Please check your libxml2 installation.

おおっとエラーだ。インド人を右に!!

とりあえず libxml2 が無いっぽいので、libxml2-devel.x86_64 をインスコします。

# yum install libxml2-devel.x86_64

再度 php の configure を実行します。

$ ./configure --with-apxs2=/usr/sbin/apxs
...
Thank you for using PHP.

おkのようですのでビルドしてからインスコします。

$ make
# make install

SAPI モジュールは /usr/lib64/httpd/modules/libphp5.so にインスコされます。/etc/httpd/conf/httpd.conf はインスコ時にかってに更新されますので Apache をリブートしたら有効になります。

# /etc/rc.d/init.d/httpd restart

なんか PHP のモジュールが色々足らん気もしますが、その辺は適当に足してください。

おしまい

7件のコメント »

  1. [...] – さくらインターネット創業日記 さくらの VPS の設定ダダ流し – ゆっくり…して…イってネ! CentOS 5.3 に php-5.2.9, mysql-5.1.35 をインストール(remi レポジットリより) [...]

    ピンバック by Memo: Setup LAMP for SakuraVPS | shibomb — 2010 年 8 月 16 日 @ 22:48
  2. さくらのVPSの設定方法をかなり詳しく解説しているサイト。

    自分はApacheのインストール方法で終わってしまったさくらのVPSの設定方法。 Apacheのインストール方法どころか、iptablesの設定、PHPのインストール、MYSQLのインストールまで親切丁寧に解説…

    トラックバック by とりあえず9JP? — 2010 年 8 月 23 日 @ 13:38
  3. さくらのVPSの設定方法をかなり詳しく解説しているサイト。

    自分はApacheのインストール方法で終わってしまったさくらのVPSの設定方法。 Apacheのインストール方法どころか、iptablesの設定、PHPのインストール、MYSQLのインストールまで親切丁寧に解説…

    トラックバック by とりあえず9JP? — 2010 年 8 月 23 日 @ 13:38
  4. さくらのVPS 設定ガイドリンク集 厳選140 \(初心者歓迎)/

    さくらのVPSでWebサーバを構築するのに、参考にしたページをまとめました。
    相違点を比較検討することによって、標準的な作業手順を洗い出すのに役立ちました。
    情報を公開、提供し…

    トラックバック by 浜村拓夫の世界 — 2011 年 2 月 22 日 @ 01:00
  5. [...] さくらのVPSの設定ダダ流し さくらたんどっとびーず さくらの格安VPSを借りたらいつもやっている設定いろいろ IDEA*IDEA CentOSをサーバーとして活用するための基本的な設定 さくらインタ [...]

  6. Hi there, I found your blog by means of Google at the same time
    as looking for a related matter, your web site came up,
    it appears to be like good. I have bookmarked it in my google bookmarks.

    Hello there, simply was alert to your blog thru Google, and located that it’s truly informative.
    I am gonna be careful for brussels. I will be grateful in case
    you continue this in future. Numerous folks might be
    benefited from your writing. Cheers!

    Also visit my web blog – UGG サンダル 豪華

    コメント by UGG サンダル 豪華 — 2013 年 10 月 29 日 @ 23:23
  7. fantastic put up, very informative. I’m wondering why the opposite experts of this sector don’t understand this.
    You must continue your writing. I am confident, you
    have a great readers’ base already!

    コメント by grilling charcoal companion — 2015 年 5 月 13 日 @ 15:34

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2017 さくらたんどっとびーず | powered by WordPress with Barecity