‘iptables’ タグのついている投稿

DNSサーバへのANY? . な連続リクエスト対応

管理してるサーバのネットワークトラフィックが妙に高まっていてなんだコレ?と調査しておりましたら…

16:00:11.143581 IP (tos 0x0, ttl 233, id 62542, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143674 IP (tos 0x0, ttl 233, id 62543, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143738 IP (tos 0x0, ttl 233, id 62544, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143823 IP (tos 0x0, ttl 233, id 62545, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143898 IP (tos 0x0, ttl 233, id 62546, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.144194 IP (tos 0x0, ttl  64, id 26513, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144323 IP (tos 0x0, ttl  64, id 26514, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144432 IP (tos 0x0, ttl  64, id 26515, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144539 IP (tos 0x0, ttl  64, id 26516, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)

おお、DNSサーバへの激しい連続request。測ったところ50回/秒以上のペースで複数箇所から投げてきてるようでした。request内容も ANY? . ということで、弊社のDNSコンテンツサーバが応答する必要がない(ので ServFailを返している)内容のようです(DNS ampなDDoSのシカケにしては、偽装された?rewuest元IPが色々と分散していて謎です)。

複数箇所から飛んでくるのはDNSサーバの運命ですからしかたないとしてServFailを返すだけでも負荷が高まりますし、帯域も多少埋まって勿体ないのでiptablesでフィルタすることにしました。

tcpdump -n -vvv -X -s1500 -i eth1

にてもう少し詳しくパケットの内容を拾ってみると。

16:22:35.827460 IP (tos 0x0, ttl 238, id 36986, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.hexarc > 60.32.189.190.domain: [no cksum]  61037+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
   0x0000:  4500 003d 907a 0000 ee11 cd03 615d 13f6  E..=.z......a]..
   0x0010:  3c20 bdbe 1ce5 0035 0029 0000 ee6d 0100  <......5.)...m..
   0x0020:  0001 0000 0000 0001 0000 ff00 0100 0029  ...............)
   0x0030:  2328 0000 0000 0000 0000 0000 00         #(...........
16:22:35.944826 IP (tos 0x0, ttl 233, id 48921, offset 0, flags [none], proto: UDP (17), length: 61) 77.99.52.123.25697 > 60.32.189.190.domain: [no cksum]  6521+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
   0x0000:  4500 003d bf19 0000 e911 96d9 4d63 347b  E..=........Mc4{
   0x0010:  3c20 bdbe 6461 0035 0029 0000 1979 0100  <...da.5.)...y..
   0x0020:  0001 0000 0000 0001 0000 ff00 0100 0029  ...............)
   0x0030:  2328 0000 0000 0000 0000 0000 00         #(...........

な内容でしたので、iptablesにて

iptables -t raw -I PREROUTING -p udp --destination-port 53 \
 -m string --algo kmp --from 30 \
 --hex-string "|010000010000000000010000ff0001000029232800000000000000000000|" \
 -j DROP

とIPパケットの30byte目からのパターンに注目してhex-string形式で指定してみます。
結果:

16:40:37.686016 IP (tos 0x0, ttl 238, id 51404, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.686094 IP (tos 0x0, ttl 238, id 51405, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.686176 IP (tos 0x0, ttl 238, id 51406, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.853317 IP (tos 0x0, ttl 234, id 23094, offset 0, flags [DF], proto: UDP (17), length: 69) 201.6.2.85.14604 > 60.32.189.190.domain: [udp sum ok]  11303% [1au] AAAA? ns.server.st. ar: . OPT UDPsize=4096 (41)
16:40:37.854079 IP (tos 0x0, ttl  64, id 44172, offset 0, flags [none], proto: UDP (17), length: 110) 60.32.189.190.domain > 201.6.2.85.14604:  11303*- q: AAAA? ns.server.st. 0/1/1 ns: server.st. SOA[|domain]
16:40:37.855922 IP (tos 0x0, ttl 234, id 23093, offset 0, flags [DF], proto: UDP (17), length: 69) 201.6.2.85.62860 > 60.32.189.190.domain: [udp sum ok]  15132% [1au] A? ns.server.st. ar: . OPT UDPsize=4096 (41)
16:40:37.856467 IP (tos 0x0, ttl  64, id 44173, offset 0, flags [none], proto: UDP (17), length: 143) 60.32.189.190.domain > 201.6.2.85.62860:  15132*- q: A? ns.server.st. 1/2/2 ns.server.st. A 60.32.189.190 ns: server.st.[|domain]

ServFailも返すことなく、返すべきrequestについては正しく応答を返してますね。
何事も平和が一番です(´ー`)

Facebooktwitterlinkedintumblrmail