2009.03.11

RHELをAmazon EC2で

Amazon EC2の公開されているAMIには
RedHatからRHEL5.1と5.2が含まれている。

そんなわけで使ってみようと思った。

しかし、できない!
エラー吐かれる!

理由は登録しないと使えないのでした。
しかもお金かかります。

まず月額固定で19ドル。
また従量課金では
Smallで0.21ドル(EC2は0.1ドル)、Largeで0.53ドル(EC2は0.4ドル)。
データはインプット0.11ドル(EC2は0.1ドル)、アウトプット0.19ドル(EC2は0.17ドルで通信料によって割引)
などなど。
若干割高。

[Cloud Computing with Red Hat]
http://www.redhat.com/solutions/cloud/

こちらから登録できます。

登録画面へ進むと「Amazon Payments」のサイトに移動し
アカウント入力、支払いカード入力を行い登録完了です。

登録完了すると
RedHatのログイン画面とActivation Codeが表示されます。
画面の説明を見ると「アカウント作る必要あるのかなー」と思いますが
RHELのアップデートを行うのにアカウントを求められるので作っておきましょう。

しばらくするとAmazon EC2のRHELのAMIが起動できるようになっていました。

2009.03.04

Amazon EC2のEUでもWindows開始

今日見てみると
AWS Management Consoleの画面が変わってた。

Regionの変更ができるようになった。。。?
Welcomeの表示場所がちょっと変わった。。。?

何の変化なんだろうと思って確認してみると
Amazon EC2のEUでもWindowsのAMIが使えるようになったらしい。

で、それにあわせて
AWS Management ConsoleもRegion変更ができるようになったんだと。

ヨーロッパのみなさんおめでとう!

そんなことより早く日本に来いよ!

Amazon EC2 Expands Windows and EU Region Offerings
http://aws.amazon.com/about-aws/whats-new/2009/03/03/amazon-ec2-running-windows-in-eu-region/

Windows Server 2008の新VPNプロトコル「SSTP」

PPTPに懲りず、Microsoftが新しいVPNプロトコルを実装している。
その名も「Secure Sockets Tunneling Protocol(SSTP)」だ。

これはカテゴリ的には「SSL VPN」と言うものらしい。
Microsoftは「SSL VPNではない新しいものだ」と主張してるという噂もあるけど。

現在SSL VPNでもっとも有名なのはOpenVPN
アプリをインストールするだけでホスト間のVPNを構築でき、OSの対応も多種多様。
インストールの手間をいとわない、もしくはインストールしないと使えないという作業でセキュリティレベルを上げるならお勧めだ。
複雑なIPsecと競い合ってる一品。

さて、話は戻って
そんなSSL VPNに入ってきたMicrosoftのSSTPだが
特徴をあげてみよう。

1.通信ポートが簡単
SSTPでは通信にHTTPS(TCPポート443)のみを使用しているのが最も大きな特徴だ。
これまでのPPTPはTCPポート1723とIPプロトコル番号47のGREを使用している。
TCPポート1723はWebやメールしか見れないなんていうセキュリティの厳しい大企業以外はいいとしても
TCPでもUDPでもないGREのパケットは環境によっては使えないこともあった。
またL2TP/IPsecでも同様にUDPポート1701、500が必要。
さらにIPプロトコル番号50のESPを使用し、NATを介する場合はUDPポート4500が必要と何かと複雑だった。
IPsecパススルーとかないとだめだしね。

そんなわけで
どんなネットワークでも使えるであろうHTTPSのポートのみを使用してVPNが構築できるのはすごい。

2.利用が簡単
「Windows Vista SP1」で何気にSSTPが追加されている。
そのためWindowsユーザはこれまでのVPN接続の設定と同様の手順でSSTPが利用できる。

3.証明書が必要
これはデメリットになるのだが
SSTPサーバを構築するためにはSSL用のサーバ証明書が必要となるらしい。
サーバ証明書なんて取るだけでお金がかかるため、趣味では使いにくいかもしれない。

4.ホスト間のみ
これもデメリットだと思うのだが
現状対応しているのが「Windows Server 2008」と「Windows Vista SP1」のみ。
L2TP/IPsecのようにルータで手軽にネットワーク同士をVPN構築できたりしないので面倒と言えば面倒。
Windows Server大好きな人はそれをルータにしてくれても構わないが
個人的趣向で言えばWindowsでそんなことはやりたくない。

