Configurer le fichier .htaccess

De Wiki Amis SH
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 PARTAGER

Bienvenue 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 WIKI

Soutenir 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 :
Miner de la cryptomonnaie.