Question Comment masquer mon installation Wordpress via htaccess?


(Je suis conscient que la sécurité via l'obscurité n'est pas recommandée).

J'essaie de cacher le fait que j'utilise Wordpress. Ce poster est utile, mais il n’adresse que le contenu (en quelque sorte). Je suis intéressé par ce qui suit:

  1. L'utilisateur essaie d'accéder à n'importe quelle URL avec wp* en tant que sous-chaîne via leur navigateur.

    Résultat: Redirigé sur 404 page.

  2. L'utilisateur / l'administrateur du blog sait qu'il doit se connecter pour se connecter. http://example.com/blogin/.

    Résultat: Apache les redirige vers http://example.com/wp-admin/.

  3. Si un utilisateur tente d'accéder directement à wp-admin depuis leur navigateur, ils sont envoyés au n ° 1.

    Résultat: Redirigé sur 404 page.

Choses que j'ai faites jusqu'à présent

  1. J'ai remarqué pour une installation par défaut de WordPress que je pouvais accéder à n'importe lequel des wp* fichiers dans le répertoire racine (relatif) de l’installateur WP. Plus précisément wp-settings.php était problématique car elle donnait des informations sur mon montage. Si un utilisateur y accédait, certaines erreurs PHP seraient révélées et une partie de la structure du répertoire serait révélée. J'ai édité mon fichier php.ini pour activer display_errors de. Maintenant accéder http://example.com/wp-settngs.php fait apparaître une page blanche.

  2. Cela en soi n’est pas idéal car cela révèle que wp-settings.php existe. En fait, accéder à tous les différents wp* fichiers est possible (avec des résultats différents). J'ai ensuite mis le texte suivant dans mon fichier htaccess:

          RewriteEngine On
          RewriteBase /
          RewriteCond %{PATH_INFO} wp* [NC]
          RewriteRule .* - [F]
    

    Cela a très bien fonctionné! Quelque chose avec un wp* a été acheminé vers ma page 404 personnalisée. Mais maintenant, je ne peux pas accéder à ma page d'administration.

  3. J'ai essayé d'insérer cette ligne dans le code ci-dessus: RewriteRule ^blogin wp-admin [NC,R,L]. C'était censé être juste après RewriteBase mais cela n'a pas fonctionné.

  4. J'ai essayé de faire un:

    <Directory /home/example/wp*> 
     Order Allow, Deny 
     Allow from example.com 
     Deny from all 
    </Directory> 
    

    en espérant qu'un référent de mon site (via la réécriture de la règle) puisse accéder à wp-admin, mais pas à quelqu'un de l'extérieur. Cela n'a pas fonctionné non plus. Apache s'est plaint que vous ne pouvez pas utiliser cette directive de htaccess.

J'ai lu la documentation d'Apache Je comprends les concepts, théoriquement, mais j'ai besoin d'une aide pratique.

EDIT: Je cherche une solution qui utilise .htaccess au lieu de httpd.conf car ma configuration particulière rend l'utilisation de httpd.conf incohérente.


9
2018-06-19 05:20


origine


Avez-vous essayé de renommer tous les fichiers wp * en un préfixe différent et de modifier toutes les références à ces fichiers? Je pense que ce sera la chose la plus facile à faire. Bien sûr, vous pouvez utiliser la réécriture d'URL, mais vous devrez ensuite vous assurer que tous les liens n'utilisent pas non plus les noms wp *, ce qui (à mon avis) est assez similaire à la suggestion originale. - LazyOne
Je pense que l'un des avantages de la réécriture d'URL est que les ressources demandées peuvent être remappées vers un autre préfixe ... J'espère pouvoir le faire sans renommer tous les fichiers (ce qui est le point essentiel pour passer par ceci) ... - Avery Chan


Réponses:


TLDR; Il n'est pas possible d'obscurcir WordPress en utilisant uniquement des directives dans votre fichier .htaccess.

Maintenant vient une histoire de malheur et d'horreur. Notre ami, fbh avait raison sur la difficulté de cacher WordPress, que ce soit pour les lâches à ventre jaune. Arr! Voici les détails de cette (mauvaise) aventure. Soyez averti!

Motivation

Je suis un de ces gars qui aime les choses parfaites. Je vais dépenser perdre du temps à trop concevoir quelque chose pour être la «bonne façon». Une des choses que je n’aimais pas dans la configuration par défaut de WordPress était qu’un utilisateur pouvait taper http://ex.com/wp-settings.php et puis tout ce jargon php serait vomir partout. J'ai finalement été capable de désactiver les erreurs via PHP, mais cela a suscité un plus grand désir de ne conserver que les éléments créés depuis, pouvant être localisés sur le serveur ... et que tout le reste serait 404 / 3'ified sur notre page de recherche personnalisée. Après cela, j'ai eu l’idée que je voudrais cacher complètement le cadre sous-jacent (WP) ... de toute façon ... si vous voulez masquer WP, c’est possible. Mais c'est vraiment difficile.

