Configurer le fichier .htaccess

De Analyse Développement Hacking
Sauter à la navigation Sauter à la recherche
Consulter le wiki : Accueil du wiki - Objectifs - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Consulter le site : Accueil du site - Annuaire - Blog - Forum - Outils - Utilisateur     Consulter le Redmine : Accueil du Redmine

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 le fichier de Google a acceder au sitemap .xml

<FilesMatch "^sitemap.xml$">
Allow from all
</FilesMatch>

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 : 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
curl -A "googlebot" https://www.visionduweb.fr/robots.txt
# Retourne un code 200 OK.
curl -A "IRLbot" -I https://www.visionduweb.fr/robots.txt
# Retourne un code 403 Forbidden.
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
curl -I https://www.visionduweb.fr/robots.txt -e http://100dollars-seo.com
# Retourne un code 403 Forbidden.
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
Todo.png

Étape 9

Monitorer la journalisation des logs :
Todo.png
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
Utiliser de préférence la seconde configuration ci-dessous qui va inclure un fichier de configuration secondaire pour mieux gérer la liste noire Bad Bot Blocker sur un serveur VPS ou un serveur dédié !
<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>

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 PARTAGER

Vous êtes sur le wiki de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Les informations présentes sur ce wiki sont issues d'une recherche personnelle.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

VALORISER LE WIKI

Valoriser le contenu partagé sur 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 NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Gagner des Altcoins - Miner des Altcoins.
Consulter le miroir du wiki depuis Planet Hoster : Le miroir du wiki version du 12 Juillet 2019.