Upload
masahito-yoshida
View
2.572
Download
4
Embed Size (px)
DESCRIPTION
第47回 GRACE セミナー(2011年2月7日開催)
Citation preview
オープンソースクラウド基盤”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/