Cloudflareでワードプレスの荒らしを対策する

スポンサーリンク
Cloudflare
スポンサーリンク
↑管理人が個人でUnity+Live2Dで作成しているスマホゲームです

cloudflareではDDoSは検知されていないのに異様にphp-fpmやmariadbのCPU使用率が高いという時に調べたところ、検索荒らしと連続コメント投稿荒らしが発生していました。コメントはパスワード制にしており弾かれていたので、かえって発見が遅れてしまいました。
iptablesやfirewalldなどで海外アクセス自体を弾きたいのですが、Let’s encryptやgoogleなども弾いてしまうので、もっと簡単に対策してみます。

まず、検索対象を投稿とタイトルだけに絞ります。function.phpに以下を追加します。

/**
 * 検索を「投稿のタイトルのみ」に限定する
 */
function my_search_title_only( $search, $query ) {
    global $wpdb;

    // 管理画面以外 かつ 検索時のみ適用
    if ( $query->is_search() && $query->is_main_query() && ! is_admin() ) {
        $search = '';
        $q = $query->get( 's' );
        if ( $q !== '' ) {
            $like = '%' . $wpdb->esc_like( $q ) . '%';
            $search = $wpdb->prepare( " AND ({$wpdb->posts}.post_title LIKE %s) ", $like );
        }
    }
    return $search;
}
add_filter( 'posts_search', 'my_search_title_only', 10, 2 );

/**
 * 検索対象を投稿のみに限定する
 */
function my_search_filter_post_type( $query ) {
    if ( $query->is_search() && $query->is_main_query() && ! is_admin() ) {
        $query->set( 'post_type', 'post' );
    }
}
add_action( 'pre_get_posts', 'my_search_filter_post_type' );

次にCloudflareで検索とコメント投稿を海外からさせないようにします。

Cloudflare ダッシュボード → Security → セキュリティルール
で、ルールを作成を押します。

条件は、

フィールド:URIクエリー文 → 次を含む → replytocom

AND

フィールド: 国 → 次と等しくない → Japan

アクション: ブロック または マネージドチャレンジ

で登録します。

もう一つは

フィールド:URIクエリー文 → 次を含む → s=

AND

フィールド: 国 → 次と等しくない → Japan

アクション: ブロック または マネージドチャレンジ

にします。

30分でこのブロック数!効果てきめんです。

1 Star2 Stars3 Stars4 Stars5 Stars (まだ投票されていません)
読み込み中...

コメント

広告ブロッカーを無効にしてください。

タイトルとURLをコピーしました