サーバーがDDOS攻撃を受けており、それを実行しているIPをブロックしたいのですが、攻撃者のIPを特定するためにどのログを探す必要がありますか?
tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more
上位のIPアドレスを見てください。他のどれよりも目立つ場合は、それらがファイアウォールの1つになります。
netstat -n|grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more
これは、現在アクティブな接続を調べて、ポート80に接続しているIPがあるかどうかを確認します。IPアドレスが列45で開始しない可能性があるため、cut -c 45-を変更する必要がある場合があります。あなたのウェブサーバー、これもそれを拾うでしょう。
これらのいずれにも過度に標準から外れているIPが表示されない場合は、ボットネットが攻撃していると想定し、ログで特定のパターンを探して何が行われているかを確認する必要があります。 wordpressサイトに対する一般的な攻撃は次のとおりです。
GET /index.php? HTTP/1.0
Webサイトのアクセスログを確認すると、次のようなことができる場合があります。
cut -f 2 -d '"' yourweblog.log|cut -f 2 -d ' '|sort|uniq -c|sort -nr|more
最も一般的なヒットURLが表示されます。サイト全体をロードするのではなく、特定のスクリプトを実行していることに気付くかもしれません。
cut -f 4 -d '"' yourweblog.log|sort|uniq -c|sort -nr|more
一般的なUserAgentを表示できます。攻撃で単一のUserAgentを使用している可能性があります。
トリックは、通常のトラフィックには存在しない攻撃トラフィックと共通するものを見つけ、それをiptables、mod_rewrite、またはウェブホストのアップストリームでフィルタリングすることです。 Slowlorisに打撃を受けた場合、Apache 2.2.15にreqtimeoutモジュールが追加され、Slowlorisからの保護を強化するためにいくつかの設定を構成できるようになりました。
参考:ISPと協力して、上流でブロックできるかどうかを確認してください。
ここにいくつかの良いヒントがあります。これも追加します:
netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | awk -F: '\''{print $1}'\'' | sort | uniq -c | awk '\''{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'\''
これをエイリアス(たとえば、nn)の下に置きます。これにより、より確立された接続を持つIPの「グラフィカルな」視点が得られます。
お役に立てれば。
これを機能させることができなかった人のために、私は構文を修正しましたので、Ubuntuの下で動作します:
netstat -an|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|awk '{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'
DOS攻撃をチェックするための私のお気に入りのログファイルは、/ var/log/secure(Redhat/Centos/Fedora ....の下)および/var/log/auth.log(ubuntu、debian ...の下)です。攻撃者のソースIPからの失敗したログイン試行が表示されます。ほとんどの場合、辞書ベースの攻撃です。
どのディストリビューション?
ログはUbuntuで/var/log/Apache2/access.logの下にあると思います...おそらくDebianもそうです。
Sudoとしてupdatedbを実行し、コマンドラインからaccess.logを見つけます。
編集:これは、ページをリクエストするか、ポート80を介して直接ヒットした場合にのみ発生すると思いますが、他のポートにヒットしている場合は、必要な情報が表示されないため、どのプロセスであるかを確認する必要があります。そのポートで実行し、そのプロセスの接続ログを確認します。
分散型DOSを使用している場合は、ブロックするIPが1つ以上あり、IPが偽造される可能性があるため、ISPにmfinniと尋ねる方がよいでしょう。また、これはサーバーに対するDOSを超えているかもしれませんが、実際の攻撃が検出されないようにするおとりです。そのため、公開されているすべてのサービスが最新のソフトウェアで実行されていることを確認してください。 Apacheのmod_dosevasiveにも興味があるかもしれません。
特定のポートが疑われる場合は、tcpdumpを使用して、$ tcpdump -vvポートXであるアドレスを確認できます。
最初に、DOSのタイプを判別する必要があります。一部の攻撃は非常にステルスですが効果的です(スローロリス)。一部の攻撃は非常に重いため、ISPがダウンする可能性があります(ISPソースよりも高い帯域幅からのICMPフラッド)。
DOSのタイプを確認したら、ISPに連絡して、トラフィックをフィルタリングできるかどうかを尋ねます。
ICMPフラッドが非常に重いので、上流のISPにBGPコミュニティ経由で宛先IPをフィルターで取り除くよう依頼する必要がありました。
私のサーバーを保護するために、私はFail2Ban簡単なスクリプトを使用しています
/ var/log/pwdfailや/ var/log/Apache/error_logのようなログファイルをスキャンし、パスワードの失敗が多すぎるIPを禁止します。ファイアウォールルールを更新して、IPアドレスを拒否します。