Вот список “хороших ботов” для моего файла .htaccess Apache. Что-то отсутствует? У меня нет времени поддерживать черный список плохих ботов.

Вопрос или проблема

Вопрос для новичков: я пытаюсь создать белый список хороших ботов для моего файла apache htaccess, потому что не имею достаточного времени для поддержания постоянно расширяющегося черного списка плохих ботов.

Тем не менее, я хочу быть осторожным и не блокировать легитимных посетителей, поисковые системы, браузеры или ботов. Поэтому я создал следующий код htaccess с помощью ИИ. Заблокирует ли он какой-либо легитимный трафик? Заблокирует ли он плохих ботов?

Я понимаю, что мне придется время от времени обновлять это, чтобы включить любые новые легитимные источники трафика.

(Обратите внимание, что я планирую исключить код sql-injection, так как я уже заблокировал это с помощью кода в своих веб-формах.)

Буду признателен за любые советы. Спасибо!

Вот код:

# Включить RewriteEngine
RewriteEngine On

# Заголовки безопасности
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"

# Запретить перечисление каталогов
Options -Indexes

# Белый список: разрешить все известные браузеры, поисковые системы и хорошие боты

## Разрешить все известные браузеры
RewriteCond %{HTTP_USER_AGENT} ^.*Mozilla.*        [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Opera.*          [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*OPR.*            [NC,OR]    # Новый UA Opera
RewriteCond %{HTTP_USER_AGENT} ^.*Msie.*           [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Firefox.*        [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*FxiOS.*          [NC,OR]    # Firefox для iOS
RewriteCond %{HTTP_USER_AGENT} ^.*Netscape.*       [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Safari.*         [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Edge.*           [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Edg.*            [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Chrome.*         [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*CriOS.*          [NC,OR]    # Chrome для iOS
RewriteCond %{HTTP_USER_AGENT} ^.*Brave.*          [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Vivaldi.*        [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Seamonkey.*      [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Konqueror.*      [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Iceweasel.*      [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*UCBrowser.*      [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Maxthon.*        [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*YaBrowser.*      [NC,OR]     # Яндекс Браузер
RewriteCond %{HTTP_USER_AGENT} ^.*Midori.*         [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Avant.*          [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*QQBrowser.*      [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*CocCoc.*         [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Sogou.*          [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Baidu.*          [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*SamsungBrowser.* [NC,OR]    # Браузер Samsung
RewriteCond %{HTTP_USER_AGENT} ^.*MiuiBrowser.*    [NC,OR]    # Браузер Xiaomi

## Разрешить все известные боты поисковых систем
RewriteCond %{HTTP_USER_AGENT} ^.*Googlebot.*      [NC,OR]    # Google
RewriteCond %{HTTP_USER_AGENT} ^.*Bingbot.*        [NC,OR]    # Bing
RewriteCond %{HTTP_USER_AGENT} ^.*Slurp.*          [NC,OR]    # Yahoo
RewriteCond %{HTTP_USER_AGENT} ^.*DuckDuckBot.*    [NC,OR]    # DuckDuckGo
RewriteCond %{HTTP_USER_AGENT} ^.*YandexBot.*      [NC,OR]    # Яндекс
RewriteCond %{HTTP_USER_AGENT} ^.*Exabot.*         [NC,OR]    # Exalead
RewriteCond %{HTTP_USER_AGENT} ^.*facebot.*        [NC,OR]    # Facebook
RewriteCond %{HTTP_USER_AGENT} ^.*ia_archiver.*    [NC,OR]    # Internet Archive
RewriteCond %{HTTP_USER_AGENT} ^.*AhrefsBot.*      [NC,OR]    # Ahrefs
RewriteCond %{HTTP_USER_AGENT} ^.*SemrushBot.*     [NC,OR]    # SEMrush
RewriteCond %{HTTP_USER_AGENT} ^.*BLEXBot.*        [NC,OR]    # BLEXBot
RewriteCond %{HTTP_USER_AGENT} ^.*DotBot.*         [NC,OR]    # Dotbot
RewriteCond %{HTTP_USER_AGENT} ^.*Mediapartners-Google.* [NC,OR] # Google AdSense
RewriteCond %{HTTP_USER_AGENT} ^.*Baiduspider.*    [NC,OR]    # Baidu
RewriteCond %{HTTP_USER_AGENT} ^.*MojeekBot.*      [NC,OR]    # Mojeek
RewriteCond %{HTTP_USER_AGENT} ^.*PetalBot.*       [NC,OR]    # Huawei Search
RewriteCond %{HTTP_USER_AGENT} ^.*Mail.RU_Bot.*    [NC,OR]    # Mail.ru
RewriteCond %{HTTP_USER_AGENT} ^.*GibiruBot.*      [NC,OR]    # Gibiru
RewriteCond %{HTTP_USER_AGENT} ^.*Gigabot.*        [NC,OR]    # Gigablast
RewriteCond %{HTTP_USER_AGENT} ^.*BraveBot.*       [NC,OR]    # Brave Search
RewriteCond %{HTTP_USER_AGENT} ^.*QwantBot.*       [NC,OR]    # Qwant
RewriteCond %{HTTP_USER_AGENT} ^.*StartpageBot.*   [NC,OR]    # Startpage
RewriteCond %{HTTP_USER_AGENT} ^.*EcosiaBot.*      [NC,OR]    # Ecosia
RewriteCond %{HTTP_USER_AGENT} ^.*SwiftBot.*       [NC,OR]    # Swisscows
RewriteCond %{HTTP_USER_AGENT} ^.*MetaBot.*        [NC,OR]    # MetaGer
RewriteCond %{HTTP_USER_AGENT} ^.*SearchEncrypt.*  [NC,OR]    # Search Encrypt
RewriteCond %{HTTP_USER_AGENT} ^.*WolfBot.*        [NC,OR]    # WolframAlpha
RewriteCond %{HTTP_USER_AGENT} ^.*OscoboBot.*      [NC,OR]    # Oscobo
RewriteCond %{HTTP_USER_AGENT} ^.*LookseekBot.*    [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*NeevaBot.*       [NC,OR]    # Neeva
RewriteCond %{HTTP_USER_AGENT} ^.*PeekBot.*        [NC,OR]    # Seekport
RewriteCond %{HTTP_USER_AGENT} ^.*YacyBot.*        [NC,OR]    # YaCy
RewriteCond %{HTTP_USER_AGENT} ^.*FindxBot.*       [NC,OR]    # Findx
RewriteCond %{HTTP_USER_AGENT} ^.*MeiliBot.*       [NC,OR]    # Meilisearch
RewriteCond %{HTTP_USER_AGENT} ^.*SphinxBot.*      [NC,OR]    # Sphinx
RewriteCond %{HTTP_USER_AGENT} ^.*SeznamBot.*      [NC,OR]    # Seznam
RewriteCond %{HTTP_USER_AGENT} ^.*CocCocBot.*      [NC,OR]    # Cốc Cốc
RewriteCond %{HTTP_USER_AGENT} ^.*Linguee.*        [NC,OR]    # Linguee
RewriteCond %{HTTP_USER_AGENT} ^.*PresearbotBot.*  [NC,OR]    # Presearch
RewriteCond %{HTTP_USER_AGENT} ^.*KrakeBot.*       [NC,OR]    # Kagi
RewriteCond %{HTTP_USER_AGENT} ^.*WebCrawler.*     [NC,OR]    # WebCrawler
RewriteCond %{HTTP_USER_AGENT} ^.*DeuSu.*          [NC,OR]    # DeuSu
RewriteCond %{HTTP_USER_AGENT} ^.*GigablastOpenSource.* [NC,OR] # Gigablast OpenSource

## Разрешить всех известных хороших ботов и сервисы
RewriteCond %{HTTP_USER_AGENT} ^.*MJ12bot.*        [NC,OR]    # Majestic
RewriteCond %{HTTP_USER_AGENT} ^.*Twitterbot.*     [NC,OR]    # Twitter
RewriteCond %{HTTP_USER_AGENT} ^.*LinkedInBot.*    [NC,OR]    # LinkedIn
RewriteCond %{HTTP_USER_AGENT} ^.*Pinterest.*      [NC,OR]    # Pinterest
RewriteCond %{HTTP_USER_AGENT} ^.*Slackbot.*       [NC,OR]    # Slack
RewriteCond %{HTTP_USER_AGENT} ^.*WhatsApp.*       [NC,OR]    # WhatsApp
RewriteCond %{HTTP_USER_AGENT} ^.*TelegramBot.*    [NC,OR]    # Telegram
RewriteCond %{HTTP_USER_AGENT} ^.*Discordbot.*     [NC,OR]    # Discord
RewriteCond %{HTTP_USER_AGENT} ^.*SkypeUriPreview.* [NC,OR]   # Skype
RewriteCond %{HTTP_USER_AGENT} ^.*Applebot.*       [NC,OR]    # Apple
RewriteCond %{HTTP_USER_AGENT} ^.*redditbot.*      [NC,OR]    # Reddit
RewriteCond %{HTTP_USER_AGENT} ^.*Nimbostratus.*   [NC,OR]    # Tumblr
RewriteCond %{HTTP_USER_AGENT} ^.*Datadog.*        [NC,OR]    # Datadog Monitoring
RewriteCond %{HTTP_USER_AGENT} ^.*APIs-Google.*    [NC,OR]    # Google API
RewriteCond %{HTTP_USER_AGENT} ^.*Google-Read-Aloud.* [NC,OR] # Google Read Aloud
RewriteCond %{HTTP_USER_AGENT} ^.*W3C_Validator.*  [NC,OR]    # W3C Validator
RewriteCond %{HTTP_USER_AGENT} ^.*GTmetrix.*       [NC,OR]    # GTmetrix
RewriteCond %{HTTP_USER_AGENT} ^.*PageSpeed.*      [NC,OR]    # Google PageSpeed
RewriteCond %{HTTP_USER_AGENT} ^.*WebPageTest.*    [NC,OR]    # WebPageTest
RewriteCond %{HTTP_USER_AGENT} ^.*StatusCake.*     [NC,OR]    # StatusCake
RewriteCond %{HTTP_USER_AGENT} ^.*UptimeRobot.*    [NC,OR]    # UptimeRobot
RewriteCond %{HTTP_USER_AGENT} ^.*NewRelic.*       [NC]       # New Relic (Последнее условие без [OR])

## Разрешить ботов предварительного просмотра в социальных сетях
RewriteCond %{HTTP_USER_AGENT} ^.*facebookexternalhit.* [NC,OR] # Facebook
RewriteCond %{HTTP_USER_AGENT} ^.*Mastodon.*      [NC,OR]    # Mastodon
RewriteCond %{HTTP_USER_AGENT} ^.*TumblrBot.*     [NC]       # Tumblr (Последнее условие без [OR])

## Разрешить веб-просмотры мобильных приложений
RewriteCond %{HTTP_USER_AGENT} ^.*Instagram.*      [NC,OR]    # Instagram в встроенном браузере
RewriteCond %{HTTP_USER_AGENT} ^.*FB_IAB.*         [NC,OR]    # Встроенный браузер Facebook
RewriteCond %{HTTP_USER_AGENT} ^.*FBAN.*           [NC,OR]    # Приложение Facebook
RewriteCond %{HTTP_USER_AGENT} ^.*Twitter.*        [NC,OR]    # Twitter в встроенном браузере
RewriteCond %{HTTP_USER_AGENT} ^.*LinkedInApp.*    [NC]       # Приложение LinkedIn (Последнее условие без [OR])

# Разрешить эти запросы
RewriteRule .* - [L]

# Защита от SQL инъекций
RewriteCond %{QUERY_STRING} "(?:declare|insert|drop|delete|update|union|select|create|rename|truncate|alter|exec|concat|print|or|and|varchar|where|join|into|load_file|outfile)" [NC]
RewriteRule .* - [F]

# Блокировать пустые User Agents и известных плохих ботов
RewriteCond %{HTTP_USER_AGENT} ^-?$                 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^curl.*              [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^wget.*              [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Postman.*           [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Python.*            [NC]
RewriteRule .* - [F]

# Блокировать доступ к конфиденциальным файлам
<FilesMatch "^(\.htaccess|\.htpasswd|\.git|\.env|wp-config\.php)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

# Блокировать всех остальных User Agents
RewriteRule .* - [F]

.

Ответ или решение

Создание белого списка (whitelist) для различных ботов и браузеров в файле .htaccess вашего Apache-сервера — задача, требующая внимательности и тщательной проработки. Ниже представлен анализ вашего текущего кода с предложениями по улучшению.

Компоненты вашего кода

  1. Включение модуля переадресации:

    • Код правильно включает RewriteEngine On, что необходимо для работы правил переадресации.
  2. Безопасные заголовки:

    • Использование заголовков безопасности, таких как X-Content-Type-Options, X-Frame-Options и Referrer-Policy, помогает повысить уровень защиты вашего сайта.
  3. Запрет на просмотр каталогов:

    • Строка Options -Indexes предотвращает возможность просмотра каталогов, что является хорошей практикой.

Белый список: преимущества и недостатки

Ваш белый список включает множество известных браузеров, поисковых систем и хороших ботов. Однако следует учитывать следующие моменты:

  • Потенциальное блокирование легитимного трафика:
    Реализация фильтрации по User-Agent может блокировать некоторых пользователей, если их User-Agent не совпадает с вашими условиями. Современные браузеры могут иметь уникальные пользовательские агенты, которые вы не учли.

  • Неполный список хороших ботов:
    Возможно, стоит рассмотреть возможность добавления таких ботов, как:

    • SearchAPI (API для запросов от поисковых систем).
    • Боты, используемые для мониторинга производительности веб-сайтов, такие как Pingdom и Datadog.

Проблемы с текущим подходом

  1. Актуализация списка:
    Поддержка белого списка требует периодического обновления. Это может быть трудоемким процессом, особенно с увеличением количества компактных и специализированных ботов.

  2. Блокировка по умолчанию:
    Конечная строка с RewriteRule .* - [F] блокирует все остальные агенты, которые не попадают под условия выше, что является жестким подходом. Это может привести к блокировке легитимных посетителей.

Рекомендации для улучшения

  1. Добавление расширенного списка хороших ботов:
    Возможно, стоит регулярно обновлять список на основании последних данных о популярных ботов и их User-Agent.

  2. Улучшение блокировки:
    Вместо удаления всех незафиксированных пользователей, рассмотрите возможность создания отдельного правила для ограничения частоты запросов от незнакомых User-Agent, чтобы избежать возможного злоупотребления.

  3. Использование Allow и Deny:
    Вместо того чтобы блокировать все, можно использовать более гибкие правила, позволяющие в зависимости от ситуации временно предоставлять доступ к определенным ресурсам.

  4. Логи и мониторинг:
    Настройте логи, чтобы отслеживать результаты регистрации для всех входящих запросов. Это позволит вам видеть, какие User-Agent пытаются получить доступ и могут быть подозрительными.

Заключение

Ваш текущий подход к созданию белого списка ботов в .htaccess имеет свои достоинства и недостатки. Основное внимание стоит уделить возможному блокированию легитимного трафика, актуализации списка и гибкости в правилах. Регулярное обновление и мониторинг логов помогут обеспечить баланс между защитой и доступностью вашего контента.

Оцените материал
Добавить комментарий

Капча загружается...