2013年2月3日日曜日

AccessGateway 個人的な関連ナレッジ

個人的に構築する際にはまった内容のまとめ。

◆ログイン後に401エラーが発生する。

AGで認証後に401エラーとなる場合は、SSL証明書関係の不備の可能性が高い。
WebInterfaceサーバにもAGの証明書を認証している中間認証局の証明書が必要。
オレオレ証明とか使ってる場合は必須となる作業だと思う。

CTX126312:Citrix Access Gateway Enterprise Editionのログオンページで認証に成功した後に、「401 - 権限がありません:資格情報が無効であるため、アクセスが拒否されました」というエラーメッセージがWebブラウザに表示される
http://support.citrix.com/article/CTX126312

証明書をインポートするが、ユーザとしてでなく、コンピュータとしてインポートする。



◆AccessGateway用のサイトをWebInterfaceに作る際の注意

簡単に作れるが、HTTPSとHTTPの違いや単純なパスやファイル名の入力ミスに注意する。
また、ICAプロキシとして稼働させる場合は、ag用サイトの「セキュアなアクセス」の設定は
・ゲートウェイ直接を指定
・アドレス(FQDN)にはAccessGatewayのドメイン名
・ポートは443
セッション画面の保持を有効にする のチェックがデフォルトなのでチェックを外す
以上で設定する。


◆Online PluginのダウンロードをWebInterfaceからに変更

C:\Program Files (x86)\Citrix\Web Interface\5.4.0\Clients\Windows\Online Plug-in に
CitrixOnlinePluginWeb.exeを配置する。

C:\inetpub\wwwroot\<サイト名>\conf の WebInterface.conf を編集し

# ClientIcaWin32=Filename:CitrixOnlinePluginWeb.exe の先頭のコメントを削除

これでクライアント側に何もない場合はCitrixサイトではなくWebInterfaceからダウンロードできるようになる。

2013年2月1日金曜日

はじめてのAWSでわかったこと、わからないこと -2-

引き続き、実際の構築で色々あった内容の総括です。

EC2環境のインスタンスにEIPを設定していても、インスタンス停止→開始のタイミングで勝手に外れる

基本的なオペレーションはManagementConsoleから実施しています。

停止→起動のタイミングでいつまでたってもEIPが割り当てられず ん?? となっていました。

Google先生に聞いたところ、解決方法まで示していただけている先人がおられたので参考というか丸パクリで解決です。

EC2 インスタンス起動時に自動で EIP をセットする (AWS Advent Calendar 2012 20日目)
http://dogmap.jp/2012/12/20/aws-advent-calendar-2012-day-20/

やってる事としては、インスタンスが起動してきたタイミングで自動的に実行されるCronを仕込んでおくというものです。インスタンス内には「EC2 API Tools」等のインストールが必要です。
今回は、AmazonLinuxでインスタンスを作成していたため、最初から入っていました\(^o^)/

Cronの先頭を @reboot とすると、起動時だけに実行されるCronになるんですね。知らなかったです。
他にもあるみたいですね!

@yearly → 0 0 1 1 * と同意
@monthly → 0 0 1 * * と同意
@weekly → 0 0 * * 0 と同意
@daily → 0 0 * * * と同意
@hourly → 0 * * * * と同意

と、寄り道しましたけど、これで誰がオペレーションしても確実にEIPが割り当てられるようになりました。

EC2やRDSのパッチってどうなってるの?

これも不明でした。特にAmazonLinuxを使うという事が確定していまいたがパッチの提供方法や適用について誰も知らなかったので調べてみると、これも自動的に適用されるという事が分かりました。

自動的に適用されるためのスケジュールがManagementConsoleに示され、それまでの範囲内で管理者の希望する日時に再設定も可能なようです。

Amazon Elastic Compute Cloud Maintenance Help Page
http://aws.amazon.com/jp/maintenance-help/

2013/02/01修正
↑これは、ハイパバイザレベルのパッチに関する記述でした。

正しくは、Amazon側が用意したリポジトリにパッチが挙げられるので、その後利用者側にてアップデートが必要なようです。
検索を行なってみると、インスタンスコンソールにログインした際にアップデートがある旨のメッセージがでるとの記事がありました。


RDSについては、DB作成時に自動的なマイナーアップデートを行うか否かのチェックボックスがあるのでこちらで設定を行います。
適用時期についてはEC2と同じくManagementConsoleで確認することができます。

