DNSで攻撃元のソースIPを調べる方法

DNSサーバーから以下のようなエラーログが出まくりました。

general: error: socket: file descriptor exceeds limit (4096/4096)

原因は同じアドレスからあるドメインへの問い合わせを何度もしていたことが原因みたいでした。

DNSで送信元のIPを追跡する

一体、どこから攻撃されているのか全く分からないので、一つずつ順を追って確認をしていきます。
じぶんもすぐに忘れてしまうので、メモっちまいます。

まずはどこ向けのIPアドレスが大量に来ているのかを確認

まずは、どこへの問い合わせが大量に来ているのかを探る為に、以下のコマンドで確認します。

# netstat -an | more

これでは、まったくわからないので、”ESTABLISHED”になっているIPだけを抽出します。

# netstat -an | grep ESTABLISHED

なおかつ、送信先のアドレスをまとめて確認したいので、出力結果の”Foreign Address”をソートして検索します。

# netstat -an | grep ESTABLISHED | sort -k5

さらに、いくつあるのかをカウントします。

# netstat -an | grep ESTABLISHED | sort -k5 | grep  (問い合わせ先のIPアドレス) | wc -l
476

大量に来ていたアドレスのドメインを調べます。

# tcpdump host X.X.X.X(問い合わせ先のIPアドレス)

ここで、悪さしているドメイン(xxx.com)を確認できるんですが、よくやりますね。お隣の大国は。
大体、中か韓なんだよね。

困ります。仲良くしましょう。

送信元のアドレスを突き止める

まずは、以下の階層へ移動します。

# cd /var/named/chroot/var/log/

この階層で”queries.log”があります

# ls
queries.log

そこで、中身を確認。

# grep "xxx.com" queries.log | more

これも大量にあるので、送信元のIPを頭に持ってきて見えやすくしましょう。
※出力結果で送信元のアドレスは左から6つ目にあるので”awk ‘{print $6}’”のコマンドを叩きます。

# grep "xxx.com" queries.log | awk '{print $6}' | more

同じ、アドレスはまとめるようにします。
※たとえば、1.1.1.1が5つあるとしたら出力結果に

5 1.1.1.1

って感じで表示させる

# grep "xxx.com" queries.log | awk '{print $6}' | sort -k1 | uniq -c | more

最後に以下コマンドを叩けば、最後尾に一番多く問い合わせをしている送信元IPが何か突き止められます。

# grep "xxx.com" queries.log | awk '{print $6}' | sort -k1 | uniq -c | sort -k1 

悪いことするのはやめましょう。

以上です。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!