そんなわけで
Windows Server 2008をまだ実際に触ったことないので
構築手順もなにも書けないのですが
サーバ証明書がどうにかだませるなら試してみたいなとは思う一品。

詳しくはWEBで ->
http://www.techworld.jp/channels/software/102099/(削除されていました)

Read more »

なぜPPTPよりもL2TP/IPsecなのか

よく言われる話ですがPPTPはセキュリティレベルが低い。
漠然と「危険」とは思っていましたが、なぜかは知りませんでした。

そんなわけで調べたことのまとめ。

1.認証の問題
PPTPにはMS-CHAPを認証に使用します。
MS-CHAP v1は暗号強度がMD4の40bit、RASの偽装を確認できない、送受信が同じ暗号鍵という問題がありました。
そこでMS-CHAP v2に改良されました。
RASの偽装などはできなくなりましたが、チャレンジレスポンスにMD4とDESが使われることはv1と変わりません。
このMD4は既に脆弱性が見つかっており、DESに関しても解読されることが確認されています。
またMS-CHAPではユーザ名とパスワードのみで認証が行われるため、そこが解読されるとアウトです。

2.暗号化の問題
PPTPでは暗号化にはMPPEが使用されています。
このMPPEは暗号鍵が128bitの固定なので攻撃が簡単になります。
またこのMPPEの暗号鍵は先に述べた安全でないMS-CHAPで交換が行われるためここにも問題があります。

これらの理由からPPTPは安全でないと言われているようです。
Windowsクライアントから簡単に接続できるVPN環境を構築するなら
L2TP/IPsecを使用しろってことですね。

ネットワークなんて誰が盗聴してるかわからないですから。。。

2009.02.25

Amazon EC2 概要

いちおうAmazon EC2の概要を簡単にまとめ。

  1. Amazon EC2って何?
  2. Amazon Elastic Compute Cloud”の略です。
    最近はやりのクラウドコンピューティングというやつで、Amazonのインフラを使って好きなだけサーバ立ててあれこれできます。

  3. どうやって使うの?
  4. アカウント登録してください。
    http://aws.amazon.com/
    登録の仕方なんてちまたにあふれてるので割愛。

  5. 何ができるの?
  6. サーバを好きなだけ貸してくれる感じです。
    OSはAMIというイメージで提供してくれているので(自分で作ることも可)、それらをインスタンスという形で起動させ好き勝手に使えます。

  7. OSは何があるの?
  8. Amazonが提供しているOSは以下があります。

    • Windows Server 2003 Datacenter Edition (i386/x86_64)
    • Windows Server 2003 + SQL Server (i386/x86_64)
    • fedora core 4 (i386)
    • fedora core 6 (x86_64)
    • fedora 8 (i386/x86_64)

    これ以外にも色々な人が作ったAMIが公開されています。以下例。

    • CentOS
    • Debian
    • RHEL
    • Ubuntu
  9. 金額は?
  10. 基本的にインスタンスの起動時間で、OSの種類、サーバのスペックにより課金されます。

    platform instance CPU memory storage I/O cost(Windows) cost(Other)
    32bit Small 1 ECU 1.7GB 150GB moderate $0.125/h $0.10/h
    High-CPU Medium 5 ECU 1.7GB 350GB moderate $0.30/h $0.20/h
    64bit Large 4 ECU 7.5GB 420GB*2 high $0.50/h $0.40/h
    Extra Large 8 ECU 15GB 420GB*4 high $1.00/h $0.80/h
    Hight-CPU Extra Large 20 ECU 7GB 420GB*4 high $1.20/h $0.80/h

    ECUは”EC2 Computer Unit”の略です。
    1ECUが1.0~1.2GHzに相当する仮想CPUが割り当てられます。
    そのほかにもEBSというストレージの使用量、通信料などがあります。
    詳細は公式サイトで。http://aws.amazon.com/ec2/#pricing

  11. デメリットは?
  12. そんないいことばかりでもありません。
    以下、ちょっと面倒なところ。

    • IPアドレスが毎回変わる。(ローカルIPもグローバルIPも)
    • グローバルIPについてはオプションのElastic IPというサービスで固定IP取得可能。

    • コンピュータ名が毎回変わる。

    この2つはかなり痛いです。サーバって基本的にはコンピュータ名指定したりして内部通信するものが多いので注意。

  13. セキュリティは?
  14. 送信元IPアドレス、ポート番号でフィルタリングがかけられます。
    それ以外については自己責任となります。詳細は公式サイトで。http://aws.amazon.com/agreement/
    (”7.2.”と”16.6.”あたり参考に)

  15. インスタンスを落とすと保存内容が消える
  16. 仕様です。インスタンスは落とすとすべて消えます。
    Amazonが別途提供しているストレージサービスS3へ自分でAMI化して保存する必要があります。
    この方法については別途作成予定。

  17. WindowsのDドライブ、Linuxの/mntが消える
  18. 仕様です。あくまでもテンポラリドライブと認識してください。
    保存が必要なファイルについてはEBSを使うようになっています。http://aws.amazon.com/ebs/

