title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/05 >>12345678910111213141516171819202122232425262728293031
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM DoS攻撃 と DDoS攻撃
小さくも大きくも閉じたりもしません
19/11/01 02:15 / PMailServer2

ちょっと経過のメモ的な記事なので、DoSやDDoSの詳しい説明じゃありません。

10月30日位から、当サーバーに不自然なアクセスが発生して、いつもであれば「また spam かブルートフォースアタックかな?」と思っていましたら、いつもと勝手が違い、25/587/587/110/995/80 に総当たりでアクセスが発生。

最初は、某国の大手ISPから、連続したアクセスだったのですが、毎秒20位で、ちょっと煩わしい程度のアクセスでしたので、とりあえずルーターでブロックをしていました。

暫くしてアクセスが収まったので、ちょっとクラッカー気取りの奴が、使ったんだろうということでそのままほっておいたのですが、今度は少し規模が大きくなり、複数台から DoS攻撃になり、少しサーバー運用に支障が出てきました。

面倒だなと思いつつ、これらのルーターでブロックしたのですが・・・この辺りからルーターでブロックするのも手間がかかるので、DoS検知機能を実装することにしました。

単純に PMailServer2 でオープンしているポート全て共通でIPアドレスと接続回数をカウントして、管理者に通知メールを送るようにした訳です。

これが前回の記事の顛末です。

で DoS攻撃っぽいナニカを食らいつつ PMailServer2 のテストを行っていたのですが・・・

DoS攻撃が止まったりまた来たりを繰り返していたのですが、クラッカー側は DoS攻撃から DDoS攻撃に切り替えて、複数IPからの攻撃に切り替えたようです。

とりあえず 600 IPアドレスくらいからまとめて接続要求を食らいサーバーがパンク寸前に。

と、ここで DoS攻撃と、DDoS攻撃の違いを軽く説明しますと

DoS攻撃は、Denial of Service attack で基本的な内容としては、サーバー側で空いているポートに対して、接続をした上でなにかコマンドを送ったりして負荷をかけサービスをダウンさせる攻撃です。

DDoS攻撃は、Distributed Denial of Service attack で、DoS攻撃を複数のPC(ワームとかに感染したいわゆるゾンビPC)を使って攻撃することです。
複数台になっているだけで、中身は DoS攻撃です。

私はセキュリティの専門家じゃありませんので、DoS なのか DDoS なのか区別が付きませんが、これらの攻撃が行われる際によく併用される手段として、IPスプーフィング(IP Spoofing)があります。

送信元のIP偽装のことです。

で、よくある方法としては、送信元のIPを Private IP にして LAN の中からのアクセスだとサーバーに思わせて突破する方法なんかを取ったりします。

で、今回は、送信元のIPを Private IP に偽装するのでは無く、グローバルIPに偽装して送ってきていたので「偽装IPっぽいんだけど、エンドポイント側のサーバーでは確認しようが無いので、とりあえず IP 単位でブロックするしかないかな」と考えていたのですが、DoS検知機能をつけて内容を確認していた所、xx.xx.xx.0 という IP から接続があったので「これは IP偽装で確定だな」と。

さて、IP偽装を併用した DDoS攻撃と確定したのですが、どうやって対処するかなと考えていたのですが、IP偽装が楽しいのかどうかわかりませんが、いくつかの C Class 単位でバラバラな IP を順繰りに送信してきているようです。

そんなら一定時間内に接続してきたIPリストがしきい値を超えたら、DDoS攻撃と判定する。という処理を追加した所、ちゃんと検出することができるようになりました。

photo


そんなこんなで現在はこのような設定になっています。

photo


こちらは実際に DDoS攻撃を検知した際に管理者へ送られてくるメールの一部です。
この検知をした時は、だいたい 600 IP くらいでした。

ここ1週間位の間で最大ピークは 1,500IP 〜 2,000IP くらいかな?

さて検知をしたのはいいんですが、対策しないとなりません。

最初は、メールの内容を受信した上で、その中身を取り出して RTX に telnet して ip filter を書き込むソフトを1本作ったのですが(設定にある収束とは、ip filter を解除する為のメールです。フィルタかけっぱなしって訳にかいかんですし)

