そのようなリクエストが来たら、どうして解決しないのかと考えました。 タスクはセキュリティ機能に関連しているため、別のセキュリティサービスを開始する決定は明らかでした。
現時点では、セキュリティサービスはWordPress専用に開発されています。これにはいくつかの理由があります。最大の需要、多数のWebサイトがこの特定のCMSを使用する、複数のCMSをすぐに開発する複雑さです。
スパム対策保護はセキュリティの一部であるという事実にもかかわらず、私たちはこれら2つのサービスを分離することにしました。 これにはいくつかの理由があります。
- エラーの増加、他のプラグイン/テーマとの互換性の問題につながるプラグインの複雑さ
- 検索クエリプロモーション
- より簡単な開発と独立したアップデートのリリース
- プラグインインターフェイスは、多数のextによって複雑になりません。 ユーザーが1つの関数のみを使用する場合は不要なオプション
- CleanTalkコントロールパネルの個別の管理およびロギングインターフェイス
総当たり攻撃に対する保護を実装することから始め、将来的に徐々に機能を拡張することにしました。
ブルートフォース攻撃に対する保護 -不正な認証試行の間に遅延を追加することにより実装されます。 最初の試行では、後続の10秒間、3秒の遅延が設定されます。 1時間以内に許可の試行が10回失敗すると、IPアドレスがFireWallデータベースに24時間追加されます。 ハッカーがアカウントのパスワードを見つけようとするのを防ぐために、これで十分です。なぜなら、彼らは試行と試行の間の期間を大幅に延長し、数万または数十万になる可能性があるからです。 すべてのアクセス試行ログは、週次レポートとサービスコントロールパネルで利用できます。これにより、FireWallブラックリストにIPアドレスをすばやく追加できます。 ブルートフォース攻撃に対する保護は、管理者権限を持つユーザーにのみ適用されます。
トラフィック制御 -次のような訪問者に関する情報を表示できます。
- IP
- 国
- 最後のリクエストの日付/時刻
- 許可/ブロックされたHTTP要求の数
- ステータス-拒否または許可
- 訪問ページのURL
- ユーザーエージェント
トラフィック制御の別のオプション-「リクエストの数が多い場合は訪問者をブロックする」-1時間あたりのHTTPリクエストの数を超えたIPのサイトへのアクセスをブロックします。 リクエストの数は設定で設定できます。デフォルトは1000です。IPを超えると、24時間FireWallブラックリストに追加されます。
これは、大量のHTTPリクエストがサイトに送信されたときに、サイトでのDoS攻撃の問題を解決するのに役立ちます。そのため、応答が停止したり、動作が非常に遅くなったりします。 この状況は、大規模なブルートフォース攻撃によっても発生します。
監査ジャーナル -WordPress管理領域でユーザーアクションを制御し、日付/時刻および滞在期間とともにページアクセスのログを保持できます。 管理者のアクションと不正アクセスを制御し、問題が発生した場合に、どこで、誰によって、どのような変更が行われたかを把握できます。
マルウェアスキャナー -WordPressファイル、プラグイン、テーマをスキャンして、悪意のあるコードと変更を探します。 ファイルへの変更が許可されていない場合、元のファイルを復元できます。
自動モードでのスキャンは24時間に1回行われ、手動で開始することもできます。
セキュリティFireWall -IPアドレスによるPOST / GET要求のサイトへのアクセスをブロックします。 FireWallのIPアドレスのベースは、一般的なCleanTalkブラックリストベースから形成されます。 スパム活動が多いIPアドレスまたはブルートフォース攻撃の試みで気づいたIPアドレスは、その中に含まれます。 個々のIPアドレス/サブネットと国の両方に、独自のブラックリストを使用することができます。 このため、サイトの負荷を軽減したり、DOS攻撃をブロックしたりできます。
リリースの準備 :
- アウトバウンドリンクスキャナー
- スパムによって宣伝されているドメインのデータベース上のリンクを確認する
- XSSおよびSQLインジェクションに対する保護
開発ノート
すべてがゼロから書かれており、他のソリューションを覗き込むことはありません。 これは、他の人の間違いをキャッチせず、アプリケーションに対する独自のビジョンを開発するために、意図的に行われました。
他のCMSのさらなる開発が計画されているため、モジュール設計を開発することが決定されました。 オブジェクト指向のアプローチとそのようなものを使用してください。 もちろん、その過程で、私はこの概念にあまり適合せず、「クランチ」なしではできないさまざまな問題を解決しなければなりませんでした。
その結果、いくつかのクラスを取得しました。これらのクラスは、大幅な修正なしで、たとえばデータベース用のラッパーを使用して、他のCMS(自己記述型を含む)で使用できます。
Cron Wordpressに依存しないカスタムCronクラスが記述されています。 それでも、セキュリティ用のアプリケーションは、機能する場合と機能しない場合、またはサードパーティの開発者が干渉する可能性のある機能に依存するべきではありません。
コードのヒューリスティック分析を実装するために、独自のパーサーを作成してコードを最小化し、開発を続けます。 その助けにより、危険な変数、関数、設計を追跡することが可能になります。 他のプラグイン/アンチウイルス/アプリケーションが同様のソリューションを使用するかどうかはわかりません(おそらくそうではありません)が、これは独立した開発の長所と短所であり、私たちのアプローチはユニークであることが判明したかもしれません。
「ミニマイザー」の例:
ソースコード:
<?php //$some = 'n'.'o'.'t' $some = 's'.'o'.'m'.'e'; // String concatenation $stuff = 'stuff'; $first = 'first'; $func = 'func'; $first_func = $some."$first$func"; // Variable replacement ?> $some = 'n'.'o'.'t'; <?php // Variable replacement $i = 'i'; $c = 'c'; $o = 'o'; $co = $c. // some obfuscating comment $o; $ico = $i/* some obfuscating comment */.$co; require($some.'_'.$stuff.'.'.$ico); require($some.'_'.$stuff.'.php'); require($some.'_'.$stuff.'.p'.$ico); $first_func(); ?>
結果:
<?php $some='some';$stuff='stuff';$first='first';$func='func';$first_func='somefirstfunc';$i='i';$c='c';$o='o';$co='co';$ico='ico';require'some_stuff.ico';require'some_stuff.php';require'some_stuff.pico';somefirstfunc();?>
より理解しやすい形で持ち込む場合:
<?php $some='some'; $stuff='stuff'; $first='first'; $func='func'; $first_func='somefirstfunc'; $i='i';$c='c';$o='o'; $co='co'; $ico='ico'; require'some_stuff.ico'; require'some_stuff.php'; require'some_stuff.pico'; somefirstfunc(); ?>
彼ができること:連結、変数の置換、変数の起源の追跡(たとえば、信頼できない$ _POSTと$ _GETを使用した場合)、さまざまなパラメーターに従ってファイル接続の追跡とチェック(include、require)など。 これが、機能が追加される基礎であると言えます。
特にWPMSをサポートしたくありませんでした。機能ごとに、これがメインサイトであるかどうか、セカンダリサイトのユーザーがメインサイトからキーを継承するか、独自のアクセスキーを入力するか、セカンダリサイトがプラグインのアクティベートを許可されているかどうかなどを考慮に入れなければならないためです 残念ながら、非互換性のため、WPMSおよびセカンダリサイトの機能の一部を削除する必要がありました。
一般に、いくつかの場所でコードの観点から見た美しいアプリケーションであることが判明しました。これは将来開発します。
プラグイン自体はディレクトリにあります。