Piwigo::Beveiliging
Piwigo Security
Piwigo Security - bescherm je afbeeldingen De beveiliging van de afbeeldingen in Piwigo laat nog veel te wensen over. De originelen en geschaalde afbeeldingen zijn eenvoudig te openen (en downloaden) middels directe url's. De afbeeldingen zijn in de webroot opgeslagen, dus vrij beschikbaar als je de url met bijvoorbeeld een crawler weet te bemachtigen. |
![]() |
Bescherm Originelen
Dit is mogelijk de belangrijkste stap om te verzekeren dat je originele foto's niet van buitenaf te benaderen zijn.
Note:
Om dit uit te voeren is FTP of SMB toegang tot je Piwigo-site nodig.
-
Open Beheer > Plugins > LocalFiles Editor > Lokale Configuratie en voeg in het bestand ../piwigo/local/config/config.inc.php de volgende regels toe:
// one of '', 'images', 'all' $conf['original_url_protection'] = 'images';
- Plaats in de map ../piwigo/galleries een .htaccess bestand met één regel:
Require all denied
In deze installatie op eigen server met toegang tot de 'Apache http bestanden' probeer ik het gebruik van . htaccess te voorkomen.
En maak gebruik van directives in het bestand /etc/httpd/conf.d/piwigo.conf in de hieronder volgende sectie Apache Directives voor Piwigo
- Als er gebruik gemaakt wordt van de videoJS plugin dan is directe toegang tot de video bestanden nodig. Om toegang tot een specifieke map met videobestanden toe te staan is voor deze specifieke map een directive nodig met de volgende inhoud:
Order Allow,Deny
Require all denied
<FilesMatch "\.(?:mp4|m4v)$">
Order deny,allow
Require all granted
</FilesMatch>
Zie ook Piwigo::Plugins Piwigo-VideoJS - Om de originelen af te schermen voor specifieke gebruikers:
Selecteer de gebruiker (bijv. Gast) in Beheer > Gebruikers > Beheer en verwijder vink bij Hoge kwaliteit (origineel) ingeschakeld
Bescherm Geschaalde Afbeeldingen
Als volgende stap willen we ook de map met geschaalde afbeeldingen beschermen tegen nieuwsgierige personages.
Wat zijn geschaalde afbeeldingen in Piwigo? Geschaalde afbeeldingen zijn van het origineel afgeleide afbeeldingen in ander formaat, miniaturen of welke vorm van afgeleide afbeeldings data dan ook als gebruikt in Piwigo. In essence zijn het voorgecompileerde data opgeslagen in de cache die gebruikt wordt voor het presenteren van je kunstwerken op je publieke site of site voor geregistreerde gebruikers.
Note:
Met de hieronder geboden methode beperken we niet de toegang tot de geschaalde afbeelding zelf. De huidige implementatie van de i.php module voor het tonen van de geschaalde afbeeldingen houdt geen rekening met de gebruikers permissies. Als een bezoeker de bestandslocatie en bestandsnaam van de geschaalde afbeeldingen kan 'raden' dan is deze afbeelding toegankelijk.
Aangezien al deze data allemaal op één plaats opgeslagen zijn willen we het moeilijker maken dat foto's 'geraden' worden die verder niet te zien zijn.
-
Open Beheer > Plugins > LocalFiles Editor > Lokale Configuratie en voeg in het bestand ../piwigo/local/config/config.inc.php de volgende regels toe:
// Specify url format // 0-'auto', 1-'derivative' 2-'script' $conf['derivative_url_style'] = 2;
- Plaats in de map ../piwigo/_data/i/ een .htaccess bestand met én regel:
Require all denied
In deze installatie op eigen server met toegang tot de 'Apache http bestanden' probeer ik het gebruik van . htaccess te voorkomen.
En maak gebruik van directives in het bestand /etc/httpd/conf.d/piwigo.conf in de hieronder volgende sectie Apache Directives voor Piwigo
Apache Directives voor Piwigo
In de voorgaande secties was er sprake van het in specifieke mappen plaatsen van .htaccess bestanden met directives.
Als we op een eigen server toegang hebben tot de Apache bestanden heeft het echter de voorkeur de directives op te nemen in de http configuratie bestanden.
Buiten de directives voor het afschermen van de Piwigo-data hebben we trouwens ook nog directives nodig voor de toegangscontrole via Piwigo van een Familie Evenementen Site.
Ubuntu Server heeft voor de http configuratie een structuur opgezet met het default bestand /etc/apache2/apache2.conf aangevuld met 'include' configuraties in /etc/apache2/conf-available.
Directives in de bestanden met de naam '<xxxx>.conf' in 'conf-available' worden toegevoegd aan de default 'apache2.conf'. Zie ook Server::Apache > Apache Configureren > Piwigo.Conf
- Maak het bestand piwigo.conf (root:root 644) aan in de map /etc/apache2/conf-available/
-
Plaats daar in voor bovengenoemde beschermingen voor de originelen en de geschaalden de volgende regels:
# Blokkeer directe url naar originele fotos in ../piwigo/galleries # In plaats van .htaccess in /var/www/html/piwigo/galleries # Voeg tevens toe in ../piwigo/local/config/config.inc.php # $conf['original_url_protection'] = 'images'; <Directory /var/www/html/piwigo/galleries> Require all denied </Directory> # Blokkeer directe url naar originele fotos in ../piwigo/upload # In plaats van .htaccess in /var/www/html/piwigo/upload <Directory /var/www/html/piwigo/upload> Require all denied </Directory> # Blokkeer directe url naar derivaten in ../piwigo/_data/i # Voeg tevens toe in ../piwigo/local/config/config.inc.php # $conf['derivative_url_style'] = 2; <Directory /var/www/html/piwigo/_data/i> Require all denied </Directory>
Blokkeer rechtsklikken contextmenu
Om het nog moeilijker te maken bestandspaden en -namen te raden, schakelen met de plugin 'rightClick' het rechtermuisknop contextmenu bij de foto's uit.
Zie ook de sectie Plugins > rightClick
Piwigo data buiten webroot
Naar mijn inzicht is het een slechte gewoonte om data in de webroot op te slaan, al is het alleen al maar voor de overzichtelijkheid en backupopties van de waardevolle data.
De volgende Piwigo mappen die waardevolle eigen data bevatten verhuizen we naar een map buiten de webroot:
- galleries
- _data
- local
- upload
- template-extension
Tevens voorzien we in deze map buiten de webroot in een submap voor opslag van de MariaDB dump van Piwigo.
Verhuis Galleries
- Maak nieuwe piwgo map in /home aan:
# mkdir /home/pwgdata (www-data:lanshare 755)
- Verhuis data in Galleries
# mv /var/www/html/piwigo/galleries /home/pwgdata/
Zonodig:
# chown -R www-data:lanshare /home/pwgdata/galleries
# chmod 755 /home/pwgdata/galleries
# chmod -R 751 /home/pwgdata/galleries/*
# find /home/pwgdata/galleries -type f -name '*' -exec chmod 644 '{}' \; - Maak symbolic link 'galleries' aan met verwijzing naar '/home/pwgdata'
# ln -s /home/pwgdata/galleries /var/www/html/piwigo
# chown -h www-data:lanshare /var/www/html/piwigo/galleries
Verhuis _data
- Verhuis data in _data
# mv /var/www/html/piwigo/_data /home/pwgdata/ - Maak symbolic link '_data' aan met verwijzing naar '/home/pwgdata'
# ln -s /home/pwgdata/_data /var/www/html/piwigo
# chown -h www-data:lanshare /var/www/html/piwigo/_data
Verhuis Local
- Verhuis data in local
# mv /var/www/html/piwigo/local /home/pwgdata/ - Maak symbolic link 'local' aan met verwijzing naar '/home/pwgdata'
# ln -s /home/pwgdata/local /var/www/html/piwigo
# chown -h www-data:lanshare /var/www/html/piwigo/local
Verhuis Upload
- Verhuis data in upload
# mv /var/www/html/piwigo/upload /home/pwgdata/ - Maak symbolic link 'upload' aan met verwijzing naar '/home/pwgdata'
# ln -s /home/pwgdata/local /var/www/html/piwigo
# chown -h www-data:lanshare /var/www/html/piwigo/local
Verhuis Template-Extension
- Verhuis data in template-extension
# mv /var/www/html/piwigo/template-extension /home/pwgdata/ - Maak symbolic link 'template-extension' aan met verwijzing naar '/home/pwgdata'
# ln -s /home/pwgdata/template-extension /var/www/html/piwigo
# chown -h www-data:lanshare /var/www/html/piwigo/template-extension
Maak Home voor MariaDB-dump
Maak een map aan voor de MariaDB-dump tijdens het backupproces, zoals verder beschreven in Piwigo::Backup.
# mkdir /home/pwgdata/dbase_dump
# chown apache:apache
/home/pwgdata/dbase_dump
# chmod 751
/home/pwgdata/dbase_dump