SlideShare une entreprise Scribd logo
1  sur  28
iptables BPF module 効果測定
DROP! the ${RANDOM} queries
2015/02/15
@otsuka752 (@twovs)
復習
${RANDOM}.www.example.jp の query を
iptables で DROP するには…
$ sudo iptables -A 'INPUT|FORWARD' -j DROP -p udp --dport 53 ¥
-m bpf --bytecode "18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0
0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7
58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3
1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,"
測定したこと
A) iptables 無しの qps [query/sec]
bind-9.10.1-P1/NSD-4.1.1
B) ${RANDOM}.www.example.jp の query をB) ${RANDOM}.www.example.jp の query を
iptables で DROP した時の qps と応答率
C) iptables のルールを増やした時の qps
-m bpf --bytecode=… の行を追加
やらなかったこと
• DNS cache (キャッシュ)サーバの性能測定
• パフォーマンスチューニング
(OS/bind/NSD/dnsperf などなど)(OS/bind/NSD/dnsperf などなど)
• ipset の利用
http://ipset.netfilter.org/
• …
構成概要/全体
構成概要/server
• Intel(R) Xeon(R) CPU 5148 @ 2.33GHz (x2)
• Ubuntu 14.0.4.1
• iptables v1.4.21
• DNS authoritative server
• bind-9.10.1-P1
• NSD-4.1.1 (without libevent)
• zone-data
• 100万レコード
• bind/NSD で同じ zone-data ファイルを使用
構成概要/client
• Intel(R) Xeon(R) CPU 5148 @ 2.33GHz (x2)
• Ubuntu 14.0.4.1
• dnsperf-src-2.0.0.0-1
• query-data
• NOERROR になる(zone-file に登録済) QNAME 10万件
• NXDOMAIN になる(zone-file に無い) QNAME 10万件
• NOERROR と NXDOMAIN 半分ずつ交互の QNAME 10万件
• tcpreplay-4.1.0
• pcap-data
• NXDOMAIN になる QNAME を問い合わせる
• 送信元の IP:port が query 間で重複しないパケット
dnsperf
dnsperf -s (server) -p 53 -a (client) -x 0 ¥
-d (data-file) -c 1 -l 60 -b 212992 -t 5 -q 100 -S 5
• -d the input data file (default: stdin)
${EXIST}.example.jp A や ${RANDOM}.example.jp A など
• -b socket send/receive buffer size in kilobytes
server/client のデフォルト値を明示的に指定(212992)
• -q the maximum number of queries outstanding (default: 100)
色々変更したけど大差無いのでデフォルト値(100)
• -Q limit the number of queries per second
試験B) では正常 query の最大 qps を指定して測定
• 詳細は man や参考資料を
A) iptables 無しの qps
• NOERROR ${EXIST}.example.jp
• NXDOMAIN(1) ${RANDOM}.example.jp
• NXDOMAIN(2) ${RANDOM}.www.example.jp
• MIXED NOERROR と NXDOMAIN(1) を交互に
A) まとめ/iptables 無し
• bind-9.10.1-P1 69000[qps]
NSD-4.1.1 160000[qps]
(本構成での bind/NSD の qps を出しただけ)
• NOERROR を応答するより
NXDOMAIN の応答の方が若干速い
B) iptables で DROP した時
• DNS queries
• bind には 1000, 10000, 20000, 30000,
40000, 60000[qps] を
• NSD には 60000, 100000, 130000,• NSD には 60000, 100000, 130000,
150000[qps] を最大 qps に指定し性能測定
• ATTACK queries
• NXDOMAIN となる ${RANDOM} query を
700000[qps] まで徐々に付与
B) iptables で DROP した時
bind/NSD の
応答を測定する
DNS query
送信元 IP:port が
query 間で重複しない
DNS ${RANDOM} query
B-1a) bind(<70K ATTACK)
*1
[qps]
ATTACK
[qps]
B-1b) bind(<70K ATTACK)
[%]
*1
ATTACK
[qps]
B-1) まとめ/bind(<70K)
• (*1)
高負荷(>40000[qps])で稼動している bind は
5000[qps] 4[Mbps]以下の ATTACK で影響を受け
応答率が悪化する応答率が悪化する
B-2a) bind(<700K ATTACK)
[qps]
*2 *3
ATTACK
[qps]
B-2b) bind(<700K ATTACK)
*4
*5
[%]
*5
ATTACK
[qps]
B-2) まとめ/bind(<700K)
• (*2)
<40000[qps]で稼動している bind は
iptables で ${RANDOM} query を DROP すれば
少なくとも 50-70万[qps] 400-560[Mbps]の少なくとも 50-70万[qps] 400-560[Mbps]の
ATTACK でも影響を受けない
• (*3)
50-70万[qps] の ATTACK を生成できなかった
client マシンの性能限界だと思われる
B-2) まとめ/bind(<700K)
• (*4)
60000[qps]で稼動している bind は
iptables で ${RANDOM} query を DROP すれば
20万[qps] 160[Mbps]程度までの ATTACK でも20万[qps] 160[Mbps]程度までの ATTACK でも
影響を受けない
• (*5)
60000[qps]で稼動している bind は
iptables で ${RANDOM} query を DROP しても
50万[qps] 400[Mbps]の ATTACK を受けると
応答率は 80[%]程度になる
B-3a) NSD(<700K ATTACK)
[qps]
*6
*8
*7
ATTACK
[qps]
B-3b) NSD(<700K ATTACK)
*8[%]
ATTACK
[qps]
B-3) まとめ/NSD(<700K)
• (*6)は iptables 無し
(*7)は iptables あり
何の傾き??? (何かの限界???)
• (*8)
60000[qps]で稼動している NSD は
iptables で ${RANDOM} query を DROP すれば
40万[qps] 320[Mbps]程度までの ATTACK でも
影響を受けない(同条件の bind の結果は (*4))
C) iptables のルールを増やした時
• NOERROR となる ${EXIST}.example.jp で qps 測定
• iptables -m bpf --bytecode … の行数を増やした
• time(右軸)は iptables を設定した時の所要時間[sec]
C) まとめ
• 性能的にも運用上もルールは 2桁(<100)にしたい
• 大文字小文字混在の ATTACK の DROP が困難
www.example.jp
www.example.jPwww.example.jP
www.example.Jp
www.example.JP
…
WWW.EXAMPLE.Jp
WWW.EXAMPLE.JPで 1000行以上に
感想
• 一定の効果は確認できたけど…
本気の攻撃には効果なし <知ってた
通常の query が少ないサーバには有効か???
• もっと現実的な値でも測定すれば良かった• もっと現実的な値でも測定すれば良かった
query < 1000[qps] && iptables < 100[lines]
(ただし ATTACK は最大まで)
• サーバ(client)がもっと欲しい
途中のルータ/FireWall で DROP させたり
DNS/ATTACK queries を別サーバから…などなど
募集
• 感想
• 突っ込み
• アイディア• アイディア
• …
参考
• DNSの評価と計測の話
Internet Week 2013
https://www.nic.ad.jp/ja/materials/iw/2013/
proceedings/d2/d2-hattori.pdf
• DNS 水責め攻撃から DNS 権威サーバを守る
たった 1つのステキな方法
http://www.slideshare.net/twovs/
how-to-defend-dns-authoritative-server-against-dns-watertorture
• Tcpreplay
http://tcpreplay.jp/
http://tcpreplay.appneta.com/
ENDEND

