wakame-vdc 開発苦労談

Post on 15-Jan-2015

2.572 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

第47回 GRACE セミナー(2011年2月7日開催)

TRANSCRIPT

オープンソースクラウド基盤”Wakame-vdc”開発苦労話

2011/02/07(月)

@hansode

自己紹介

■自己紹介

•吉田将士 / Masahito Yoshida

•株式会社あくしゅ http://axsh.jp/•担当: サーバインフラ系•時々: プログラミング(Ruby, Perl, PHP, Bourne Shell)

•Twitter: @hansode•Blog: http://blog.hansode.org/

•ここ最近はOpenStackやPuppetの検証記録

•趣味: 筋トレ、ボルダリング(インドアクライミング)⇒最終目標は、片手懸垂。現在、両手で25回程度。

“Wakame-vdc”における開発担当

『Security Groups』ファイヤーウォール機能

今回は、『Security Groups』

開発実装のお話です。

■『Security Groups』の機能

•AWS(Amazon Web Service)の「Security Groups」相当•許可ベースのファイヤーウォール

•接続元IPアドレス•対象項目(tcp,udp,icmp / ポート番号)

「例: 192.0.2.10 から tcp/22 への接続を許可」

192.0.2.10 tcp/22

『Security Groups』を実装するにあたり、使用した技術。

2つあります

1. ebtables2. iptables

ここで、会場のみなさんに質問です。

【Q.1】ebtablesをご存じの方?【Q.2】iptablesをご存じの方?

■開発着手前のスキル情報・・・

•AWS利用経験は2年• Wakame-fuel開発で使用• Security Groupの設定経験あり• tcp/22とtcp/80を許可する程度の運用経験

•iptablesとebtables、名前を知っていた程度•実際に運用した経験は無い・・・

ここからが開発苦労談のはじまりです・・・

もしも(eb|ip)tablesを知らないエンジニアが『Security Groups』を1ヶ月半で実装したなら

2011/02/07(月)

@hansode

この後、基礎を分かっていれば、何てこと無い箇所でハマり続けます!

『Security Groups』機能実装へ向けて、改めて機能確認。

■『Security Groups』の機能

1. 同一セキュリティグループ内のパケットのみ見える2. tcpdumpやtshark等を実行しても、他グループのパケットは見えない

3. 例え自分のインスタンスであっても、他グループのパケットは見えてはいけない

•AWS(Amazon Web Service)の「Security Groups」相当•許可ベースのファイヤーウォール

•接続元IPアドレス•対象項目(tcp,udp,icmp・ポート番号)

Amazon EC2内から見ると

「Security Groups」を実装すべく、iptablesでフィルタしてみました。

■ iptables

iptables is the userspace command line program used to configure the Linux 2.4.x and 2.6.x IPv4 packet filtering ruleset. It is targeted towards system administrators. Since Network Address Translation is also configured from the packet filter ruleset, iptables is used for this, too. The iptables package also includes ip6tables. ip6tables is used for configuring the IPv6 packet filter.

http://www.netfilter.org/projects/iptables/

IPv4 packet filtering ruleset.

iptablesによるフィルタ後、tcpdumpで

パケットキャプチャしてみると、、

近隣ノードのパケットが見えている・・!

どうやら、見えているの正体は『arpパケット』だ。

どうもiptablesでは、arpパケットの制御までは行えない。

別のフィルタを探し始める。

そして、たどり着いたのが

■ ebtables

The ebtables program is a filtering tool for a Linux-based bridging firewall. It enables transparent filtering of network traffic passing through a Linux bridge. The filtering possibilities are limited to link layer filtering and some basic filtering on higher network layers. Advanced logging, MAC DNAT/SNAT and brouter facilities are also included.

http://ebtables.sourceforge.net/

Link layer filtering

iptablesの要領で、ebtablesでフィルタリング

してみると、、

ハマってしまいました・・・

ebtablesでハマったその1

DHCPとブロードキャスト

■DHCPとブロードキャスト

gw

A

DHCP

インスタンスへのIPアドレス割り当てにはDHCPを利用しており、インスタンスがDHCPサーバを探す為に、、

■DHCPとブロードキャスト

gw

A

DHCP

インスタンスへのIPアドレス割り当てにはDHCPを利用しており、インスタンスがDHCPサーバを探

す為に、ブロードキャストへパケットを送信する。

■DHCPとブロードキャスト

gw

A

DHCP

DHCPサーバから応答があり、IPアドレスが割り当てられる。

■DHCPとブロードキャスト

gw

A

DHCP

DHCPサーバとの通信だけでなく、

ブロードキャストとの通信を許可する必要がある。

ebtablesでハマったその2

グループ内インスタンスの所属ネットワーク

■グループ内インスタンスの場所

同一ネットワーク内

A B

gw

A・Bが同一セキュリティグループに所属し、同一ネットワークに存在する場合

■グループ内インスタンスの場所

gw

A B

AとBが通信出来れば良い

同一ネットワーク内

■グループ内インスタンスの場所

A B

gw gw

ネットワークまたぎ

A・Bが同じセキュリティグループに所属し、互いに別ネットワークに存在する場合

■グループ内インスタンスの場所

ネットワークまたぎ

AとBが通信出来れば良い・・・?

A B

gw gw

■グループ内インスタンスの場所

A

gw

B

gw

相棒インスタンスにではなく、ゲートウェイとの通信許可設定を行う。

ネットワークまたぎ

■グループ内インスタンスの場所

gw

A B A

gw

B

gw

相棒インスタンスの所属するネットワークによって、通信許可対象が変化する。

同一ネットワーク内 ネットワークまたぎ

ebtablesでハマったその3

arpキャッシュ

■arpキャッシュ

gw

A B

A・B間で、許可→拒否→許可。

設定変更を繰り返すと、拒否しているのに通信可能状態が発生。

■arpキャッシュ

gw

A B

arpキャッシュ更新タイミングよ

りも短い場合、拒否設定時でもarp通信出来てしまう状態がある。

arpキャッシュ

arpキャッシュ

■arpキャッシュ

gw

A B

短時間で変更する場合は、インスタンス内のarpテーブルを都度削除する必要がある。

arpキャッシュ

arpキャッシュ

# arp –d <IPアドレス>

■arpキャッシュ

gw

A B

※この短時間内の変更問題は、根本的解決になってないので、今後の課題。

arpキャッシュ

arpキャッシュ

色々ありましたが、1ヶ月半で

「Security Groups」実装完了しました。

■最終的なパケットフロー (ver.10.11)

ARP

IP4 ICMP

TCP

UDP

ACCEPT

DROP

ebtables

iptables

ARP

IP4

Link Layer Network Layer

開発を振り返ってみると

ネットワークの勉強になりました・・・

この苦労話が少しでもみなさんの

役に立てば、幸いです。

ご清聴ありがとうございました

http://twitter.com/hansodehttp://blog.hansode.org/

top related