<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>さくらたんどっとびーず &#187; さくらの VPS</title>
	<atom:link href="http://sakuratan.biz/archives/tag/%e3%81%95%e3%81%8f%e3%82%89%e3%81%ae-vps/feed" rel="self" type="application/rss+xml" />
	<link>http://sakuratan.biz</link>
	<description>モロモロ工事中です</description>
	<lastBuildDate>Sun, 25 Jun 2023 12:51:51 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>さくらの VPS の設定ダダ流し</title>
		<link>http://sakuratan.biz/archives/2492</link>
		<comments>http://sakuratan.biz/archives/2492#comments</comments>
		<pubDate>Sun, 08 Aug 2010 08:37:15 +0000</pubDate>
		<dc:creator>さくら</dc:creator>
				<category><![CDATA[開発環境]]></category>
		<category><![CDATA[さくらの VPS]]></category>

		<guid isPermaLink="false">http://sakuratan.biz/?p=2492</guid>
		<description><![CDATA[さくらインターネットの VPS ベータ版に申し込んだのですが、このままだと放置したままベータテストが終わっちゃうような気がしたので、サーバの設定するついでにメモ残すことにしました。とりあえず用途が決まってないので思いついた順で作業してます。ということでダダ流しっすw やった作業は、パケットフィルタ（iptables）の設定、Apache2 のインスコと設定、Python-2.6.5 をソースからイ... <div style="margin-top:1ex"><a href="http://sakuratan.biz/archives/2492">(続きを読む)</a></div>]]></description>
			<content:encoded><![CDATA[<p>さくらインターネットの VPS ベータ版に申し込んだのですが、このままだと放置したままベータテストが終わっちゃうような気がしたので、サーバの設定するついでにメモ残すことにしました。とりあえず用途が決まってないので思いついた順で作業してます。ということでダダ流しっすw</p>
<p>やった作業は、パケットフィルタ（iptables）の設定、Apache2 のインスコと設定、Python-2.6.5 をソースからインスコ、PHP-5.2.14 をソースからインスコ、とそれに付随する作業です。</p>
<h3>1. まずぶっ壊れたときにどうしたら良いか調べる</h3>
<p>VPS とか言っても、普通に全権限があるリモートサーバですので、設定とか間違ったときにどこまで対処できるか調べとかないと色々まずいす。</p>
<p>とりあえずさくらインターネットから来たメールには、</p>
<blockquote><p>
《VPSコントロールパネルについて》</p>
<p>  VPSコントロールパネルでは、仮想サーバのリセットやリモート<br />
  コンソールでの接続、OSの再インストールを行っていただけます。</p>
<p>  VPSコントロールパネルは、会員メニュー内リンクからご利用いただけます。
</p></blockquote>
<p>とか書いてあるんですが、会員メニューが重いのもあって VPS コントロールパネルにたどり着くのにちょいちょい時間がかかってしまいましたが、[会員メニュー]→[契約情報]→[無料サービスの確認]から開けます。契約したら有料サービスの確認に移るんでしょうけど。</p>
<p><a href="http://sakuratan.biz/blog/wp-content/uploads/2010/08/sakuravps.jpg"><img src="http://sakuratan.biz/blog/wp-content/uploads/2010/08/sakuravps-300x170.jpg" alt="" title="VPS コントロールパネル" width="300" height="170" class="alignnone size-medium wp-image-2493" /></a></p>
<p>VPS コンパネはさくらのデフォルトで激重です。普通の鯖のコンパネと違ってちょっと今風デザインになってますが、ぶっちゃけ微妙な感じす。まあコンパネなんでデザインとかどうでもいいすが。</p>
<p>サイドメニューからリモートコンソールを選ぶとシリアル接続でサーバにログインできますので、なんか設定に失敗して ssh とかで外部からログインできなくなったときはここから直せます。ほんでもダメなら最悪 OS の再インストールからやり直すことになります。</p>
<h3>2. ログイン用ユーザーを作って ssh から root ログインできなくする</h3>
<p>root ログインできるままですとクラッキングの良い対象になりますので、外からログインする用のユーザーを作ります。</p>
<pre>
# useradd -m USER
# passwd USER
</pre>
<p>実際にコマンド入力するときは、USER 部分をユーザー名にしてください。</p>
<p>ユーザーを追加したら、そのユーザーで外部から ssh でログインできるか確認します。ログインできたら root で外部からログインできなくします。/etc/ssh/sshd_config に以下の設定を加えます。</p>
<pre>
PermitRootLogin no
</pre>
<p>コメントアウトされた PermitRootLogin が元からありますのでその辺に追加します。追加したら sshd をリスタートします。</p>
<pre>
# cd /etc/init.d/sshd restart
</pre>
<p>リスタートした時点で root で ssh にログインすることはできなくなりますので、設定漏れとかパスワードちゃんと控えたかとか確認してからリスタートした方が無難です。</p>
<p>後から設定間違ってたとか気づいたら VPS コンパネから root でログインしてください。（コンパネは ssh じゃありませんので、ここまでした設定には影響されません。）</p>
<p>ちなみにログイン用ユーザー作っただけですとセキュリティ的にはちょっと弱いですので、もっとセキュアにしたい方は ssh のパスワード認証を無効にして秘密鍵認証のみ有効にした方が良いと思います。説明面倒くさいのでその辺については割愛しますが、興味ある人は ggrks です。</p>
<p>最後に sudo 経由で root としてコマンド実行できるようにします。まず /etc/sudores の以下の行がコメントアウトされていると思いますので、コメント（#）を外します。visudo コマンドは入ってないっぽいので直接 vi で編集です。</p>
<pre>
%wheel  ALL=(ALL)       ALL
</pre>
<p>んでから /etc/group を開いて wheel グループに追加したユーザーを足します。usermod コマンドとかでいじくってもいいですが面倒なのでこっちも vi で直接編集しますた。</p>
<pre>
wheel:x:10:root,USER
</pre>
<p>なお以下の説明では、通常ユーザーでの作業のプロンプトを $、root での作業を # で書いています。前後に su とか sudo 入れて書いてませんが、実際にコマンド実行する時は必要ですのであしからず。</p>
<h3>3. パケットフィルタを設定する</h3>
<p>不要な攻撃受けたく無いのでパケットフィルタを設定します。（今んとこ大したデータ置くつもりも無いのでそんなセキュアにするつもりないですが一応。）</p>
<p>まず root でログインして（ログイン用ユーザーでログインしてから root に su して）、iptables コマンドでパケットフィルタの状態を確認します。デフォルトだとこんな感じになってると思います。</p>
<pre>
# 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
</pre>
<p>今回のサーバは Web サーバとしてしか使うつもり無いので、パケットフィルタで 22番 (ssh) と 80番 (http) 以外のポートは外からは閉じます。（ssl を使う場合は 443 番ポートも開ける必要があります。）</p>
<p>まず iptables 初期化用のスクリプトを作ります。</p>
<pre>
#!/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
</pre>
<p>このスクリプトでは icmp パケットに応答しないように設定しています。ping 通したい人はコメントアウトしてるそれ用に設定してください。</p>
<p>スクリプトができたらおもむろに実行します。スクリプトとして実行しないと（上のスクリプトを全部直接コマンド入力した場合） iptables -P INPUT DROP を実行した時点でサーバへの入力がすべてパケットフィルタにひっかかっちゃってにっちもさっちもいかなくなりますのでご注意ください。</p>
<p>とりあえず上のスクリプトを iptables-init.sh として保存したということで話を進めます。スクリプトに続けて iptables -L を実行し、パケットフィルタの状態を確認します。</p>
<pre>
# 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
</pre>
<p>確認できたら、現在のフィルタがシステムリブート時に同じ設定で有効になるように iptables-save コマンドを使って /etc/sysconfig/iptables に保存します。</p>
<pre>
# iptables-save > /etc/sysconfig/iptables
</pre>
<p>保存したら、保存した内容でパケットフィルタが有効になるように iptables スクリプトをリスタートします。</p>
<pre>
# /etc/rc.d/init.d/iptables restart
</pre>
<p>最後に chkconfig でリブート時に iptables が起動するように設定します。（たぶんこの設定はデフォルトで有効になってると思うんですが、作業始める前にその辺確認するの忘れてたのでよく分かりません＞＜暇だったら自分で調べてね、とw）</p>
<pre>
# chkconfig --level 2345 iptables on
</pre>
<h3>4. Apache2 をインスコする</h3>
<p>まず yum で Apache がインスコ済みか確認します。</p>
<pre>
# yum list installed | httpd
</pre>
<p>何も表示されんと思います。表示されたらインスコ済みです。yum list でインストール可能なパッケージの一覧表示、yum list installed でインストール済みのパッケージ一覧表示です。</p>
<p>インスコされてない前提で話進めます。</p>
<pre>
# yum install httpd.x86_64
</pre>
<p>で、インスコされました。Apache を動かします。</p>
<pre>
# /etc/rc.d/init.d/httpd start
</pre>
<p>ブラウザから IP アドレス指定で VPS にアクセスすると Apache 2 Test Page が表示されると思います。</p>
<p>表示できるのを確認したら、リブート時に起動するように chkconfig します。</p>
<pre>
chkconfig --level 345 httpd on
</pre>
<h3>5. Python-2.6 をインスコする</h3>
<p>とりあえずポックンは Pythonistan なので Python 入れます。</p>
<p>元から Python は入っているのですが、バージョン 2.4.3 とか使い物にならんぐらい古い感じなので（だから Cent OS 嫌いやねん(*´・ω・)(・ω・｀*)ﾌﾞｰ） Python-2.6 をソースからビルドしてインスコします。（stable は 2.7 なんすが、テスト環境と合わんのでw）</p>
<p>まずソースを wget でダウンロードします。</p>
<pre>
$ wget 'http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tgz'
</pre>
<p>てけとーにビルドします。特に問題無く終わると思います。</p>
<pre>
$ tar xvzf Python-2.6.5.tgz
$ ./configure
$ make
# make install
</pre>
<p>で、/usr/local/bin/python に 2.6 がインスコされます。あとで mod_python 入れる予定ですが今日はパスしますたw</p>
<h3>6. PHP をインスコする</h3>
<p>あった方が便利なので PHP もインスコします。yum からインスコしても良いのですが、バージョン古いので Python と同じくソースからインスコします。なお PHP はデフォルトでは入っていません。</p>
<p>ということでソースをダウンロードします。</p>
<pre>
$ wget 'http://www.php.net/distributions/php-5.2.14.tar.gz'
</pre>
<p>当然 Apache の SAPI として動かしますので、apxs が入ってるか先に調べます。</p>
<pre>
$ ls /usr/sbin/apxs*
ls: /usr/sbin/apxs*: No such file or directory
</pre>
<p>無さそうですので先に httpd-devel をインスコします。</p>
<pre>
# yum install httpd-devel.x86_64
</pre>
<p>ビルドします。</p>
<pre>
$ 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.
</pre>
<p>おおっとエラーだ。インド人を右に！！</p>
<p>とりあえず libxml2 が無いっぽいので、libxml2-devel.x86_64 をインスコします。</p>
<pre>
# yum install libxml2-devel.x86_64
</pre>
<p>再度 php の configure を実行します。</p>
<pre>
$ ./configure --with-apxs2=/usr/sbin/apxs
...
Thank you for using PHP.
</pre>
<p>おkのようですのでビルドしてからインスコします。</p>
<pre>
$ make
# make install
</pre>
<p>SAPI モジュールは /usr/lib64/httpd/modules/libphp5.so にインスコされます。/etc/httpd/conf/httpd.conf はインスコ時にかってに更新されますので Apache をリブートしたら有効になります。</p>
<pre>
# /etc/rc.d/init.d/httpd restart
</pre>
<p>なんか PHP のモジュールが色々足らん気もしますが、その辺は適当に足してください。</p>
<p>おしまい</p>
]]></content:encoded>
			<wfw:commentRss>http://sakuratan.biz/archives/2492/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