Amazon RDS よくある質問
http://aws.amazon.com/jp/rds/faqs/#75

作成した2NIC構成のインスタンスをAMI化。手動でデプロイしてみたけど、2個目のNICが正しく認識されない。

2NICとしてWebサーバをAMI化し、それを手動でデプロイしてみましたが、2個目のNICがいつまでたっても通信できません。

ip addrで確認すると、Eth0,Eth2として認識されているようです。ifcfg-eth2をみてみると、実際に接続されているENIとは異なるMACが記載されています。
結果的には

/etc/udev/rules.d/70-persistent-net.rules
を削除し、再起動することで認識されました。
AMI化する前のベースインスタンスで、/etc/udev/rules.d/70-persistent-net.rulesを削除した後に停止。この状態をAMI化することで手動デプロイを行なっても問題なく利用できるようになりました。
運用時のオペレーションに制約が増えてしまいますが、これはやむを得ないのでしょうか。
良い案がありましたら是非、ご教示ください。

メンテナンス用のOpenVPNサーバに接続しても、VPC側にパケットが流れない。

これは、少しハマったというか今回の件以前からうまくいかなかった事です。
今回の構築で解決できて、個人的にもすっきりしました。
AmazonLinuxにOpenVPNサーバを構築し、TAP構成としてクライアントから接続を行います。
OpenVPNサーバとクライアント間はあっさりと接続できていますが、VPC側にパケットが流れません。VPC側のルーティングは途中で気づいたのですが、あと2つ設定が必要でした。

一つは、OpenVPNサーバのIPパケット転送を有効にする事でした。
/etc/sysctl.conf を編集して
net.ipv4.ip_forward = 1
とする必要がありました。

2点めは、AWSのManagementConsoleで行いました。
OpenVPNサーバのインスタンスを右クリックし「Change Source / Dest Check」をDisableとする必要がありました。

どれも、検索すえば出てくるようなものですけど、メモ。という事で。

次回に続く(かな)

2013年1月30日水曜日

はじめてのAWSでわかったこと、わからないこと -1-

機会があって、初めてAWSを使って仕事をしました。
とある公開Web系サービスの構築です。

公開系自体、あまり経験がないので色々な意味でいい勉強になりました。
今回は、AWS環境ではまった内容、わからなかった内容、未だに謎な項目を上げておきたいと思います。

せっかくですので発生した順に並べます。

CDP(Cloud Design Pattern)を、どうやって実装すればいいの?

やりたい事、簡単な構成を書き出し、CDPの「NFS Sharingパターン」が近いという事で認識が一致しました。
NFSサーバ上にソースを配置してとりあえず2台のWebサーバ+NFSをELBでバランスさせることとなりました。基本的な構成だよねって事でインスタンスをデプロイ。

ん?でも・・・これって。
インスタンス同士はネットワーク的に、どういう風に接続されてるんだろう。

IPアドレスもバラバラだし。どうなってるんだろう。全くわかりませんでした。これらがネットワーク的につながっている事はPingを発射してわかりましたが、そもそもこのままでいいの?単純な疑問でモヤモヤとしましたが、ネットワークを好きに設計できないEC2はそんなもんだという事で納得しました。

EC2環境で構成を始めたけど、NFSでパフォーマンスが出ない

公開系サービスで凝った事するんじゃないからEC2でいいんじゃない?という満場一致の賛成意見によりEC2環境で構築を行いました。
NFSの構成も特にハマる事なく完了。でも、いざソースを配置してELB経由で動かしてみると・・・

