新人の君がさくらのVPSを契約したなら

SIerに入社した君がLinuxの勉強をしたいと思うなら、VPSを契約するというのはうってつけだ。さくらインターネットが提供するさくらのVPSの一番安いプランなら月額980円で、自分の思い通りになるネット接続済のLinuxサーバを1台手に入れることが出来る。VPSを提供する会社は国内でも他にいくつかあるので、探してみると良い。何事もGoogle先生に聞いてみるというのは良い習慣だからね。

そもそもVPSって何だろうと疑問に思うだろう。いきなりそんな専門用語を言われても困ってしまう。

VPSというのはVirtual Private Serverの略で、個人的に使用できる仮想のサーバマシンという意味だ。仮想といってもそれはVPSサービスの提供業者の中の話で、僕らが使う分にはふつうの、あの金属の箱で出来たサーバマシンと違いはない。もちろん、僕たちは電源ボタンを押すという感覚や、金属のひんやりした感じを味わうことは出来ないけれども。

VPSとレンタルサーバは何が違うのか

良い質問だ。ネットでは同じようなサービスとしてレンタルサーバが提供されている。さくらインターネットでもさくらのレンタルサーバというサービスがあるし、他にもロリポップなど有名なサービスがいくつもある。VPSとレンタルサーバの違いは決定的で、VPSは仮想とはいえ1台のサーバマシンを独り占めできる。WindowsでいうところのAdministratorであるLinuxのroot権限が与えられるので、何でも出来る。もちろん、他のユーザが入ってくることもない。一方、レンタルサーバはたいていの場合、1台のサーバマシンを複数の人で共有する。root権限はサービス提供業者が持っている。自分に与えられるのは1ユーザとしての権限だけだ。

逆に言えば、レンタルサーバの場合は借りた瞬間にWebサーバが使えるし、メールも使えるし、MySQLのようなデータベースも使える状態になっている。但し、サービス提供業者のお仕着せの設定はそのまま享受しなければならない。一方、VPSは借りた直後は最小構成でOS(さくらのVPSではCentOS5.5。以下の説明ではCentOS5.5を前提とする。)がインストールされただけの状態であることが多い。(少なくとも、さくらのVPSはそうだ。)だから、何をするにも自分で設定しなければならない。一言で言えば自由。別の言葉で言えば面倒。でも、面倒だからこそ勉強になるんだよね。



何はなくともセキュリティ

君がVPSを契約したなら、君はインターネットに公開された、パブリックIPアドレスを持つ1台のサーバマシンのオーナーとなる。まさに一国一城の主だ。但し、君だけのその城は完全に無防備だ。インターネットという荒野では無防備なサーバマシンを探して歩くならず者が闊歩している。君の城が攻撃されて迷惑を被るのが君一人だけなら自業自得で済む。しかし、たいていの場合、ならず者は君の城を使って他の人や組織を攻撃するので、君は多くの人に迷惑をかけることになる。だから、何はなくともセキュリティ対策を講じなければならない。

セキュリティ対策の基本はファイアーウォールだ。Linuxではiptablesというソフトウェアで実現する。とりあえず、さくらのVPSコントロールパネルからリモートコンソールを開いて、rootでログインし、/etc/sysconfig/iptablesというファイルを作ろう。

vi /etc/sysconfig/iptables

viというはLinuxに標準で入っているテキストエディタだが、Windowsのテキストエディタと比べると使い方が独特だ。その辺は、Google先生に聞いてみよう!

iptablesファイルを以下の内容にすればよい。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

iptablesの基本的な機能はポートを開いたり閉じたりすることだ。セキュリティの基本は使わない(公開しない)ポートを閉じること(逆に言えば公開しないといけないポートだけを開く)だ。このマシンが君の目の前に物理的に存在するマシンなら、外部に対してはどのポートも開かないという選択肢があるが、VPSはそういうわけではない。常にVPSコントロールパネルのリモートコンソールだけを使って操作するのなら、何も開かないという選択肢もないわけではないが、それではVPSを使う魅力はゼロだ。だから、最低限SSHだけは開く必要がある。SSHはSecure Shellといって通信路が暗号化された状態で使えるシェルだ。シェルというのはWindowsでいうところのコマンドプロンプトだと思えば良い。