Contenu connexe

Tendances

Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionHadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionCloudera, Inc.
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09MapR Technologies Japan
 
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたCloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたYohei Azekatsu
 
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎Insight Technology, Inc.
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題にmagoroku Yamamoto
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考えるchonaso
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lispirix_jp
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料kasaharatt
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料Recruit Technologies
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeToshi Harada
 
Hadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionHadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionDaiki Sato
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたSAKURA Internet Inc.
 
お金をかけないDBチューニング
お金をかけないDBチューニングお金をかけないDBチューニング
お金をかけないDBチューニングKazuya Sato
 
Parquetはカラムナなのか?
Parquetはカラムナなのか?Parquetはカラムナなのか?
Parquetはカラムナなのか?Yohei Azekatsu
 

Tendances (20)

R3.0.0 is relased
R3.0.0 is relasedR3.0.0 is relased
R3.0.0 is relased
 
Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionHadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese Version
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
 
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたCloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみた
 
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
 
2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料2014 11-20 Machine Learning with Apache Spark 勉強会資料
2014 11-20 Machine Learning with Apache Spark 勉強会資料
 
V6 unix in okinawa
V6 unix in okinawaV6 unix in okinawa
V6 unix in okinawa
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatype
 
Hadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionHadoop splittable-lzo-compression
Hadoop splittable-lzo-compression
 