「遅い・・・」
Webサーバのローカルにソースを置いた状態よりも遅い。明らかに遅い。
そもそも構成的にNFS接続用のネットワークを分離していないため、後々レスポンスの問題は発生するだろうと思ってはいました。
でも、今の環境はWebサーバ2台、しかも1台だけでの接続でこんなに遅いなんて!('A`)

まず、WebサーバとNFSサーバ間のネットワーク的な遅延を考えました。この間のPingによる折り返し応答は2-3ms。LANという意識としては遅延が大きいです。
遅い原因はこれだろうと考えました。

でも、解決する方法があるのだろうか?そもそもEC2環境に実装した時にIPアドレスはバラバラだしネットワーク的にどうなっているのかも理解できていないままでした。
そこでVPC環境でサブネットを切り、そこにWebサーバとNFSサーバを配置して、同一のサブネットでどうなるかを実験してみました。
すると、Pingの折り返しは0.5ms以下となりました。
これで問題は解消されるはずだと判断し、VPC環境に同じ構成を構築しました。
その結果

若干のレスポンス解消は見られたものの、根本的な解決にはいたっていませんでした。


NFSの構成自体に慣れてないため、根本的な過ちを犯している可能性もあります。
Twitterにて状況をつぶやいていると、色々な方から助言をいただくことができました。ソースを作っているチームに話を聞いてみるとNFS上にはソースを置いているだけでなく様々なテンポラリも配置していることが分かりました。試しにテンポラリをWebサーバのローカルに吐くとレスポンスの悪化は見られません。
以上の事から、テンポラリを吐くタイミングでレスポンスが悪化しているのではないかと想定され、これについてNFSマウントオプションでasyncを設定してみる事で回避できるのではないか?とアドバイスを受けました。
結果的にはこれが正解でした。NFSクライアント側のマウントコマンドをsync→asyncとすると良好なレスポンスを得られるようになりました。

EC2環境とVPC環境の違いを舐めきってました。ただ単にサブネットが自由につくれるぐらいの認識しかありませんでした。
VPCさん、ゴメンナサイ。

次回に続く

2013年1月4日金曜日

Linux関連Tips (基本的な事)

Linuxで運用するにあたって操作に慣れる必要があるので必要な事のメモ。
AWSでの運用を考慮して。


■sudo su - で rootに昇格できるのはec2-userだけ。
これを変更するには
 1)ユーザを作成
 2)ユーザをWheelグループに追加

■wheelグループに所属しているユーザ一覧の表示
grep wheel /etc/group

■ユーザ一覧の表示
cat /etc/passwd

■ユーザの作成
adduser <ユーザ名>

■作ったユーザをwheelグループに所属させる
usermod -G wheel <ユーザ名>


2012年12月27日木曜日

SSL通信のデコード+保存

久しぶりの投稿。

企業フォレンジックとしてクライアント端末からインターネットへ向けたパケットをすべて採取しておいて何かあったらそこから検索するっていう、かなり乱暴な気もするけど保全性もいいよねって事で方法の話。

HTTPS通信とか。どうすんの?って話になるけど、デコードしてやって中身を見ないとアレだね。
で、どうやって実装するんだろうって思ってたらあるんだね。

今回調べたのはi-FilterSercer+SSLアダプタの組み合わせ。SSLアダプタを入れるとそれだけでHTTPSのPostを記録できるみたい。でもそれじゃあまりおもしろくないから、外部のウイルスゲートウェイへデコードして渡す時のためのICAP通信を横取りしちゃう。
これで非暗号化されたパケットが取れるって仕組みらしい。

それをTAPなりでフォレンジック製品に投げてやる。

( ´_ゝ`)フーン。なるほど。

クライアントからすると、HTTPSを一旦終端してしまうi-FilterServerの証明書と実際にアクセスしているサイト(例えばGoogleとか)の証明書が異なるから証明書の警告みたいなのが出る。
これは仕様として仕方がない。

でもねー。なんかもう少しスマートにならないもんかね。と思ったり。
これまでは不正な証明書は危険だからって散々植え付けてきたわけでしょ。
それを今回の仕組みからは無視してって、リテラシーの面からしてもどうなのかと思う訳で。

とまぁ、面白い仕組みもあるなぁって事でした。

2012年12月11日火曜日

yum remove openssl はダメ!絶対!

SSL関係の一掃をしたかったから、面倒だしyumで全部消しちゃー
って
yum remove openssl
を実行。

そしたら!
rebootとかyumとか、それはものすごいやつまで消えちゃった(´・ω・`)

実行する前に「まじでいいの?」的なメッセージは出てたけどね。

ダメ!絶対!って事で良い子のみんなは真似しないように。

IBMの新ストレージ V3700登場!

ついにキタ━(゚∀゚)━!
V7000の弟分。V3700が登場!

発表があった日は一人で盛り上がってしまった。

DS3500も多機能になったけど、Vじゃなきゃできない事も多く。
たとえばSSDが乗るかとか。
SSD載せるような提案なんかめったにないけど、やっぱり十分な機能があるのはありがたい。

DSは数台扱ったけど、これは何台ぐらい扱うことができるかな。

楽しみ\(^o^)/