SSHのポートはデフォルトで22番だ。さらにセキュリティを高めるならポート番号を変えてしまうのも手だ。ただ、たとえば21番とかにしてしまうと、FTPのポートのデフォルトと被ってしまうので、1024番よりも大きな数にする必要がある。思い切って1万を超える数字でも構わない。

vi /etc/ssh/sshd_config
Port 10022

SSHのポート番号を変えたなら、/etc/sysconfig/iptablesの22というところを変更し、SSHデーモンを再起動する。

service sshd restart

最後にiptablesデーモンを起動しよう。(既に起動していたらstopする必要がある)

service iptables start(またはstopしてからstart、restartでも良い)

以後の作業は(Windowsなら)puttyやTeraTermなどのSSHクライアントを使ってSSHにログインして行おう。

アップデート!

さくらのVPSでデフォルトで導入されているCentOS5.5は少しバージョンが古い。最新のCentOS5系のバージョンは5.6というのが出ているし、1つ1つのモジュールの単位でアップデートされているものもある。

yum update

rootでログインしてこのコマンドを叩けば、アップデートが行われる。たぶん、CentOSのバージョンも5.5から5.6になると思う。Linuxではセキュリティ対策のためにモジュールのアップデートは頻繁に行われるので、yum updateはこまめに実行する方が良い。

ところで、yumというのはCentOSなどRedHat系のLinuxディストリビューションのためのパッケージ管理ツールの名前だ。君がこれからいろいろなソフトウェアをインストールするためにお世話になることが多いので、覚えておくように!

ユーザを作ろう

君は今までrootでログインし、君の城を操作してきたことだろう。しかし、rootでSSHにログイン出来ることや、ありとあらゆる操作をrootで行うことは褒められたことではない。rootは本当に何でも出来るユーザなので、君が間違って操作したときにシステムを壊してしまうかもしれないし、クラッカー(ネットのならず者。攻撃者)にrootでログインされたら一巻の終わりだ。

だから、普段の作業は一般ユーザで行い、SSHへのログインも一般ユーザに限定する。root権限が必要な作業を行う場合は、一般ユーザとしてSSHにログインし、その後でrootに切り替えれば良い。(Linuxではそういうことが容易に出来る。)

useradd hoge

これでhogeユーザが作成される。/home/hogeというホームディレクトリも作成される。ところで、Linux系のサイトを見ていて、hogeとかfooとかbarとか出てきたら、それは君が自由に名前を付けて良いという意味だ。銀行の書類の書き方例にある山田太郎と同じことだ。君の本名が山田太郎でない限り、書類に山田太郎とは書かないだろう。

パスワードも設定しなければならない。

passwd hoge

あとは、画面の指示に従って、設定したいパスワードを2回入力すれば良い。

次にSSHのrootログインを禁止しよう。ファイルを書き換えた後は、SSHデーモンを再起動する。

vi /etc/ssh/sshd_config
PermitRootLogin no
service sshd restart

ここまでの作業で、セキュリティに関する最低限の対策は打ったということになる。次のステップは、VPSを何に使うか?だ。
こともなげにいろいろ書いてきたが、君にとってはここまでたどり着くのは大変かもしれない。なので、続きは君がここまでたどり着く頃に書くことにしよう。

しばらくはサーバを停止する

この記事に書いた最後の作業まで完了していれば、そのまま起動しっぱなしでも問題ない。しかし、まだ作業が完了していない場合は君のサーバマシンは無防備なので、使わない時間はVPSコントロールパネルで停止しておくことをオススメする。

仮想サーバ操作のところの「停止」ボタンを押せば、電源OFFにしたのと同じなので、クラッカーに侵入される可能性はなくなる。また作業するときには「起動」ボタンを押せば良い。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。