Keynote In Japanese
Keynote In JapaneseKeynote In Japanese
Keynote In Japanese
 
V6read#4
V6read#4V6read#4
V6read#4
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみた
 
お金をかけないDBチューニング
お金をかけないDBチューニングお金をかけないDBチューニング
お金をかけないDBチューニング
 
Parquetはカラムナなのか?
Parquetはカラムナなのか?Parquetはカラムナなのか?
Parquetはカラムナなのか?
 

Similaire à iptables BPF module 効果測定

Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Takefumi MIYOSHI
 
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリNVIDIA Japan
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud真吾 吉田
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようKoichi Sasada
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77nkt77
 
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせデータベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせShohei Yokoyama
 
CAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品についてCAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品についてKaneko Izumi
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77nkt77
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPyShiqiao Du
 
Redunduncy of NAT instance on AWS/VPC
Redunduncy of NAT instance on AWS/VPCRedunduncy of NAT instance on AWS/VPC
Redunduncy of NAT instance on AWS/VPCMasaaki HIROSE
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in LinuxTomofumi Hayashi
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10Toshi Harada
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_netTomoya Hibi
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)Satoshi Yamada
 
PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationNoriyoshi Shinoda
 

Similaire à iptables BPF module 効果測定 (20)

Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
 
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77
 
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせデータベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
 
CAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品についてCAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品について
 
R -> Python
R -> PythonR -> Python
R -> Python
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77
 
IPv6の現状
IPv6の現状IPv6の現状
IPv6の現状
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
 
Redunduncy of NAT instance on AWS/VPC
Redunduncy of NAT instance on AWS/VPCRedunduncy of NAT instance on AWS/VPC
Redunduncy of NAT instance on AWS/VPC
 
about dakota6.7 gui
about dakota6.7 guiabout dakota6.7 gui
about dakota6.7 gui
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linux
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
 
PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU Collation
 

Plus de @ otsuka752

NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53@ otsuka752
 
OLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLDOLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLD@ otsuka752
 
Hijack the domain name
Hijack the domain nameHijack the domain name
Hijack the domain name@ otsuka752
 
Route53 で親子同居
Route53 で親子同居Route53 で親子同居
Route53 で親子同居@ otsuka752
 
reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)@ otsuka752
 
DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)@ otsuka752
 
raspi + soracom #pakeana33
raspi + soracom #pakeana33raspi + soracom #pakeana33
raspi + soracom #pakeana33@ otsuka752
 
192.0.0.4 on android
192.0.0.4 on android192.0.0.4 on android
192.0.0.4 on android@ otsuka752
 
a little more about CaptureFilter
a little more about CaptureFiltera little more about CaptureFilter
a little more about CaptureFilter@ otsuka752
 
how to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servershow to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servers@ otsuka752
 
WireEdit のススメ
WireEdit のススメWireEdit のススメ
WireEdit のススメ@ otsuka752
 
about tcpreplay-edit
about tcpreplay-editabout tcpreplay-edit
about tcpreplay-edit@ otsuka752
 
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~@ otsuka752
 
毎日 dig ったら分かったこと ~新 gTLD~
毎日 dig ったら分かったこと ~新 gTLD~毎日 dig ったら分かったこと ~新 gTLD~
毎日 dig ったら分かったこと ~新 gTLD~@ otsuka752
 
萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)@ otsuka752
 
パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由@ otsuka752
 

Plus de @ otsuka752 (20)

NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53
 
OLD_LT_DNS_OLD
OLD_LT_DNS_OLDOLD_LT_DNS_OLD
OLD_LT_DNS_OLD
 
OLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLDOLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLD
 
Hijack the domain name
Hijack the domain nameHijack the domain name
Hijack the domain name
 
Route53 で親子同居
Route53 で親子同居Route53 で親子同居
Route53 で親子同居
 
reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)
 
DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)
 