こんな感じです。

Amazon EC2を遊び倒す

本来はAmazon EC2ブログを作ろうと思ったのですが
もうかなり遊んでしまったため一からAmazon EC2の使い方を書くのは面倒なので
これからやっていくことをつらつらと書いてみます。

あとついでに過去のブログ遺産の一部も転記。

がむばろう。

2009.02.24

L2TPでVPN接続

PPTPよりセキュリティの強いL2TPにチャレンジ。
OSはFedora8(i386)を使用してます。

1.IPsecのインストール
2.l2tpdのインストール
3.サービス起動
4.Windows XPを使っている場合の注意点

1.IPsecのインストール
L2TPはトンネルを作成するプロトコルでPPTPとは違い暗号化までは行われない。
そこでIPレベルでの暗号化を行うためIPsecをインストールします。
ここではopenswanを使用します。
http://www.openswan.org/
また、事前共有鍵方式と証明書方式があるが、ここでは事前共有鍵方式を使う。

とりあえずインストール。

# yum install openswan

設定ファイルをサンプルからコピー。
特に修正必要なし。

# cp /etc/ipsec.d/examples/l2tp-psk.conf /etc/ipsec.d/

事前共有鍵の作成。
/etc/ipsec.d/l2tp-psk.secrets

# vi /etc/ipsec.d/l2tp-psk.secrets

以下を入力。

: PSK "pre-shared-key"

2.l2tpdのインストール
実際にトンネルをはるプロトコル。
第2層のデータリンク層らしい。
ここではxl2tpdを使用する。

# yum install xl2tpd

ちなみにこのxl2tpdをCentOS5.2にインストールしようとしたところ
rpmはなくソースから適用しようとするとkernel2.6.23以上を求められた。
CentOS5.2のkernelは2.6.18である。面倒なので挫折。

L2TPの設定ファイルを編集。
/etc/xl2tpd/xl2tpd.conf

# vi /etc/xl2tpd/xl2tpd.conf

以下の内容を修正。
ここでは
サーバIP:192.168.0.1
割り当てIP:192.168.0.101-192.168.0.254
としているが、各自のネットワークを考慮して割り当ててください。

ip range = 192.168.0.101-192.168.0.254
local ip = 192.168.0.1

PPPの設定ファイルを編集。
/etc/ppp/options.xl2tpd

# vi /etc/ppp/options.xl2tpd

接続PCに割り当てるDNSとWINSを指定。
今回DNSはL2TPサーバ自身。WINSはなし。

ms-dns 192.168.0.1

また、同ファイルに以下を追加。
認証はmschap-v2を使えという指示。

refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
logfile /var/log/xl2tpd.l2tp-ipsec.log

VPNアクセスユーザアカウントの定義を作成。
/etc/ppp/chap-secrets

# vi /etc/ppp/chap-secrets

アカウントを追加。

ユーザ名 * パスワード *

こんな感じです。

3.サービス起動
サービスの登録と起動。

# chkconfig xl2tpd on
# chkconfig ipsec on
# /etc/init.d/xl2tpd start
# /etc/init.d/ipsec start

4.Windows XPを使っている場合の注意点
WindowsXP SP2ではL2TP/IPsecをNAT越しに利用できないようになっています。
これを利用できるようにするためレジストリの変更が必要となります。

regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPsec
の中に
"AssumeUDPEncapsulationContextOnSendRule"
というDWORD値を作り、値に"2"を設定する。

詳しくはMicrosoftのページへhttp://support.microsoft.com/kb/885407/jaへ。

以上でサービスの構築は終了です。
WindowsXPなどのクライアントから接続してみてください。

ルーティングなどに関してはPPTPdの構築記をご参照あれ。

2008.03.29

PPTPでVPN接続

