Québec Web

[SEC] CyberPanel : bloquer l’accès direct aux médias BuddyBoss Platform

  • Créateur
    Discussion
  • #410

    Nicolas
    Keymaster

    Contexte : remarqué ceci après la mise à jour de BuddyBoss Platform à la version 1.7.4 sur le réseau Québec.tk.

    Lorsque WordPress est hébergé sous CyberPanel/OpenLiteSpeed, la notice suivante apparaît dans l’admin réseau sous : BuddyBoss > Paramètres > Média.

    À la section Media Security & Performance, vis-à-vis Direct Access, on peut lire :

    Direct access to your media files and folders is not blocked

    BuddyBoss Platform Medias : Direct Access Security Notice

    En suivant le lien sous la notice (Media Permissions tutorial), on apprend que BuddyBoss Platform tente de bloquer l’accès à ses répertoires de médias (bb_documents, bb_medias et bb_videos) en y ajoutant un fichier .htaccess. Cela fonctionne sous Apache, mais pas avec Nginx, et apparemment pas non plus avec OpenLiteSpeed.

    On retrouve effectivement des fichiers .htaccess essentiellement identiques dans chacun de ces sous-répertoires de ~/public_html/wp-content/uploads.

    deny from all
    # BEGIN BuddyBoss code execution protection
    <IfModule mod_php5.c>
    php_flag engine 0
    </IfModule>
    <IfModule mod_php7.c>
    php_flag engine 0
    </IfModule>
    AddHandler cgi-script .php .phtml .php3 .pl .py .jsp .asp .htm .shtml .sh .cgi
    Options -ExecCGI
    # END BuddyBoss code execution protection
    

    Apparemment, ça ne le fait pas pour OpenLiteSpeed — même après un redémarrage du serveur.

    Alternatives pour CyberPanel

    Dans les forums CyberPanel, on apprend quelques alternatives pour bloquer l’accès à certains fichiers dans OpenLiteSpeed : https://forums.cyberpanel.net/discussion/86/tutorial-how-to-deny-access-for-files-with-certain-extension-or-folder-in-openlitespeed-cyberpanel

    1. deny files with certain ext.

    by simply added this code into your .htaccess

    RewriteRule ^.*\.(log|ini|txt)$ - [F,L,NC]

    so any files with .log , .ini and .txt should be denied from access.

    2. deny folder to be accessed.

    add following code into the bottom of “vhost main configuration” area, like in screenshots

    context /system {
      type                    NULL
      location                /home/$VH_NAME/public_html/system
      allowBrowse             0
      addDefaultCharset       off
    }
    

    explain: this context will NOT allow any access to http(s)://domain/system

    On a donc deux options :

    • Utiliser une règle .htaccess compatible avec OLS
    • Définir des contextes dans OLS

    Règle .htaccess compatible avec OpenLiteSpeed

    [SOLUTION] Dans chaque répertoire respectif

    L’ajout de la ligne suivante (sous deny from all) dans le fichier .htaccess de chaque sous répertoire suffit pour bloquer l’accès à son contenu :

    RewriteRule ^.*$ - [F,L,NC]
    

    Par exemple, l’accès direct à ces fichiers retourne maintenant une page d’erreur403 Forbidden :

    Note : Il peut être nécessaire de redémarrer manuellement OpenLiteSpeed pour prendre en compte les nouvelles règles et réinitialiser le cache.

    Une fois les 3 fichiers altérés, la notice de BuddyBoss Platform disparaît :

    BuddyBoss Platform Medias : Direct Access Security Fixed!

    Dans le fichier .htaccess racine [NE FONCTIONNE PAS]

    On peut également créer une règle dans le fichier .htaccess à la racine du serveur qui bloquera simultanément les 3 répertoires à protéger :

    # BuddyBoss Media direct access protection [BN20210801]
    RewriteRule ^/?wp-content/uploads/bb_(documents|medias|videos)/.*$ - [F,L,NC]
    

    Je ne comprends pas pourquoi cette règle reste sans effet… Quelqu’un a une idée ?

    Contextes dans la configuration du vHost [NE FONCTIONNE PAS]

    Il est également possible d’interdire l’accès à certains chemins via la définition de contextes dans la configuration de l’hôte virtuel (vHost) d’OpenLiteSpeed :

    context /wp-content/uploads/bb_documents {
      type                    NULL
      location                /home/$VH_NAME/public_html/wp-content/uploads/bb_documents
      allowBrowse             0
    }
    context /wp-content/uploads/bb_medias {
      type                    NULL
      location                /home/$VH_NAME/public_html/wp-content/uploads/bb_medias
      allowBrowse             0
    }
    context /wp-content/uploads/bb_videos {
      type                    NULL
      location                /home/$VH_NAME/public_html/wp-content/uploads/bb_videos
      allowBrowse             0
    }
    

    Là non plus, je ne pige pas ce qui ne fonctionne pas… De toute façon, cette méthode est plus ou moins viable, puisque le vHost de chaque domaine alias devrait être modifié pour fonctionner !

Connectez-vous pour répondre.