Linuxサーバーはphpとcronと連携して攻撃者のIPを自動的にブロックします
最近忙しすぎて長い間何も書いていませんでしたが、毎日 Web ベンチを使って会社のサーバーを攻撃しているバカがいます
まず、攻撃に対する自動防御を共有しましょう。攻撃されたこの Web サイトの一般的な展開状況について説明します。この Web サイトは主に nginx+mysql+php であり、Web とデータベースをそれぞれホストしているオペレーティング システムです。ポート 80 は CentOS で、データベース サーバーはイントラネット上にあります。攻撃者の手口は実際には非常に簡単で、各リクエストが送信された後で、Web ベンチの Web サイト ストレス テスト ツールを使用してデータベースに大量のリクエストを送信します。はそれに応じて応答し、内容を読み取って最終的に表示します。その結果、データベースと Web の間で大量のデータ交換が発生し、さらに mysql が接続数の上限に達し、リクエストが拒否されました。さらに、攻撃者は時間があり、フローティング IP を変更し続けたので、ファイアウォールで IP アドレスをブロックしても意味がありません
最初に私がやったのは、PHP を使用して攻撃者のアドレスを取得することでした。エージェント ヘッダーを使用して Web ベンチへのアクセスであるかどうかを判断します。そうであれば、それを強制終了してデータベースへのリクエストを停止します。ただし、相手が頻繁にリクエストを送信するため、深刻な消費が発生します。他の方法を考える必要があるように思えましたが、最終的に、私は解決策を思いつき、実際のテストで実行可能であることがわかったので、それを全員に共有しました。 PHP を使用してユーザー エージェント ヘッダーを取得し、Web ベンチ ソースであるかどうかを判断します。その場合は、このファイルの内容が IP をブロックするためのルールを作成します。次に、chmod 関数を使用してファイルを変更します。このファイルは実行可能であり、cron を使用します。サービスはこのファイルを読み取って実行し、IP アドレスをブロックします。さらに、ブロックがブロックされると、不運であることを通知する電子メールが送信されます。
具体的な実装コードは次のとおりです:
IF(isSet($_SERVER['HTTP_USER_AGENT']) And Trim($_SERVER['HTTP_USER_AGENT'])!='') { $_SERVER['HTTP_USER_AGENT']=StrToLower($_SERVER['HTTP_USER_AGENT']); IF(StriStr($_SERVER['HTTP_USER_AGENT'],'webbench')!==False) { $p='/home/www/webbench.sh'; $_SERVER['REMOTE_ADDR']=isSet($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknow'; File_Put_Contents($p,"#!/bin/bash\niptables -I INPUT -s {$_SERVER['REMOTE_ADDR']} -j DROP;\n",LOCK_EX); Chmod($p,0755); chown($p,'www'); Function sMail($to,$tit,$msg) { IF(Filter_var($to,FILTER_VALIDATE_EMAIL)==''){ throw new Exception('??地址??!'); } $tit='=?UTF-8?B?'.Base64_Encode($tit).'?='; $msg = str_replace("\n.","\n..",$msg); //Windows如果在一行开头发现一个句号则会被删掉,要避免此问题将单个句号替换成两个句号 Return Mail($to,$tit,$msg,'From:No-reply@adm.bossadm.com.tw'."\n".'Content-Type:text/html;charset=utf-8'); } sMail('see7di@gmail.com','【WebBench又?始了-by http://www.7di.net】!',date('Y-m-d H:i:s',time())." {$_SERVER['REMOTE_ADDR']}"); Header('Location:http://127.0.0.1'); Die(); }}
その後、もう一度実行して、メール部分をシェルファイルに入れました。上記のコードは次のように変更されます:
rrree

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

Phpoopでは、self ::は現在のクラスを指し、親::は親クラスを指し、静的::は後期静的結合に使用されます。 1.Self ::静的方法と一定の呼び出しに使用されますが、後期静的結合をサポートしていません。 2.Parent ::サブクラスには、親クラスのメソッドを呼び出すために使用され、プライベートメソッドにアクセスできません。 3.Static ::継承と多型に適した後期静的結合をサポートしますが、コードの読みやすさに影響を与える可能性があります。

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。
