Объяснение новой строки в файле htaccess: RewriteCond %{REQUEST_URI}!^/\. Хорошо известный /pki-validation/(?:\ Ballot169)?

Недавно я заметил, что в файле htaccess была добавлена ​​новая строка в нескольких местах по всему файлу.

RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?

Я не понимаю, что он делает, и я хотел бы получить разъяснения, если это возможно для его цели.

Пример того, как это выглядит, показан в этом примере ниже.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Заранее спасибо.

2 ответа

Решение

Это не совсем полный ответ, так как я не могу комментировать конкретно, как / где Ballot169 вписывается в большую схему вещей. Тем не менее, я могу прокомментировать "что он делает". Это кажется немного странным, хотя...

В общем, эти RewriteCond директивы используются для создания исключений, чтобы при автоматическом продлении сертификатов SSL доступ к необходимому файлу проверки мог быть свободным. См. Мой ответ на следующий вопрос ServerFault, чтобы узнать больше об этом:

RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/(?:\ Ballot169)?

С последней части регулярного выражения (?:\ Ballot169)? является полностью необязательным, и нет конечной привязки конца строки (т. е. $) тогда это последняя часть, которая проверяет Ballot169 совершенно лишнее и может быть удалено! (Это похоже на ошибку с регулярным выражением, если только это не попытка вставить комментарий / отслеживаемый токен в код?) Итак, это то же самое, что и просто:

RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/

Другими словами, он проверяет, что URL-путь не начинается с /.well-known/pki-validation/,

Следовательно, это делает предыдущее условие, которое проверяет "Comodo" по тому же URL-пути, избыточным.

В Googling эта конкретная директива возникает, как написано в других местах, например, в этом вопросе StackOverflow от января 2019 года.

"Голосование 169", похоже, относится к этому:

@MrWhite Я ценю ваше руководство о том, как ответить, добавить больше контекста и т. Д., И за ваше предложение я отвечаю на мой вопрос, чтобы вы могли добавить свои комментарии к нему, спасибо.

<>: <:>: <:>: <:>: <:>: <:>: <:>: <:>: <:>: <:>: <:>: <:>

После вашего ответа я связался с хостинговой компанией, представитель только сказал, что сначала это было частью SSL-сертификата, я продолжал спрашивать его, какова цель и его функция, единственное, что он сказал, было: "Все это связано с тем, как сертификат был установлен ", когда я продолжал настаивать, он ответил на этот комментарий, сказав, что это не важно.

То, как вы нарушили директиву и как она работает для меня, и из другого ответа, который вы связали, который говорит, что "другие люди пометили этот конкретный набор правил как своего рода защиту DDOS", заставили меня задуматься, поэтому я сделал поиск по "общеизвестному хаку", который придумал это:

https://www.zscaler.com/blogs/research/abuse-hidden-well-known-directory-https-sites

Итак, ваш анализ заставляет меня думать, что защита сертификата и, возможно, каталога - это то, что делает эта строка, блокируя или перенаправляя такие запросы, исправьте меня, если я ошибаюсь.

Снова мне стало любопытно, и я начал скачивать журналы доступа и искать в них "хорошо известные" записи, если честно, я не знал, были ли они общими (как всегда, но я никогда не обращал на них внимания) или не общими и вот что я нашел.

  • В феврале в журналах доступа было в общей сложности 280 записей, которые выглядели примерно так, как показано ниже, строка чисел после /acme-challenge/ различна для всех из них, и большинство указывают на IP-адреса из Cloudflare (веб-сайт). использует Cloudflare, поэтому я не уверен, важно ли это упомянуть или нет).

"GET /.well-known/acme-challenge/Z152-H592V1UDY0PWBCKU3GEO5L6-3DQ HTTP / 1.1" 200 64 "-" "Cpanel-HTTP-Client / 1.0"

  • В марте записей вообще не было, но они начали показываться снова в этом месяце апреля, что также совпадает с добавляемой новой строкой, и на данный момент существует около 145 записей для "хорошо известных".

  • Стоит отметить, что этот конкретный сайт использует бесплатный ssl от Cloudflare, а не от Let's Encrypt

  • И, наконец, что не менее важно, из 3 разных учетных записей, к которым у меня есть доступ и которые используют одну и ту же хостинговую компанию, только в 1 из них эта строка добавляется в файл.htaccess.

Мистер Уайт, как всегда, большое спасибо за понимание, если я найду дополнительную информацию, я опубликую ее здесь.

Другие вопросы по тегам