自宅サーバにPPTPdを構築し
外部から自宅PCにVPN接続したくなったのでその構築記。

1.pptpdのインストール
2.設定ファイルの編集
3.サービス起動

1.pptpdのインストール
PPTPdにはOpenSourceのPopTopを使用。
まずはそのインストールから。

地道にrpmをダウンロードしてインストールしてもいいんですが
やはりここは美しくyumで一括インストール。

安定版
http://poptop.sourceforge.net/yum/stable/
ベータ版
http://poptop.sourceforge.net/yum/beta/

上記サイトから該当する構成を選択してリポジトリ登録用のrpmを取得。
今回は安定版を選択し、僕の環境ではFedora8のi386だったので
http://poptop.sourceforge.net/yum/stable/fc8/i386/pptp-release-current.fc8.noarch.rpm
を使用しました。
自分の構成がない場合は
http://poptop.sourceforge.net/yum/stable/packages/
からおとなしく必要なrpmをダウンロードしてインストールしてください。その説明は割愛。

以下インストール

# rpm -Uvh
 http://poptop.sourceforge.net/yum/stable/fc8/i386/pptp-release-current.fc8.noarch.rpm
# yum --enablerepo=poptop-stable install pptpd

インストール完了。

2.設定ファイルの編集
次は設定ファイルの編集です。
編集が必要なファイルは以下の2つです。
/etc/pptpd.conf
/etc/ppp/chap-secrets

設定サイトを参考にしていると
/etc/ppp/options.pptpd
も編集しろと書かれていたりするんですが、これはデフォルトで動作しましたので割愛。

まずはメインのpptpd.confから

# vi /etc/pptpd.conf

この設定ファイルにPPTPd用のIPアドレスとVPN接続してきたクライアント用のIPアドレスを記載します。
PPTPはPPPを利用した接続方式で、PPPはコンピュータを1対1で接続するプロトコルです。
それぞれのコンピュータの識別にIPアドレスを利用するため、それぞれのIPの設定が必要となります。

ファイルの最後に下記を追加。

localip 192.168.0.15
remoteip 192.168.0.151-160

この構成では、PPTPdのサーバとしては192.168.0.15のIPを使用し
クライアントには192.168.0.151から192.168.0.160の空きIPが割り当てられます。
特別必要がない限りはネットワークアドレスの空きを割り当てれば大丈夫です。

続いてchap-secrets。

# vi /etc/ppp/chap-secrets

この設定ファイルはPPTP接続のユーザ認証設定を記載します。

ユーザ名 pptpd パスワード *

こんな感じです。
/etc/ppp/options.pptpdでサーバ名などを真面目に修正される場合は
pptpdの部分をサーバ名に変更する必要があります。
最後の「*」の部分はIPアドレスの設定ですが、あまり気にせずお約束のように「*」を入れておきましょう。
あとSambaのユーザ認証なども使えるようです。
セキュリティ的にそっちのがよければお調べください

これでPPTPdの設定は完了です。

3.サービス起動
最後にサービスをスタート。

# /etc/init.d/pptpd start

さて、ここまではただのインストールで寝ててもできる設定ですね(実際寝てました)
でもこれで終わらないからネットワーク屋さんなのです。
続いてネットワークの設定です。

1.ルータの設定
2.ファイアウォールのINPUTの許可
3.IP packetのフォワード設定
4.ファイアウォールのFORWARDの許可

1.ルータの設定
まずはルータの設定。
PPTPで使用するTCPの1723番ポートを自宅サーバへフォワードするように設定。
これはルータのマニュアル参照。

2.ファイアウォールのINPUTの許可
次に受信したパケットの受け付けを許可します。
iptablesのファイルを編集(IPv6の場合はip6tables)

# vi /etc/sysconfig/iptables

以下の許可を追加。

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT

RH-Firewall-1-INPUTはFedoraにデフォで設定されてる定義名みたいなものです。
環境が違う場合は各自書き換えを。
iptablesの設定変更を反映。

# /etc/init.d/iptables restart

ここまでの設定でPPTP接続ができるはずです。
WindowsからVPN接続の設定をして試してみてください。
PPTPdサーバに設定したIPからpingが返れば成功です。

3.IP packetのフォワード設定
サーバにデータを置いていれば上記まででいいのですが
残念ながら僕のデータはWindowsマシンのほう。
ということでサーバでパケットの転送を行わなければいけません。

そのためのカーネルパラメータにパケットフォワードの許可の設定。

