Защо капчата или 2FA при логин не ви спасява от brute force на WordPress

happyslacker

New Member
Тези, които се опитват да отгатнат паролата ви няма да си губят времето с капчата, която слагате на логин страницата.

Те просто ще пратят post заявки към xmlrpc.php (а по този протокол не е предвидено да се иска капча или 2FA).

Затова трябва да изключите XML RPC, който е включен по подразбиране.

Първо, като инсталирате плъгина Disable XML-RPC.

И вторo, като добавите този код в .htaccess:

Код:
# BEGIN - Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
# END - Block WordPress xmlrpc.php requests

Или ако искате да разрешите достъпа от определен IP адрес (123.123.123.123 в примера):
Код:
# BEGIN - Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from 123.123.123.123
</Files>
# END - Block WordPress xmlrpc.php requests


Защо да правите и двете неща? Защото когато случайно единият метод се прецака (редактирате невнимателно .htaccess, изключите плъгина по невнимание) - другият метод да сработи.

Ако сте свръхсамоуверени, че няма да махнете или редактирате .htaccess по невнимание - може да забраните xmlrpc.php чрез него (по-чист и сигурен вариант - при ползване на плъгин сървърът ще се натовари повече, защото изпълнява php скриптове, а при ползване на .htaccess за забрана на файла не се стига до изпълнение на php скриптове).

Ето и плъгин за 2FA - може би е по-добро решение от капча при логин: Google Authenticator for WordPress.

Друг плъгин, който прави същото: Google Authenticator. Този дава възможност да разрешите/забраните XMLRPC интерфейса:

If You need to maintain your blog using an Android/iPhone app, or any other software using the XMLRPC interface, you can enable the App password feature in this plugin, but please note that enabling the App password feature will make your blog less secure.

Можете вместо телефон или таблет да ползвате офлайн компютър за генериране на кода за 2FA. За целта можете да ползвате това приложение (работи с всеки съвременен браузър). Ако го инсталирате на онлайн компютър (който се ползва от неопитен потребител под Windows) се губи смисъла на 2FA - със същия успех можете просто да ползвате по-дълга парола, записана на файл в компютъра.

Има начин да се логвате без да се занимавате с писане на парола:

Scan-to-Login
Unlock Digital (No Passwords)

Горните не съм ги пробвал, защото нямам телефон и ми се струва твърде неудобно да ползвам телефон.

Когато правите сайтове за потребители, които се оправят зле с компютрите, може да им инсталирате някой от плъгините за логин с телефон (без писане на кодове и пароли). Защото не е приятно да ви звънят и да ви питат защо не могат да се логнат (защото примерно пишат паролата грешно, забравили са я, забравили къде са я записали, забравили са, че изобщо са я записвали и т.н.).
 
Последно редактирано:
От: Защо капчата или 2FA при логин не ви спасява от brute force на WordPress

Едно допълнение:
Ако някой си мисли че е "защитен" със смяна на потребителското име много бърка. Повечето WordPress-и имат
http://<сайта>/author-sitemap.xml <- при активиран Yoast SEO
http://<сайта>/author/admin/ <- работи винаги

Има и още няколко начина да се енумерират потребителите:
http://<сайта>/?author=1
http://<сайта>/?author=2

Затова XML-RPC атаката действа доста подмолно защото първия фактор от потребителско име/парола вече е известен. Въпрос на време е да се изтъркалят и паролите.

Има обаче и още една мрачна тайна която малко хора знаят... може да се събарят сайтове със XML-RPC през DDoS атака.
Тук методологията е ето така:
1. Лош сайт 1 изпраща pingback към сайт 2 че уж сайт 3 го е линкнал.
2. За да се избегне спама сайт 2 издърпва съдържанието на линка от сайт 3.
3. Сайт 2 проверява съдържанието на линка дали наистина има линк.
4. Ако има линк - пингбака е валиден, ако не бива изтрит (спам).

Горното нещо се повтаря няколко хиляди пъти от няколко хиляди блога. Резултат - DDoS за сайт 3.
Да - случвало се е вече доста пъти. Във единия случай са участвали над 160000 блога.
http://fooplugins.com/prevent-wordpress-pingback-ddos/
 
От: Защо капчата или 2FA при логин не ви спасява от brute force на WordPress

Едно допълнение:
Повечето WordPress-и имат
http://<сайта>/author-sitemap.xml <- при активиран Yoast SEO

author-sitemap.xml по дефолт е изключен

Има и още няколко начина да се енумерират потребителите:
http://<сайта>/?author=1
http://<сайта>/?author=2

Това се забранява елементарно

Код:
add_filter( 'redirect_canonical',
        function($redirect_url, $requested_url)
        {
            if (intval(@$_GET['author'])) {
                ob_end_clean();
                header('HTTP/1.0 403 Forbidden');
                header('Content-Type: text/plain');
                exit('403 - Forbidden');
            }

            return $redirect_url;
        },10,2);

Едно допълнение:
Ако някой си мисли че е "защитен" със смяна на потребителското име много бърка
http://<сайта>/author/admin/ <- работи винаги
Точно за това трябва да се сменя потребителско име. А най добре да се закачи add_action( 'authenticate', който при опит за вход с 'admin' да го праща в 9-та глуха
 

Горе