‘未分類’ カテゴリーのアーカイブ

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については正しく応答を返してますね。
何事も平和が一番です(´ー`)






LT『baserCMSでホームページをリニューアルしたときのアレコレ』のスライド
オープンソースカンファレンス2012 Kansai@Kyoto の「ライトニングトークfor Business」で話した『baserCMSでホームページをリニューアルしたときのアレコレ』のスライドです。
baserCMSでホームページをリニューアルしたときのアレコレ
書きすぎたとは思っていましたが、実際に話すと思ってた以上にボリュームありすぎでした。
5分なんだってば。失敗。







Mac で複数ファイルの一括置換ってどうしてます?パート2
- 2012/07/23
- uchida
<前置き>
とある休日の午後、grepして置換したい場面が訪れた。
(そういえば、macでgrepで置換ってどうするんだろう?)と思った。
早速、googleで『mac grep 置換』で検索してみる。
すると、なんということでしょう。我が社のブログが一番にヒットするではないですか。
読んでみて1秒後
(なんだか難しい・・。)
そして他の検索候補を見てみると「TextWrangler」を使うといいらしい。
ということで、「TextWrangler」でgrepで置換する方法を試してみます。
<grepで置換する>
1.「TextWrangler」をインストールする。
App Storeで検索してインストールします。
4.メニューの「Search」→サブメニューの「Search in (選択したディレクトリ名)」を選択します。
5.次の内容でセッティングする。
①紫枠内に対象とする文字列を入力
②緑枠内に置換後の文字列を入力
③黄色枠内で対象のディレクトリが選択されているか確認
④赤枠内の「Replace All」ボタンを押下する。
6.次の内容で実行
①青枠内をチェックすると保存するたびに、ダイアログが出て保存するか聞いてくるので、はずしています。
②赤枠内のProceedで実行します。






31歳でPHPUnitを使った僕
- 2012/05/24
- uchida
31歳でPHPUnitを使った僕
プロローグ
これまでPHPUnitを使ってこなかったけど、少し心配になる部分があったので
PHPUnitを使ってみることにした。
——————————————————————
第一章『インストール』
インストールは
ここ
を読んでやりました。
——————————————————————
第二章『テスト対象のファイル』
Calc.php
------------------------------------------------------------------
第三章『コマンドの実行』
このコマンドを実行する。
「phpunit --skeleton-test Calc」
------------------------------------------------------------------
第四章『テストファイル』
このファイルは第三章のコマンドを実行すると自動的に作られます。
(よく出来てるな~。)
CalcTest.php
class CalcTest extends PHPUnit_Framework_TestCase
{
/**
* @var Calc
*/
protected $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp()
{
$this->object = new Calc;
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown()
{
}
/**
* @covers Calc::add
* @todo Implement testAdd().
*/
public function testAdd()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
}
------------------------------------------------------------------
第五章『書き換える』
testAddメソッドを次のように書き換える。
/**
* @covers Calc::add
* @todo Implement testAdd().
*/
public function testAdd()
{
$this->assertEquals(3, $this->object->add(1, 2));
}
------------------------------------------------------------------
第六章『実行する』
このコマンドを実行する。
「phpunit CalcTest」
PHPUnit 3.6.10 by Sebastian Bergmann.
.
Time: 1 second, Memory: 4.00Mb
OK (1 test, 1 assertion)
------------------------------------------------------------------
第七章『Eclipseから実行したい。』
MakeGoodというのを使えばいいらしいです。
------------------------------------------------------------------
第八章『MakeGoodのインストール』
①ヘルプ→新規ソフトウェアのインストール

③次のように入力します。
名前:「MakeGood」
ロケーション:「http://eclipse.piece-framework.com/」

⑤あとは使用条件に同意出来ればOKを押してインストール完了です。
------------------------------------------------------------------
第九章『MakeGoodの設定』
①Eclipseの環境設定を開く。

②PHPの実行可能ファイルの設定を開き、追加ボタンをクリックします。

④PHPのデバッグの設定をします。
以下の赤枠部分を環境に応じて選択します。

------------------------------------------------------------------
第十章『MakeGoodのプロジェクトの設定』
①プロジェクトを右クリックしてプロパティをクリックします。
②インクルードパスを設定します。
ライブラリーの追加をクリックします。

③次へをクリック
⑤PHPUnitが選択されている状態で外部フォルダーの追加をクリックし、
PHPUnitがインストールされているフォルダを選択

⑧「ソース」の項目をクリックして「システムインクルードパスの追加ボタン」をクリックします。

⑨プロパティの「MakeGood」の項目を開き、下にある「追加ボタン」をクリックし、テスト対象のフォルダを追加します。

------------------------------------------------------------------
最終章『実際に使ってみる』
①テストプログラムを右クリックしてメニューを出し、「テストの実行」メニューをクリックします。

------------------------------------------------------------------
エピローグ
物語風なのにまったく物語がなかったけど。
やっぱりテストを書く気になれる環境があるのはいいことかな~と思う。





OSC2012 Nagoya 準備出来!
名古屋っす。OSCっす。
久しぶりの愛知っす。昔2年間くらい一宮に住んでたっす(いらない情報)。
ということでブースの準備が出来ました。
OSCは昨日から開催されてまして今日は2日目ですがブースとウチのセミナー(ついでに私のライトニングトーク)は今日なのでウチの本番は今日からって感じです。
峰松のセミナーは15:10から。
『県庁で大活躍(予定)!OpenCOBOL+Perlで汎用機ダウンサイジングに挑んだワケ』
OSCでは同じタイトルで私(村部)と峰松がセミナーやってますが実は別物です。
私のセミナーに参加されたことがある方もぜひ。
峰松がやるときは技術寄りの内容です(私のときは業務寄り)。
私のほうは今回お昼(12:00〜)にライトニングトークをします。
『【飲食OK】ライトニングトークfor Business』の4番手「Roundcubeがいい感じな件」。
OpenCOBOLではなくWebメールネタです。
ブース、セミナー、ライトニングトーク、よろしくおねがいします〜。






OSC2012 Tokyo/Spring セミナーのスライド
雨の中セミナーに来てくださったみなさま、ありがとうございました。
使用したスライドを(ネタ成分を削除して)http://www.lancard.com/it-model/technology/の技術資料に追加、公開しました。
よろしかったら見てみて下さい。




