Для WP в .htaccess в корне сайта добавляем:
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !some_cookie=some_value
RewriteRule ^(wp-login\.php|wp-admin/)$ - [F,L] ErrorDocument 403 "<html><body><script>document.cookie='some_cookie=some_value;path=/';location.reload();</script></body></html>"
Для Joomla добавляем в .htaccess в директории "administrator":
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !some_cookie=some_value
RewriteRule ^index\d?\.php$ - [F,L] ErrorDocument 403 "<html><body><script>document.cookie='some_cookie=some_value;path=/';location.reload();</script></body></html>"
some_cookie и some_value меняем на произвольные.
Данный код выдаёт всем ботам без куки ошибку 403 с ява-скриптом, устанавливающим эту куку.
Код не дружит с плагинами, устанавливающими собственные страницы для ошибки 403. В частности, с WP Bulletproof security.
Выдаваемый ява-скрипт рекомендую модифицировать. У нас он, например, подвергается обфускации, чтобы нельзя было простым анализом выяснить, какую куку нужно устанавливать, чтобы получить возможность заходить в админку.