Ola les filles,
Après 2j de recherches infructueuses sur le net and co, je viens demander ici l'aide de quelqu'un qui s'y connaitrait plus que bien en ModSecurity et qui pourrait me donner une piste parce que là j'ai plus d'idées.
En gros j'ai un modsecurity d'installer sur un Apache en reverse proxy dans une DMZ, qui me sert pour proxypasser des sites en lan par la suite. Jusque là rien de bien difficile. Mais le soucis ce corse lorsque j'ai voulu mettre en place une règle suite à un changement d'infra, j'ai récupérer une vieille règles d'une ancienne conf de site pour le passer sur la nouvelle infra et là OH Malheur !! ça ne fonctionne pas.
La-dite règle :[
SecRule REMOTE_ADDR "!(?:^A\.A\.A\.A$|^B\.B\.B\.B$|^C\.C\.C\.41$|^D\.D\.D\.41$)" \
"phase:2,t:lowercase,deny,log,auditlog,status:403,msg:'addr is restricted by policy', severity:'2',id:'000002'"
J'ai volontairement remplacé les adresses par A / B / C / D, en gros ce que je veux faire c'est que l'accès à mon site web en question soit bloqué, sauf pour les adresses que j'ai placé dans la liste suivante, donc A.A.A.A|B.B.B.B|.... Donc jusque là rien de bien méchant, le truc c'est que sur mon ancienne infra ça fonctionne très bien sous-cette forme là, mais si je mets celle là dans ma version actuelle ça ne fonctionne pas. J'ai beau avoir essayé avec "@ipMatch A.A.A.A,B.B.B.B" en remplacement puisque cette nouvelle règle est possible depuis la version 2.7 de ModSecurity et semble résoudre plus rapidement que la version RegEx. Mais rien n'y fait non plus j'ai retourné dans tous les sens and co, et au final la seule chose que j'ai réussi à faire en m'aidant des logs debug. C'est que lorsque dans la regex ou l'adresse ipMatch, je mets l'adresse IP de ma passerelle DMZ on va dire Z.Z.Z.Z et que la met dans la règle ça bloque au général ou ça allow tout...
Les logs debug pour explications.
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][4] Recipe: Invoking rule 7f94c13b1dA; [file "/etc/httpd/conf.d/website.com.conf"] [line "32"] [id "000002"].
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][5] Rule 7f94c13b1dA: SecRule "REMOTE_ADDR" "@rx (?:^A\\.A\\.A\\.A$|^B\\.B\\.B\\.B$|^C\\.C\\.C\\.C$)" "phase:2,t:lowercase,deny,log,auditlog,status:403,msg:'addr is restricted by policy',severity:2,id:000002"
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][9] T (0) lowercase: "Z.Z.Z.Z"
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][4] Transformation completed in 8 usec.
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][4] Executing operator "rx" with param "(?:^A\\.A\\.A\\.A$|^B\\.B\\.B\\.B$|^C\\.C\\.C\\.C$)" against REMOTE_ADDR.
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][9] Target value: "Z.Z.Z.Z"
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][4] Operator completed in 2 usec.
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][4] Rule returned 0.
[27/Feb/2015:08:51:03 +0100] [website.com/sid#7f94c13afac0][rid#7f94c1639058][/][9] No match, not chained -> mode NEXT_RULE.
Et le truc bah c'est que si je viens à rajouter par exemple dans ma règle Z.Z.Z.Z à la liste bah là ça va bloquer... Ce que j'aimerais comprendre c'est ce Target Value & Ce lowercase qui sont appliqués sur ma passerelle DNS alors que cette passerelle je l'utilise nulle part... Et surtout que je lui demande d'intervenir sur des adresses entrante et non pas en destination.