そもそも、RTX って具体的に何個フィルタ書けるかわからんのですね。
以前、YAMAHA に問い合わせたことがあるんですが、いまいちちゃんとした回答が得られませんでした。
多分、メモリの許す限りだと思いますが。

逆を言うとメモリぎりぎりまで自動でフィルタを書き込んだ場合、ルーターそのものの挙動が怪しくなる可能性があると考えて、この方法は断念します。

もちろん、この程度の数のフィルタであれば RTX 自体は屁でもないと思いますが。
(結構な数のフィルタを設定しましたが、RTX830 のピークCPUは 10% です)

うーん、どうするかなぁ、と考えていたのですが、PMailServer2 の接続部分のコードを確認していて、そもそも「なぜサーバーの負荷が上がるのか?」から考えますと「接続を受けちゃう(Acceptする)から」です。

でも、Accept しないと Winsock 的に接続元のIPとかは確認できませんので、Accept 処理の負荷がどれくらいかかるかを確認してみましたが、この部分はそんなに大きくないんですよね。

じゃぁ、どこで負荷が?になりますが、実は接続時の初期化処理がサーバー側で走り、これが大量に詰まって(うちはデバッグ用に常時レベル3のログを記録している為更に詰まる)サーバー側の負荷が上がるという訳です。

それなら話は早いと、accept して IP取得したら確認して最短で切断するコードを追加すれば良いのです。

photo


で更に追加したフィルタがこれ。

最初は全てのプロトコルに適用していたのですが、SMTPは受信をするので、これだけは適用外にしました。

photo


で結果はこれ。
該当する場合は本当に最短処理で接続を切ります。

その上で、この設定画面を作っていて気がついたのは

SMTP over TLS / POP3 over TLS / IMAP4 over TLS は使わないほうがいいよね。

です。

正直な所、STARTTLS に対応していないクライアントも存在する以上、over TLS ポートは無いと困るケースもあるのですが、そもそも論として「そんな(STARTTLS にも対応していないような)古いクライアントを使うほうが悪い。」という結論に達しました。

今回のように総当たり形式の DoS攻撃の場合、ポートが空いているだけでサーバーへの負担は大きくなります。
(ルーター側は NAT 等で転送先のポートが指定されていないパケットは破棄するだけですし)

更に更に、SMTP(25)以外のポート開放は国内に限定すればいいんじゃない?とも。

「海外から POP3 でメールを受信します。」というケースであれば当然オープンにしなければなりませんが、私の環境はそんなインターナショナルな環境ではありませんので、日本国内からアクセス可能であれば「メールの受信側ポートは空けておく必要は無い」という結論になりました。

言われてみれば、そんなの当たり前という話なんですが、実際に攻撃されなければ気が回りませんでしたよ。
そういう意味では感謝です。

そもそも、自社でメールサーバーを運用する場合、殆どこのケースになる所が多いと思います。
正直いうと、クラウド(AWS なんかだと Route53 の
geolocation とか?)は対応が進んでいますが、比較的高級機なルーターでも、この地域情報を使ったフィルタってのが実装されていないんですよね。(知ってる限りでは)

PMailServer では15年近く前から地域情報使ってるのに。

IPv4アドレスは毎日変動していますが、既に枯渇しておりそんなにリアルタイムに更新する必要は無いので、いい加減各ルーターメーカーは地域情報によるフィルタを実装するべきじゃないですかね?

PMailServer2 で使っている地域情報データは余計なデータ入りでも 1MB 程度ですし。

閑話休題

話が逸れましたが、この辺りの処理も入れた所「とりあえず、攻撃は受ける。規模は大したことがなければフィルタに登録してブロック。あとは過ぎるのを待つ。収束したらフィルタから外す」で対応できそうです。

開発者特権で Enterprise版を使っていますので、20プロセスくらい平行起動させましたので、完全同時に 2,000アクセス以上なければ耐えますし。(うちのサーバーはスペックが非常に大変凄くしょぼいので、これくらいにしてます。)

予定ではひとまず今週中に 2.41b としてリリースする予定です。

もし DoS 的な攻撃で困っている場合は、メールにてご相談下さい。対処方法を考えてできるレベルであれば対応したいと思います。

[更新日付:2019/11/01 02:15:00]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+08d686f5439d8c9b468a878082c437dbc2895e54]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+08d686f5439d8c9b468a878082c437dbc2895e54]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.