Des pas vers votre destin

  1. Modifiez vos paramètres ini de manière appropriée. (c.-à-d. désactiver les erreurs d'affichage) Vous pensez peut-être que c'est inutile, car si nous utilisons .htaccess pour rediriger des éléments, les utilisateurs ne verront pas les erreurs car ils ne peuvent pas accéder aux ressources générant l'erreur (je vous regarde wp-settings.php). Mais des erreurs peuvent se produire dans les pages affichées, vous devez donc absolument les désactiver. Juste parce que WP_* les directives sont définies ne signifie pas nécessairement que les choses fonctionneront comme vous le pensez. J'ai constaté que sur mon serveur, je devais définir la valeur false pour FIRST_ display_errors, car WP_DISPLAY_ERRORS supposait que le paramètre par défaut était false.

    Contrôler les paramètres ini de PHP peut être quelque chose d'aussi simple que de mettre une directive dans votre fichier .htaccess. Ou, dans mon cas, aussi compliqué que de créer un gestionnaire CGI, puis d'y placer un fichier php.ini. YMMV en fonction de votre configuration.

  2. Supprimer tout accès aux fichiers / répertoires avec wp- préfixe. L'idée est que votre déploiement de WP concerne votre contenu, pas celui de WP (sauf s'il est spécifiquement centré sur WP). Cela n’a aucun sens de vouloir voir ce que http; // ex.com/wp-cron.php a ... sauf s’ils ne valent rien. J'ai accompli ceci via ceci:

     # If the resource requested is a `wp-*` file or directory, poop to a 403. 
     RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC] 
     RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
     RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
     RewriteCond %{REQUEST_FILENAME} -d [NC] 
     RewriteRule .* - [F,L] 
    
  3. Apprenez à traverser le mordor En supprimant tout accès à wp-* vous ne pouvez plus accéder à la partie administrative de WP. C'est vraiment nul. En plus de cela, vous venez de réaliser que vous ne savez pas quoi RewriteCond %{ENV:REDIRECT_STATUS} ^$ fait vraiment. Eh bien, ce que j'ai essayé de faire est de me donner une porte dérobée "secrète" vers la page d'administration WP. J'ai utilisé ce code:

     # If the resource requested is 'mordor' (with or without an ending
     # slash) do a URL rewrite to `wp-login.php`. 
     RewriteCond %{REQUEST_URI} mordor/?$ [NC]
     RewriteRule mordor/?$ /wp-login.php [NC,L]
    

    Donc l'URL: http://ex.com/mordor devrait nous amener à la page de connexion. La raison pour laquelle nous avons eu la REDIRECT la ligne dans l'étape ci-dessus est que puisque cette URL est réécrite dans un wp-* URL, nous ne voulons pas que la première règle de réécriture l’obtienne. Depuis qu'il est redirigé en interne, REDIRECT_STATUS sera réglé correctement et cela ne nous poussera pas à 403/4.

  4. Supprimer le contenu de wp  Wordpress.stackexchange a un excellent article sur la suppression de wp-content. Vous devez redéfinir certaines constantes de WP et cela fonctionne très bien. Vous devez également rediriger tous les accès depuis wp-content à «quel que soit le contenu». Ce ne sera probablement pas un problème s'il s'agit d'un déploiement propre. Si vous modifiez un déploiement préexistant, vous devrez effectuer des tâches supplémentaires.

  5. Réécrire les URL dans wp-content optionnel  RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L]. Cela va dans votre fichier .htaccess. Si votre utilisateur essaie d’accéder à un ancien contenu via un wp-content URL, il sera redirigé ici.

  6. Grep et remplacez toutes les références à wp-content dans votre base de données optionnel. Tu as toujours wp-content dans votre base de données. Si vous voulez utiliser WP gratuitement, vous devez vous en débarrasser. J'ai exporté / mysql vidé ma base de données, fait une recherche et remplacer sur le wp-content chaîne à la nouvelle chaîne. Vous pourriez dire ... pourquoi dois-je faire cela si Apache réécrit mes URL? Le problème est que le code source contiendra ces références, donc si vous souhaitez vraiment masquer WordPress, vous devez le faire. Remarque: à ce stade, j'aurais dû m'arrêter et accepter le fait que cela ne fonctionnerait pas. Mais je voulais que M. T me plaint.

  7. Remplacer toutes les références à wp-includes et wp-admin dans la source. Une grande partie de la fonctionnalité WordPress dépend de ces deux répertoires: wp-includes et wp-admin. Cela signifie que ces noms de répertoire sont codés en dur dans le code source. Cela signifie que vous devrez créer de nouveaux répertoires (puisque PHP utilise le système de fichiers sous-jacent du système d'exploitation, pas apache) pour accéder à ces répertoires, puis les écris dans le code HTML émis. C'est juste trop de problèmes. J'ai vite abandonné et je suis allé à la salle de bain pour prendre une merde.

Leçon

Bien sûr, je pourrais juste lire http://codex.wordpress.org/Hardening_WordPress et suivi ces étapes. Mais je voulais le site parfait. Maintenant, je veux juste toutes ces heures en arrière. La plus grande chose qui m'a empêché de m'arrêter, c'est que je n'ai lu nulle part sur Internet que c'était beaucoup de travail et presque impossible à faire. Au lieu de cela, j'ai lu que des personnes essayaient de le faire sans savoir si elles avaient réussi ou non. Donc, à mon passé, à qui je vais envoyer ceci via Time Machine d’Apple, n’essayez pas d’obscurcir WordPress. Ça ne vaut pas le coup.


8
2018-06-20 14:34



Et bien Avery, je suis aussi l’un des gars qui veut être parfait. Tout d’abord, je voulais créer un multisite wordpress en cachant le fait que j’utilise Wordpress. J'ai traversé beaucoup de problèmes et j'ai finalement abandonné l'idée du multisite. Parce que beaucoup de plugins ne supportent pas le multisite. Votre 7ème point indique que vous avez remplacé wp-includes et wp-admin texte manuellement. Je suis sûr que vous avez parcouru tous les fichiers et les avez remplacés manuellement. C'est parce que vous avez manqué certains logiciels utiles utiles. Par exemple, vous auriez pu essayer Grepwin ce qui facilite ce travail - Giri


Si vous essayez de cacher que vous utilisez WordPress à cause de crackers, vous avez vraiment du travail à faire. Si vous faites le tour de wp *, qu'en est-il de wp-content et de wp-includes? Sans pouvoir atteindre ceux-ci, vous casserez la page et elle aura l'air horrible.

De plus, il y a tellement de choses dans Wordpress que cela prend un peu de travail - et vous devrez probablement en refaire beaucoup une fois la mise à jour installée. (Comme quelques redirections dans Apache ne feront pas l'affaire)

Si vous essayez simplement de cacher cela à M. et à Mme tout le monde, vous devriez bien sûr pouvoir le faire un peu dans l'obscurité.

Avez-vous lu le guide "Durcissement Wordpress"? Si non, vous devriez vérifier: http://codex.wordpress.org/Hardening_WordPress  Cela donne une excellente introduction à beaucoup de choses que vous pouvez faire.

De plus, si vous êtes aussi impatient de cacher le fait que vous utilisez Wordpress, pourquoi l’utiliser?


4
2018-06-19 08:33



1. Re: wp-content / wp-includes  Voir lien en post 2. je avoir lisez le guide WordPress sur le durcissement. 3. Vous pouvez facilement répondre à votre dernière question en parcourant le lien que j'ai posté. Je n'essaie pas d'être impoli, mais cette question a peu à voir avec les mérites techniques de ma propre question. Beaucoup de gens utilisent des outils différents mais ne souhaitent pas en faire la publicité. Pour certains, c'est une décision commerciale. - Avery Chan


Essayez de faire votre configuration dans la configuration d'Apache. Cela peut être une inclusion de fichier comme /etc/wordpress/htaccess. Cela vous permettra d'utiliser Directory directive de configuration. Cependant, vous devrez redémarrer Apache pour charger les modifications. Utilisez le redémarrage en douceur si vous ne voulez pas d'interruptions de service.

Pour restreindre les accès aux annuaires avec .htaccess fichiers, ils doivent être dans les répertoires appropriés. Ils fonctionnent beaucoup comme le contenu d'un Directory directive de configuration. Vous devrez peut-être activer le .htaccess options dans votre configuration apache. Cette méthode n’est pas aussi efficace que l’utilisation de la commande dans la configuration d’apache, car elle doit être régulièrement réparée.


0
2018-06-19 16:29



Je recherche une solution qui ne nécessite pas la modification de mon fichier httpd.conf car elle peut être écrasée (je suis sur un hôte privé virtuel). Je vais modifier la question de manière appropriée. - Avery Chan
@Avry: Vous devrez placer les directives que vous voulez mettre dans la configuration <Directory> dans un .htaccess fichier dans le répertoire correspondant. Remarque: Apache vous recommande d'utiliser la configuration si possible. Utilisez le contrôle de version pour vous protéger contre les écrasements. - BillThor