# vi /etc/sysctl.conf

以下の項目を変更し転送許可を設定。

net.ipv4.ip_forward = 0
↓
net.ipv4.ip_forward = 1

設定の変更を有効に。

# sysctl -p /etc/sysctl.conf

4.ファイアウォールのFORWARDの許可
最後に有効にしたパケットフォワードをファイアウォールで許可。

# vi /etc/sysconfig/iptables

-A FORWARD -j REJECT –reject-with icmp-host-prohibited
より前に以下の設定を追加。

-A FORWARD -p icmp --icmp-type any -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state NEW -m tcp -p tcp --dport 137:139 -j ACCEPT
-A FORWARD -m state --state NEW -m udp -p udp --dport 137:139 -j ACCEPT
-A FORWARD -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A FORWARD -m state --state NEW -m udp -p udp --dport 445 -j ACCEPT

ping確認のためのicmpの許可と
ファイル共有を行うために137-139と445を許可しています。

iptablesの設定変更を反映。

# /etc/init.d/iptables restart

以上で設定完了です!
これでいつでもどこからでもWindowsについてるVPN接続で自宅サーバに接続し
自宅PCのファイルにアクセス可能になりました!

余談。

このファイアウォールのフォワードの設定はファイル共有だけっつーけっこーシビアなものなので
VPN接続してる状態でウェブ見たりとかメール見たりとかメッセつないだりとかできない。
ということで

-A FORWARD -i ppp0 -j ACCEPT
-A FORWARD -o ppp0 -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

こんな風に書き換えてしまうとVPN接続は全てスルーになります。
まぁ、こっちのが楽でいいかな…(ppp0はVPN接続時のインタフェース名です)

2008.03.05

英語localeで日本語入力

Linuxを使うとき、localeが日本語なのが許せない。
でもインストールするときは日本語を使いたい。
そんなわけでインストールが終わってからまずは英語に設定を変更。

設定ファイルを開く。

# vi /etc/sysconfig/i18n

そして内容編集。

LANG="ja_JP.UTF-8"

こうなっているのを

LANG="ja_JP.UTF-8:en_US.UTF-8"

こう変更。

さて、これでメッセージなどは英語で表示してくれるようになるのですが
X Windowを使った時に日本語入力ができなくなってたのだ。

なので次はその設定変更。
まずは設定画面を開く。
[System] -> [Preference] -> [Personal] -> [Input Method]
[IM Chooser – Input Method configuration tool]
この画面で[Enable input method feature]のチェックボックスにチェックをつける。
あとは[OK]で変更を保存し、X Windowを再起動すれば
[Ctrl+Space]で日本語入力できるようになりました。

Fedora8での話です。他はわからんです。

パスワードなしSSH接続

SSHを利用する場合通常パスワードを用いて認証を行いますが
公開鍵を使ってホストの証明を行い
この鍵を事前に承認しておいて、鍵が一致すればパスワードの入力をせずに接続することができます。
今回サーバ再構築のときに方法をまた調べたのでついでにメモメモ。

公開鍵暗号方式には一般的に使われるものとして
RSAとDSAがありますが、個人的趣味ではRSAのほうが好きです。
ということでRSAを使った認証方法を記載します。

なにはともあれキーを生成。
リモートに接続するユーザで作成してください。

$ ssh-keygen

キーの保存場所とファイル名を聞かれますが変えたかったら変えてください。
ここでは「id-rsa」というファイルが作成されたと仮定します。
パスフレーズについては入力せずにそのまま[Enter]を。

どうにかして公開キー(上記コマンドで生成された鍵ファイルのid-rsa.pubと名前がついた方)を
リモートホストにコピーします。これは好きな方法で勝手にどうぞ。

続いてリモートホストにログインし、そのキーに対する接続の許可を設定します。
接続を許可するユーザでログインしてください。

$ cd .ssh/
$ touch authorized_keys
$ chmod 600 authorized_keys
$ cat ~/id-rsa.pub >> authorized_keys
$ rm ~/id-rsa.pub

これでキーを作成したホストから
リモートホストの許可したユーザへSSH接続する場合にパスワードが不要になります。

この「authorized_keys」という設定ファイルに書かれているキーと一致すれば
接続を許可してくれるみたいです。
他のホストからに対しても同様の形で追加していけば大丈夫です。
あとauthorized_keysはアクセス許可が600じゃないとうまくいかないようなので注意です。

« Previous | Next »