Joomladay francophone 2018 à Paris 18 et 19 mai

sécurité avec php.ini

Réduire
Ceci est un sujet important.
X
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Astuce] sécurité avec php.ini

    Bonjour,

    Certains le savent et d'autres non, mais il est tout à fait possible de faire de l'override sur votre php.ini de façon à sécuriser au maximum en modifiant quelques valeurs.

    Voici donc comment effectuer cette manipulation,Trois méthodes sont possibles.

    Attention: Ceci ne pourra fonctionner que si votre hébergeur a configuré le fichier core php.ini pour un scan d'autres fichiers *.ini dans les répertoires.
    C'est à dire l'autorisation d'utiliser des fichier php.ini en local. (ex: suPHP_ConfigPath /home/username/public_html/)
    Si vous n'avez pas cette chance, vous pouvez essayer ces php flags, à ajouter dans votre .htaccess (au tout début)

    Attention: ne pas utiliser de php_flag dans le htaccess si vous êtes en fcgi ou cgi, vou risquez l'Internal Server Error
    Code:
    php_flag display_errors Off
    php_flag display_startup_errors Off
    php_flag log_errors On
    php_flag magic_quotes_sybase Off
    php_flag magic_quotes_gpc On
    php_flag register_globals Off
    Ou encore par SetEnv: http://guides.ovh.net/ConfigPhp

    ------------------------------------------------------------------------

    Première méthode avec GuardXT:

    1) Installez GuardXT

    2) Suivez la procédure du wizard pour php.ini en cliquant sur le lien "Start Wizard" tout en bas a droite de la page du composant.

    GuardXT crée des copies locales de votre php.ini global et lui ajoute des paramètres de sécurité supplémentaires si besoin.
    Donc très pratique si vous n'avez pas accès au root de votre serveur.


    Tout d'abord GuardXT tente de récupérer une copie de votre php.ini global, si il n'y parvient pas la case input du chemin sera vérouillé comme ceci:



    Si c'est ok, alors le champ input sera en clair et donc modifiable comme ceci:



    3) Ensuite, cochez les deux cases suivantes, ce qui aura pour effet d'ajouter un fichier php.ini dans le répertoire de votre site mais aussi dans le répertoire administrateur.



    Ici vous voyez les paramètres qui seront ajoutés:



    A savoir que:

    register_globals = off sera toujours ajouté
    safe_mode = off sera toujours ajouté
    allow_url_fopen = off sera toujours ajouté
    disable_functions sera ajouté uniquement si il n'est pas déjà paramétré
    open_basedir sera ajouté uniquement si il n'est pas déjà paramétré

    4) Enfin il suffit de cliquer sur le bouton create:


    Attention: Une fois le php.ini local créé dans le dossier /administrator, le wizard ne sera plus en mesure de retrouver le php.ini global à cause de la restriction open_basedir.
    Si vous avez besoin de réutiliser le wizard, alors il vous faudra supprimer le php.ini dans /administrator à l'aide de votre client FTP.

    ------------------------------------------------------------------------

    Seconde méthode en manuel:

    1) Ajoutez ces lignes dans un fichier texte:

    Code:
    register_globals = Off 
    magic_quotes_gpc = On  
    magic_quotes_runtime = Off
    display_errors = Off
    memory_limit = 24M
    max_execution_time = 30
    post_max_size = 8M
    session.use_trans_sid = 0
    safe_mode = Off
    upload_max_filesize = 4M 
    allow_url_fopen = Off
    expose_php = Off 
    disable_functions = show_source, system, shell_exec, passthru, phpinfo, popen, proc_open, exec, eval, parse_ini_file, dl
    Facultatif (non inclus dans le fichier texte proposé ci-dessous):

    Code:
    register_argc_argv = Off
    allow_call_time_pass_reference = Off
    short_open_tag = Off
    Attention avec short_open_tag:
    Si du code apparait soudainement en clair sur votre site (dans un module ou autre) c'est qu'il n'est pas codé correctement dans le sens ou le paramètre "short_open_tag" est justement là pour corriger les balises "<?" en "<?php".
    Hors là, on le désactive, la correction ne s'opère donc plus.
    Dans ce cas, à vous d'aller dans le code et de corriger les balises.
    Sans quoi, ne passez pas ce paramètre à off.

    Performance:
    Au niveau de la performance, les possibilités ne sont pas légion:
    error_reporting
    register_long_arrays
    register_argc_argv
    magic_quotes_gpc

    mais on reste dans le cadre de la micro optimisation.

    Il existe tout de même un point sur lequel appuyer, le realpath

    Pour faire simple c'est lui qui est chargé de stocker les chemins relatifs demandés par les include_once et require_once des scripts...et chez joomla ya de quoi faire.
    On peut intervenir sur deux choses, la taille de son cache, et le temps d'expiration de ce cache ou ttl (Time To Live, oui c'est pareil pour les paquets tcp)

    Avant tout il faut prendre en considération que la quantité de cache alloué l'est PAR processus Apache, alors n'abusez pas, sinon vous ferez tomber votre serveur très rapidement.
    Ensuite, cette directive ne fonctionne PAS si open_basedir est actif.

    Par défaut les valeurs sont (octets et secondes):
    Code:
    realpath_cache_size = 16K
    realpath_cache_ttl = 120
    Pour voir la valeur actuelle, consultez les infos systémes de joomla, ou alors téléchargez ce fichier (renommé son extension en php, uploadé le dans le root de votre site et appelez le par url.
    Il vous retournera la valeur d'usage en cours du realpath_cache
    real.txt

    Ensuite testez
    Zend par exemple recommande:
    Code:
    realpath_cache_size = 256K
    realpath_cache_ttl = 120
    Vous pouvez aussi essayer plus méchant:
    Code:
    realpath_cache_size = 1M
    realpath_cache_ttl = 86400
    2) Sauvegardez en utilisant le nom "php.ini"
    Ou téléchargez le: phpini2.txt et renommé le.

    3) Uploadez ce fichier dans le répertoire de votre joomla et dans /administrator.

    ------------------------------------------------------------------------

    Troisième méthode à l'aide du plugin:

    C'est un plugin système J1.5 Natif, qui permet de faire de l'override sur les paramètres PHP à parir du backend de Joomla (et c'est bien ce qui nous intéresse...)

    Installez le plugin PHP Settings: plg_phpsettings.zip

    Dans le paramétrage du plugin, mettez simplement les lignes de paramétrages que vous souhaitez, l'exemple de paramètres fournis dans la méthode manuel reste tout à fait valable.

    Attention: Une fois le plugin installé, un paramétre "pcre.backtrack_limit=-1" est ajouté par défaut, ne le laissez pas, supprimé le !

    Pour terminer, si vous le souhaitez vous pouvez consulter la: liste complète des directives de configurations du php.ini
    Fichiers joints
    Dernière édition par Sirius à 24/09/2010, 22h06 Raison: Ajout paragraphe performance et recommandations
    Apprendre à apprendre........
    www.octeam.fr
    Pas de support par MP

  • #2
    Bonjour Sirius,

    Merci pour cette petite astuce, qui sera utile à pas mal de monde je pense

    Il y a un soucis sur les images (capture d'écran je pense), aucune n'apparaisse dans ton topic !

    @ bientôt

    Thibaut

    Commentaire


    • #3
      Merci,

      images corrigées
      Dernière édition par Sirius à 09/05/2009, 18h30
      Apprendre à apprendre........
      www.octeam.fr
      Pas de support par MP

      Commentaire


      • #4
        Tu es vraiment un "ange de la securite" (j'aime beaucoup ton avatar).

        un grand merci!
        sommaire thématique des astuces du forum e-commerce ici http://www.webtimarket.com/fr/telechargements
        http://virtuemart.fr

        Commentaire


        • #5
          Merci aussi lol

          Ajout de:
          expose_php = Off

          (1er post mis à jour)
          Apprendre à apprendre........
          www.octeam.fr
          Pas de support par MP

          Commentaire


          • #6
            Nous pouvons dormir tranquilles.......Sirius veille pour nous.....

            merci Sirius

            Commentaire


            • #7
              Merci Sirius

              Commentaire


              • #8
                Vous ne m'aviez pas vu de dos ?
                Cliquez sur l'image pour l'afficher en taille normale

Nom : raw-raf.jpg 
Affichages : 1 
Taille : 37,7 Ko 
ID : 1792687

                Apprendre à apprendre........
                www.octeam.fr
                Pas de support par MP

                Commentaire


                • #9
                  Renforcement des disable_functions

                  disable_functions = show_source, system, shell_exec, passthru, phpinfo, popen, proc_open, exec, eval, parse_ini_file, dl

                  (1er post mis à jour)
                  Apprendre à apprendre........
                  www.octeam.fr
                  Pas de support par MP

                  Commentaire


                  • #10
                    question de newbie sur ce sujet de sécurité (mais je m'améliore déjà ;-))))))) ) : je chmode à quoi ce php.ini?


                    et pkoi memory limit à 24M??? (j'ai 32 d'origine si je rega
                    merci sirius...

                    Commentaire


                    • #11
                      question de newbie sur ce sujet de sécurité (mais je m'améliore déjà ;-))))))) ) : je chmode à quoi ce ohp.ini?

                      et pkoi memory limit à 24 M (j'ai 32 de base)

                      comme register global est à off: dois je pour autant le mettre dans mon php.ini local??????

                      chez moi pour openbasedir ça dit no value en global et /var/www/vhosts/blabla.org/httpdocs:/tmp en local : ça signifie quoi conrètement (tous les fichiers du site peuvent etre ouvrerts pas un fichier phps : c'est quoi les :??? pour tmp???)) : c'est correct?

                      merci sirius...
                      Dernière édition par tofrine à 10/05/2009, 16h54

                      Commentaire


                      • #12
                        CHMOD: 600

                        ou mode parano: 400

                        si le memory_limit est à 32 alors laisse le à 32

                        chacun devra mettre la valeur réglé par défaut par son hébergeur, le tout c'est de ne pas la dépasser (plus prudent)

                        open_basedir défini la restriction de situation pour l'ouverture de fichier via des scripts.

                        un peu étrange que tu n'ai rien en global, mais tu a appliqué la méthode 1 ou 2 du premier post ?
                        Dernière édition par Sirius à 10/05/2009, 17h18
                        Apprendre à apprendre........
                        www.octeam.fr
                        Pas de support par MP

                        Commentaire


                        • #13
                          méthode 2 mais j'ai l'impression qu eça ne fait rien mon php info (enfin celui de joomla) dit : open_basedir /var/www/vhosts/blabla.org/httpdocs:/tmp no value(la première colonne est pour local la seconde pour global)

                          et mon furlopen toujours à on : on dirait que le php.ini local se fait jeter...
                          Dernière édition par tofrine à 10/05/2009, 20h55

                          Commentaire


                          • #14
                            A la liigne "Loaded Configuration File " des informations php il y a quoi ?
                            Apprendre à apprendre........
                            www.octeam.fr
                            Pas de support par MP

                            Commentaire


                            • #15
                              Je n'ai pas cettte ligne
                              j'ai loaded modules...


                              core prefork http_core mod_so mod_auth_basic mod_auth_digest mod_authn_file mod_authn_alias mod_authn_anon mod_authn_dbm mod_authn_default mod_authz_host mod_authz_user mod_authz_owner mod_authz_groupfile mod_authz_dbm mod_authz_default util_ldap mod_authnz_ldap mod_include mod_log_config mod_logio mod_env mod_ext_filter mod_mime_magic mod_expires mod_deflate mod_headers mod_usertrack mod_setenvif mod_mime mod_dav mod_status mod_autoindex mod_info mod_dav_fs mod_vhost_alias mod_negotiation mod_dir mod_actions mod_speling mod_userdir mod_alias mod_rewrite mod_proxy mod_proxy_balancer mod_proxy_ftp mod_proxy_http mod_proxy_connect mod_cache mod_suexec mod_disk_cache mod_file_cache mod_mem_cache mod_cgi mod_fcgid mod_jk mod_perl mod_php5 mod_proxy_ajp mod_python mod_ssl

                              Commentaire

                              Annonce

                              Réduire
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins
                              Travaille ...
                              X