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
悪いことするのはやめましょう。
以上です。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す