raspi + soracom #pakeana33
raspi + soracom #pakeana33raspi + soracom #pakeana33
raspi + soracom #pakeana33
 
192.0.0.4 on android
192.0.0.4 on android192.0.0.4 on android
192.0.0.4 on android
 
a little more about CaptureFilter
a little more about CaptureFiltera little more about CaptureFilter
a little more about CaptureFilter
 
how to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servershow to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servers
 
WireEdit のススメ
WireEdit のススメWireEdit のススメ
WireEdit のススメ
 
about tcpreplay-edit
about tcpreplay-editabout tcpreplay-edit
about tcpreplay-edit
 
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
超簡単!? Punycode 変換 ~国際化・日本語ドメイン~
 
毎日 dig ったら分かったこと ~新 gTLD~
毎日 dig ったら分かったこと ~新 gTLD~毎日 dig ったら分かったこと ~新 gTLD~
毎日 dig ったら分かったこと ~新 gTLD~
 
萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)
 
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
 
パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由
 
how to GET GET
how to GET GEThow to GET GET
how to GET GET
 
#pakeana 14
#pakeana 14#pakeana 14
#pakeana 14
 

Dernier

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Dernier (8)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

iptables BPF module 効果測定

  • 1. iptables BPF module 効果測定 DROP! the ${RANDOM} queries 2015/02/15 @otsuka752 (@twovs)
  • 2. 復習 ${RANDOM}.www.example.jp の query を iptables で DROP するには… $ sudo iptables -A 'INPUT|FORWARD' -j DROP -p udp --dport 53 ¥ -m bpf --bytecode "18,177 0 0 0,0 0 0 20,12 0 0 0,7 0 0 0,80 0 0 0,12 0 0 0,4 0 0 1,7 0 0 0,64 0 0 0,21 0 7 58161015,64 0 0 4,21 0 5 124090465,64 0 0 8,21 0 3 1836084325,64 0 0 12,21 0 1 40529920,6 0 0 1,6 0 0 0,"
  • 3. 測定したこと A) iptables 無しの qps [query/sec] bind-9.10.1-P1/NSD-4.1.1 B) ${RANDOM}.www.example.jp の query をB) ${RANDOM}.www.example.jp の query を iptables で DROP した時の qps と応答率 C) iptables のルールを増やした時の qps -m bpf --bytecode=… の行を追加
  • 4. やらなかったこと • DNS cache (キャッシュ)サーバの性能測定 • パフォーマンスチューニング (OS/bind/NSD/dnsperf などなど)(OS/bind/NSD/dnsperf などなど) • ipset の利用 http://ipset.netfilter.org/ • …
  • 6. 構成概要/server • Intel(R) Xeon(R) CPU 5148 @ 2.33GHz (x2) • Ubuntu 14.0.4.1 • iptables v1.4.21 • DNS authoritative server • bind-9.10.1-P1 • NSD-4.1.1 (without libevent) • zone-data • 100万レコード • bind/NSD で同じ zone-data ファイルを使用
  • 7. 構成概要/client • Intel(R) Xeon(R) CPU 5148 @ 2.33GHz (x2) • Ubuntu 14.0.4.1 • dnsperf-src-2.0.0.0-1 • query-data • NOERROR になる(zone-file に登録済) QNAME 10万件 • NXDOMAIN になる(zone-file に無い) QNAME 10万件 • NOERROR と NXDOMAIN 半分ずつ交互の QNAME 10万件 • tcpreplay-4.1.0 • pcap-data • NXDOMAIN になる QNAME を問い合わせる • 送信元の IP:port が query 間で重複しないパケット
  • 8. dnsperf dnsperf -s (server) -p 53 -a (client) -x 0 ¥ -d (data-file) -c 1 -l 60 -b 212992 -t 5 -q 100 -S 5 • -d the input data file (default: stdin) ${EXIST}.example.jp A や ${RANDOM}.example.jp A など • -b socket send/receive buffer size in kilobytes server/client のデフォルト値を明示的に指定(212992) • -q the maximum number of queries outstanding (default: 100) 色々変更したけど大差無いのでデフォルト値(100) • -Q limit the number of queries per second 試験B) では正常 query の最大 qps を指定して測定 • 詳細は man や参考資料を
  • 9. A) iptables 無しの qps • NOERROR ${EXIST}.example.jp • NXDOMAIN(1) ${RANDOM}.example.jp • NXDOMAIN(2) ${RANDOM}.www.example.jp • MIXED NOERROR と NXDOMAIN(1) を交互に
  • 10. A) まとめ/iptables 無し • bind-9.10.1-P1 69000[qps] NSD-4.1.1 160000[qps] (本構成での bind/NSD の qps を出しただけ) • NOERROR を応答するより NXDOMAIN の応答の方が若干速い
  • 11. B) iptables で DROP した時 • DNS queries • bind には 1000, 10000, 20000, 30000, 40000, 60000[qps] を • NSD には 60000, 100000, 130000,• NSD には 60000, 100000, 130000, 150000[qps] を最大 qps に指定し性能測定 • ATTACK queries • NXDOMAIN となる ${RANDOM} query を 700000[qps] まで徐々に付与
  • 12. B) iptables で DROP した時 bind/NSD の 応答を測定する DNS query 送信元 IP:port が query 間で重複しない DNS ${RANDOM} query
  • 15. B-1) まとめ/bind(<70K) • (*1) 高負荷(>40000[qps])で稼動している bind は 5000[qps] 4[Mbps]以下の ATTACK で影響を受け 応答率が悪化する応答率が悪化する
  • 18. B-2) まとめ/bind(<700K) • (*2) <40000[qps]で稼動している bind は iptables で ${RANDOM} query を DROP すれば 少なくとも 50-70万[qps] 400-560[Mbps]の少なくとも 50-70万[qps] 400-560[Mbps]の ATTACK でも影響を受けない • (*3) 50-70万[qps] の ATTACK を生成できなかった client マシンの性能限界だと思われる
  • 19. B-2) まとめ/bind(<700K) • (*4) 60000[qps]で稼動している bind は iptables で ${RANDOM} query を DROP すれば 20万[qps] 160[Mbps]程度までの ATTACK でも20万[qps] 160[Mbps]程度までの ATTACK でも 影響を受けない • (*5) 60000[qps]で稼動している bind は iptables で ${RANDOM} query を DROP しても 50万[qps] 400[Mbps]の ATTACK を受けると 応答率は 80[%]程度になる
  • 22. B-3) まとめ/NSD(<700K) • (*6)は iptables 無し (*7)は iptables あり 何の傾き??? (何かの限界???) • (*8) 60000[qps]で稼動している NSD は iptables で ${RANDOM} query を DROP すれば 40万[qps] 320[Mbps]程度までの ATTACK でも 影響を受けない(同条件の bind の結果は (*4))
  • 23. C) iptables のルールを増やした時 • NOERROR となる ${EXIST}.example.jp で qps 測定 • iptables -m bpf --bytecode … の行数を増やした • time(右軸)は iptables を設定した時の所要時間[sec]
  • 24. C) まとめ • 性能的にも運用上もルールは 2桁(<100)にしたい • 大文字小文字混在の ATTACK の DROP が困難 www.example.jp www.example.jPwww.example.jP www.example.Jp www.example.JP … WWW.EXAMPLE.Jp WWW.EXAMPLE.JPで 1000行以上に
  • 25. 感想 • 一定の効果は確認できたけど… 本気の攻撃には効果なし <知ってた 通常の query が少ないサーバには有効か??? • もっと現実的な値でも測定すれば良かった• もっと現実的な値でも測定すれば良かった query < 1000[qps] && iptables < 100[lines] (ただし ATTACK は最大まで) • サーバ(client)がもっと欲しい 途中のルータ/FireWall で DROP させたり DNS/ATTACK queries を別サーバから…などなど
  • 26. 募集 • 感想 • 突っ込み • アイディア• アイディア • …
  • 27. 参考 • DNSの評価と計測の話 Internet Week 2013 https://www.nic.ad.jp/ja/materials/iw/2013/ proceedings/d2/d2-hattori.pdf • DNS 水責め攻撃から DNS 権威サーバを守る たった 1つのステキな方法 http://www.slideshare.net/twovs/ how-to-defend-dns-authoritative-server-against-dns-watertorture • Tcpreplay http://tcpreplay.jp/ http://tcpreplay.appneta.com/