Configurer le fichier .htaccess
Aller à la navigation
Aller à la recherche
Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Configurer le fichier .htaccess
Interdire un dossier
Certains dossiers sont réservés à des usages internes.
Deny from all
Retirer le droit d’exécuter un fichier PHP
Pour les dossiers /images, /media et /stories de Joomla! Une URL de type domaine/images/danger.php ne permettra donc plus d’exécuter un script téléchargé par un pirate malveillant.
AddHandler cgi-script .php .pl .py .jsp .asp .sh .cgi Options -ExecCGI
Avec une telle protection, dans le cas de ces dossiers, vous pouvez rencontrer des problèmes d’exécution de certains composants. Il convient de tester votre site après avoir mis en place vos différents fichiers .htaccess dans de tels dossiers.
Interdire et autoriser certains fichiers
Options all -Indexes <filesMatch ".(htaccess|htpasswd|ini|log|sqlite|php)$"> order deny,allow deny from all </filesMatch> <filesMatch "(index.php|toto.php|toto2.php)"> order allow,deny allow from all
</filesMatch>
Les répertoires sont ici cachés par défaut. Ensuite j'empêche de récupérer les fichiers .htaccess .ini .log .sqlite et .php. Enfin j'autorise seulement certains script php.
Une base de fichier htaccess pour Joomla
Source : https://docs.joomla.org/Htaccess_examples_(security)
Passer output_buffering à off
Passer la valeur de output_buffering à off avec le fichier .htaccess qui se trouve dans le dossier contenant l'ensemble des fichiers et dossiers de Joomla. Ajouter : php_flag output_buffering off ou output_buffering php_value “0”
Interdire la totalité des upload de fichiers
Pour être totalement certain qu’aucun upload ne pourra être fait, créer un fichier php.ini à la racine de votre site et y inclure cette ligne : C’est d’emblée une protection maximale mais fortement gênante sur un site en production. Un pirate ne pourra plus installer, via le web, un code malsain sur votre site.
<IfModule mod_php5.c> php_flag file_uploads Off </IfModule>
Empêcher l'affichage de certains types de fichiers
Empêcher l'affichage des fichiers .xml depuis un navigateur. Permet de conserver le détail des composants inconnue du public sur un site comme Joomla!
<Files ~ ".xml$"> order allow,deny deny from all satisfy all </Files>
Autoriser un fichier .xml particulier
# Autoriser le crossdomain.xml pour 3D wall de Phoca Gallery. <FilesMatch "^crossdomain.xml$"> Allow from all </FilesMatch>
Autoriser Google a accéder au sitemap .xml
<FilesMatch "^sitemap.xml$"> Allow from all </FilesMatch>
Cacher le index.php de son url
RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://www.domaine.ext/$1 [R=301,L]
Interdire les fichiers sensibles
Il faut bien veiller à ce que certains fichiers ne soient accessibles pour tout le monde qu'en lecteur seule. Il s'agit de ce genre de fichiers : robots.txt .htpasswd .htgroup
Il est également conseillé de changer les nom des fichiers .htpasswd ou .htgroup en les spécifiant dans le .htaccess : AuthUserFile /var/www/admin/.drowssap AuthGroupFile /var/www/admin/.puorg
Bloquer les Bad Bots et Spam Bots
Exemple
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} .*aspirateur* [NC] RewriteRule .* - [F]
Source : https://www.vala-bleu.com/aide/Securite/bloquer-les-spam-bots-et-aspirateurs-de-site-web-avec-.htaccess.html
Bloquer des Bots et des URL indésirables avec Bad Bot Blocker
Configurer le VirtualHost depuis un fichier externe
Créer le dossier qui va accueillir les fichiers de configurations
# Créer le dossier custom.d : cd /etc/apache2 sudo mkdir custom.d # Se positionner dans le dossier custom.d : cd /etc/apache2/custom.d
Le README suivant indique comment installer Bad Bot Blocker et sa globalblacklist : https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/blob/master/Apache_2.4/README.md Suivre les étapes détaillées ci-dessous.
Étape 1
# Importer le fichier globalblacklist.conf depuis Github : sudo wget https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d/globalblacklist.conf -O /etc/apache2/custom.d/globalblacklist.conf # Si wget n'est pas disponible, utiliser cURL : # curl -sL https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d/globalblacklist.conf -o /etc/apache2/custom.d/globalblacklist.conf
Étape 2
# Importer la liste blanche des adresses IP whitelist-ips.conf : sudo wget https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d/whitelist-ips.conf -O /etc/apache2/custom.d/whitelist-ips.conf # Importer la liste blanche des noms de domaines whitelist-domains.conf : sudo wget https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d/whitelist-domains.conf -O /etc/apache2/custom.d/whitelist-domains.conf
Étape 3
# Importer la liste noire des adresses IP blacklist-ips.conf : sudo wget https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d/blacklist-ips.conf -O /etc/apache2/custom.d/blacklist-ips.conf
Étape 4
# Importer la liste noire des mauvais mots clés bad-referrer-words.conf : sudo wget https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d/bad-referrer-words.conf -O /etc/apache2/custom.d/bad-referrer-words.conf
Étape 5
# Importer la liste noire des mauvais USER-AGENT blacklist-user-agents.conf : sudo wget https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d/blacklist-user-agents.conf -O /etc/apache2/custom.d/blacklist-user-agents.conf
Étape 6
# Configurer le VirtualHost pour appeler le fichier de l’étape 1, globalblacklist.conf <Directory /var/www/visionduweb.fr> # Empêcher le suivi des liens symboliques. # J'autorise le suivi des liens symboliques pour permettre l'inclusion du script Bad Bot Blocker. Options +FollowSymLinks # Protéger l'accès aux répertoires. Options -Indexes # Désactiver Inclusions Côté Serveur (Server Side Includes / SSI) # +FollowSymLinks semble être prioritaire avec le suivi des liens symboliques et permet de ce fait l'inclusion du fichier de configuration de la liste noire, même si l'inclusion est désactivée ci-dessous : Options -Includes # Permettre la prise en compte du fichier .htaccess depuis le site. AllowOverride All # Définir le fichier à appeler par défaut. DirectoryIndex index.php index.html # Contrôle d'accès Apache 2.4 : # Require all granted est commenté pour permettre au script Bad Bot Blocker de stopper les adresses IP ou URL de la liste noire. # Require all granted # Inclure le script de liste noire Bad Bot Blocker : Include custom.d/globalblacklist.conf </Directory>
# Redémarrer Apache2 pour appliquer la nouvelle configuration. sudo service apache2 restart
Étape 7 - Tester le bon fonctionnement de la protection Bad Bot Blocker
Avec cURL depuis un terminal
# Retourne un code 200 OK puisque le contenu du document est affiché : curl -A "googlebot" https://www.visionduweb.fr
# La commande cURL et l'erreur 302 : # Va afficher un code de redirection temporaire 302 : curl -A "AspiegelBot" https://www.visionduweb.fr # La commande cURL avec le paramètre -L ou --location demande à cURL de suivre les redirections HTTP et affiche la page 403 : "La consultation de la page a été interdite par la configuration du serveur". curl -A "AspiegelBot" -L https://www.visionduweb.fr
# Retourne un code 200 OK : curl -LI https://www.visionduweb.fr -o /dev/null -w '%{http_code}\n' -s 200
# Retourne un code 302 : curl -e http://100dollars-seo.com -I https://www.visionduweb.fr/robots.txt -o /dev/null -w '%{http_code}\n' -s
# Retourne un code 302 qui redirige vers une page 403 Forbidden : curl -I https://www.visionduweb.fr -e http://100dollars-seo.com
# Retourne un code 302 qui redirige vers une page 403 Forbidden : curl -A "IRLbot" -I https://www.visionduweb.fr HTTP/1.1 302 Found Date: Fri, 28 Jun 2019 18:01:28 GMT Server: Apache Strict-Transport-Security: max-age=63072000; includeSubDomains; preload X-Frame-Options: SAMEORIGIN Referrer-Policy: no-referrer-when-downgrade Feature-Policy: geolocation none;midi none;notifications none;push none;sync-xhr self;microphone none;camera none;magnetometer none;gyroscope none;speaker self;vibrate none;fullscreen self;payment none; Location: https://www.visionduweb.fr/403-forbidden.php Cache-Control: max-age=604800 Expires: Fri, 05 Jul 2019 18:01:28 GMT Content-Type: text/html; charset=iso-8859-1
Avec PHP
<?php # User Agent par défaut : $c1 = file_get_contents("https://www.visionduweb.fr/robots.txt"); sleep(1); # User Agent déclaré en tant que robot : ini_set("user_agent","IRLbot"); $c2 = file_get_contents("https://www.visionduweb.fr/robots.txt"); sleep(1); # User Agent déclaré en tant que navigateur : ini_set("user_agent","Opera/9.80 (Windows NT 6.1; U; Edition Campaign 21; en-GB) Presto/2.7.62 Version/11.00"); $c3 = file_get_contents("https://www.visionduweb.fr/robots.txt"); ?> # Affiche : <html> <body> <h1>Tester le blocage des Bad Bots</h1> <?php # Affiche une réponse. echo c1; echo $c1; echo "<br/><br/>"; # N'affiche aucune réponse. echo c2; echo $c2; echo "<br/><br/>"; # Affiche une réponse. echo c3; echo $c3; ?> </body> </html>
Étape 8
# Mettre à jour la liste noire en conservant la liste blanche. sudo wget https://raw.githubusercontent.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/master/Apache_2.4/custom.d/globalblacklist.conf -O /etc/apache2/custom.d/globalblacklist.conf sudo apache2ctl configtest sudo service apache2 reload
# Mettre à jour avec un script cron : https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/blob/master/update-apacheblocker.sh
Étape 9
Monitorer la journalisation des logs :
Cron pour surveiller les référents quotidiens sur Apache 00 08 * * * tail -10000 /var/log/apache/mydomain-access.log | awk '$11 !~ /google|bing|yahoo|yandex|mywebsite.com/' | awk '{print $11}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Referers for Mydomain.com" me@mydomain.com
Cron pour la surveillance des agents utilisateurs quotidiens sur Apache 00 08 * * * tail -50000 /var/log/apache/mydomain-access.log | awk '{print $12}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Agents for Mydomain.com" me@mydomain.com
Configurer uniquement le VirtualHost ou le fichier .htaccess
Ajouter la liste des bad-bots et bad-urls directement dans le VirtualHost ou le fichier .htaccess sans passer par un fichier de configuration secondaire.
Attention ! L'utilisation de mod_rewrite impacte les performances du serveur !
Consulter la liste des indésirables : https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/blob/master/_htaccess_versions/htaccess-mod_rewrite.txt
<IfModule mod_rewrite.c> RewriteEngine on # ... Autres configurations ... # Bloquer les Bad Bots RewriteCond %{HTTP_USER_AGENT} \b360Spider\b [NC,OR] RewriteCond %{HTTP_USER_AGENT} \b404checker\b [NC,OR] RewriteCond %{HTTP_USER_AGENT} \b404enemy\b [NC,OR] # ... Toute les adresses de la liste anti Bad Bot Blocker ... RewriteCond %{HTTP_REFERER} ^http(s)?://(www.)?.*zzlgxh\.com.*$ [NC] RewriteRule ^(.*)$ - [F,L] </IfModule>
Utiliser de préférence la méthode ci-dessous qui devrait inclure un fichier de configuration secondaire pour mieux gérer la liste noire Bad Bot Blocker sur un serveur dédié ou VPS !
Voir pour charger la configuration une seule fois depuis la configuration de Apache2
Je tente de l'inclure dans la configuration de Apache2 pour ne l'inclure qu'une seule fois, pour ne pas avoir à charger le script dans tous les VirtualHosts. Cette configuration ne semble alors pas prise en compte. A suivre pour charger une seule fois la configuration.
Suite à l'issue : https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/issues/130 On me propose d'inclure le fichier via <Directory "/var/www/html"> [...]. On me rappel également que mod_rewrite consomme beaucoup de ressources.
Bibliographie
Source : https://www.watters.ws/mediawiki/index.php/Htaccess_tricks THE Ultimate Htaccess : https://www.askapache.com/htaccess/
NAVIGATION
PARTICIPER ET PARTAGERBienvenue sur le wiki de Amis SH. De nombreuses pages sont partagées sur ce wiki. Créer un compte utilisateur pour participer sur le wiki. Les pages présentées sur le wiki évoluent tous les jours. Certaines recherches sont peu abouties et incluent des erreurs. Utiliser la recherche interne du wiki pour trouver votre contenu. La page de discussion de Amis SH vous permet de poser vos questions. Consulter le site amis-sh.fr pour installer votre propre serveur web. Améliorer le contenu des pages avec vos retours depuis l'onglet discussion. Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique. Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité. |
SOUTENIR CE WIKISoutenir le wiki avec un don en monnaie numérique : AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash OBTENIR DE LA MONNAIE NUMERIQUEObtenir gratuitement de la monnaie numérique : Miner de la cryptomonnaie. |