J'essaie de durcir un Apache 2.4 Serveur Web exécutant deux sites Wordpress avec des paramètres de serveur virtuel distincts. Déployé sur Windows 2012 r2. J'ai été piraté il y a quelques semaines et le serveur a été complètement perdu. Sur le nouveau serveur, ils essaient toujours de pirater le site avec des injections de requêtes post et des exécutions de code. J'ai du mal à bloquer tous les POST
qui ne sont pas envoyés par le serveur lors de la soumission.
Les choses que j'ai essayées sont
-
<Location>
,<Directory>
,<Limit>
avec leurs attributs commeGET
,PUT
,POST PUT DELETE
en essayant des combos variés avec différentsRequire
déclarations, par exemple.local
,ip
,host
yorder allow, deny
modèles.Allow all from
-
<Directory "/">
,<Location >
,<LimitExcept >
Les balises comprenant des attributs tels queGET
,POST
et des combos. -
Divers
<if >
déclarations -
AllowMethod
Déclarations -
Whitelisting Directories in the
.htacess
Placer les tentatives dans un contexte de fichier différent. Par exemple httpd.conf
, Vhost.conf
, .htaccess
. Tous les fichiers que j'ai trouvés référencés dans la documentation d'Apache concernaient le contexte de la directive. Je l'ai même placé là où il ne devrait pas fonctionner, pour rigoler. Rien de ce que j'ai lu dans les documents ou sur stack overflow ne semble fonctionner.
Tous les modules d'authentification sont chargés comme mod_auth, mod_host etc. Supposez juste que les modules sont bons.
Ce que j'aimerais réaliser, c'est deny
o <Limit POST>
demande. Les autoriser strictement dans une <Directory "/.*"> or
` étant répondu uniquement lorsque le serveur soumet la demande en utilisant l'IP du serveur. Par conséquent, l'IP:port de la requête devrait être l'"adresse distante" car le service local d'apache envoie la méthode de requête via PHP. Je pense que cette logique est correcte.
La dernière chose que j'ai eu le temps d'essayer avant de quitter le travail, est le code ci-dessous qui tente une balise dynamique `<Directory "/.*"> Je ne veux pas fouiller dans Wordpress pour chaque formulaire et créer une balise pour chaque répertoire.
Merci pour votre aide. Veuillez inclure un exemple de code avec votre réponse.
<Directory "/.*">
<if "%{REQUEST_METHOD} == 'POST'">
<Limit POST PUT DELETE>
Require req, http %{REMOTE_ADDR} == 'xx.xx.xx.xx:xx'
</Limit>
</if>
</Directory>
Maintenant, j'ai essayé
<Directory "/">
<if "($_SERVER['%{REMOTE_ADDR}'] == 'xx.xx.xx.xx'">
<Limit POST>
allow from all
</Limit>
</if>
</Directory>
<Directory "/">
<if "($_SERVER['REMOTE_ADDR'] == 'xx.xx.xx.xx'">
<Limit POST>
allow from all
</Limit>
</if>
</Directory>
Pas de plugin, pas de suggestions pour nginx, E xpress ou IIS. Seulement des solutions pertinentes pour cette configuration.