• A la une
  • Catégories
  • Dossiers
  • Rédacteurs
  • +

Sécurisez votre site internet en quelques minutes depuis votre .htaccess avec 6G Firewall

par Benjamin SANCHEZle 17/02/2016

Aujourd'hui, le BlogDuWebdesign vous propose le meilleur rapport temps d'installation/securité que vous pourrez trouver pour sécuriser votre site internet : le fichier .htaccess 6G Firewall.

Mise au point : qu'est-ce qu'un fichier .htaccess ?

Les fichiers .htaccess sont des fichiers de configuration "externes" pour le serveur web apache HTTP server

Apache, en quelques mots, est un serveur web. C'est un logiciel qui récupère les demandes (une page web, une image, ...) de la part de clients (des navigateurs web), qui transmet cette demande en cuisine (Php par exemple) et qui renvoie le résultat au client. Il existe d'autres serveurs web (Nginx par exemple), mais Apache reste le plus répandu.

Pourquoi externe ? Car ses fichiers ne sont pas à placer dans le dossier d'Apache avec ses autres configurations, mais dans les fichiers sur lesquelles nous voulons qu'ils s'appliquent. Mettre un fichier .htaccess dans le dossier de son Wordpress, par exemple, revient à préciser des règles de configurations supplémentaires uniquement pour son site web. Et vu que si votre hébergement est mutualisé, vous n'avez pas accès à la configuration du serveur apache, c'est souvent votre seul moyen de jouer avec des réglages comme les réécritures d'URL et les redirections.

Ces fichiers sont très puissants, et il faut donc les manipuler avec le plus grand soin. Une erreur dans l'un d'entre eux risque fort de tout simplement rendre votre site inaccessible.

Ce sujet a déjà eu droit à son article dédié, je vais donc me contenter d'un simple résumé ici. Pour une description bien plus complète, je vous propose de lire Le .htaccess et ses secret.

6G Firewall

6G Firewall n'est pas comme son nom l'indique un Firewall, mais un fichier .htaccess soigneusement construit pour bloquer le plus possible de risque d'attaques sur votre site.

Il se présente comme un bloc de texte à copier dans les fichiers .htaccess a la racine de votre site, se met en place en quelques minutes à peine, et est sans doute le meilleur rapport protection/simplicité d'installation que vous puissiez trouver sur internet.

Bien que les .htaccess sont par définition compatible avec tous les sites avec comme serveur web apache (et où les .htaccess sont autorisés bien sûr), on est jamais à l'abri d'un imponderable. Pensez donc à bien sauvegarder votre .htaccess original avant d'appliquer cette modification, et tester votre site après son installation.

# 6G FIREWALL/BLACKLIST
# @ https://perishablepress.com/6g/

# 6G:[QUERY STRINGS]
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{QUERY_STRING} (eval\() [NC,OR]
	RewriteCond %{QUERY_STRING} (127\.0\.0\.1) [NC,OR]
	RewriteCond %{QUERY_STRING} ([a-z0-9]{2000}) [NC,OR]
	RewriteCond %{QUERY_STRING} (javascript:)(.*)(;) [NC,OR]
	RewriteCond %{QUERY_STRING} (base64_encode)(.*)(\() [NC,OR]
	RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC,OR]
	RewriteCond %{QUERY_STRING} (<|%3C)(.*)script(.*)(>|%3) [NC,OR]
	RewriteCond %{QUERY_STRING} (\\|\.\.\.|\.\./|~|`|<|>|\|) [NC,OR]
	RewriteCond %{QUERY_STRING} (boot\.ini|etc/passwd|self/environ) [NC,OR]
	RewriteCond %{QUERY_STRING} (thumbs?(_editor|open)?|tim(thumb)?)\.php [NC,OR]
	RewriteCond %{QUERY_STRING} (\'|\")(.*)(drop|insert|md5|select|union) [NC]
	RewriteRule .* - [F]
</IfModule>

# 6G:[REQUEST METHOD]
<IfModule mod_rewrite.c>
	RewriteCond %{REQUEST_METHOD} ^(connect|debug|delete|move|put|trace|track) [NC]
	RewriteRule .* - [F]
</IfModule>

# 6G:[REFERRERS]
<IfModule mod_rewrite.c>
	RewriteCond %{HTTP_REFERER} ([a-z0-9]{2000}) [NC,OR]
	RewriteCond %{HTTP_REFERER} (semalt.com|todaperfeita) [NC]
	RewriteRule .* - [F]
</IfModule>

# 6G:[REQUEST STRINGS]
<IfModule mod_alias.c>
	RedirectMatch 403 (?i)([a-z0-9]{2000})
	RedirectMatch 403 (?i)(https?|ftp|php):/
	RedirectMatch 403 (?i)(base64_encode)(.*)(\()
	RedirectMatch 403 (?i)(=\\\'|=\\%27|/\\\'/?)\.
	RedirectMatch 403 (?i)/(\$(\&)?|\*|\"|\.|,|&|&amp;?)/?$
	RedirectMatch 403 (?i)(\{0\}|\(/\(|\.\.\.|\+\+\+|\\\"\\\")
	RedirectMatch 403 (?i)(~|`|<|>|:|;|,|%|\\|\s|\{|\}|\[|\]|\|)
	RedirectMatch 403 (?i)/(=|\$&|_mm|cgi-|etc/passwd|muieblack)
	RedirectMatch 403 (?i)(&pws=0|_vti_|\(null\)|\{\$itemURL\}|echo(.*)kae|etc/passwd|eval\(|self/environ)
	RedirectMatch 403 (?i)\.(aspx?|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf)$
	RedirectMatch 403 (?i)/(^$|(wp-)?config|mobiquo|phpinfo|shell|sqlpatch|thumb|thumb_editor|thumbopen|timthumb|webshell)\.php
</IfModule>

# 6G:[USER AGENTS]
<IfModule mod_setenvif.c>
	SetEnvIfNoCase User-Agent ([a-z0-9]{2000}) bad_bot
	SetEnvIfNoCase User-Agent (archive.org|binlar|casper|checkpriv|choppy|clshttp|cmsworld|diavol|dotbot|extract|feedfinder|flicky|g00g1e|harvest|heritrix|httrack|kmccrew|loader|miner|nikto|nutch|planetwork|postrank|purebot|pycurl|python|seekerspider|siclab|skygrid|sqlmap|sucker|turnit|vikspider|winhttp|xxxyy|youda|zmeu|zune) bad_bot
	<limit GET POST PUT>
		Order Allow,Deny
		Allow from All
		Deny from env=bad_bot
	</limit>
</IfModule>

# 6G:[BAD IPS]
<Limit GET HEAD OPTIONS POST PUT>
	Order Allow,Deny
	Allow from All
	# uncomment/edit/repeat next line to block IPs
	# Deny from 123.456.789
</Limit>

Le seul reproche que je fais à cette ressource est qu'il n'existe pas de version commentée pour expliquer son fonctionnement, je vais donc vous expliquer grossièrement le rôle de chacune des parties, pour que vous ne vous retrouviez pas à installer quelque chose sans le comprendre.

6G:[QUERY STRINGS]

Cette partie vérifie que l'URL demandée par le client n'a pas été faite pour profiter de failles sur votre serveur web ou votre code PHP. Si c'est le cas, il va interdire l'accès à la page grace à (RewriteRule .* - [F]), ou le [F] signifie que l'accès n'est pas autorisé.

6G: [REQUEST METHOD]

Cette partie teste les méthodes HTTP envoyées. Les navigateurs ne prenant en charge que GET et POST, toutes les autres se retrouvent bloquées avec la même méthode que le bloc précédent.

6G:[REFERRERS]

Ce bloc est là pour bloquer le trafique provenant de certains referers (c'est-à-dire les referents, les sites d'où proviennent les visiteurs). Si vos êtes soumis a dû référer spam, c'est à cet endroit que vous pourrez lister les adresses de spammeur.

6G:[REQUEST STRINGS]

Ce bloc est là pour bloquer les appels les plus fréquents fait pas des Bots essayant de déterminer le type de site que vous possédez.

6G:[USER AGENTS]

Cette ligne bloque les bots dont le nom est dans la grande liste que vous pouvez voir. 

Notez la présence de archive.org en tout premier. J'ai personnellement autorise ce bot, car je trouve que la présence d'une copie de son site sur la waybackmachine n'est pas un mal, au contraire.

6G:[BAD IPS]

Enfin, ce bloc actuellement vide vous permet de bloquer des ips spécifiques. Si vous subissez les assauts d'un bot ou une tentative de DDOS depuis une IP, c'est à cet endroit qu'il faudra l'inserer !

  • Partager l'article en 1 clic !

    N'hésitez pas à aider le BlogDuWebdesign
Avatar_thumbAuteur : Benjamin voir son blog

Développeur autodidacte depuis quelques années, déjà, je suis le développeur du blog du webdesign, où mon rôle est de concretiser les différentes idées et maquettes.

Devenez membre !

Rejoignez la communauté des créatifs du web !
- Partagez vos créations
- Gagnez en visibilité
- Créez votre blog facilement
> En savoir plus

Créer mon compte

2Commentaires

  • Avatar_thumb
    Jérôme

    le 17/02/2016 | #1

    Article intéréssant ! Cette méthode a t'elle déjà été utilisé avec wordpress?

  • Avatar_thumb
    screen impact

    le 20/02/2016 | #2

    Merci ! :)

Ecrire un commentaire

captcha

twitter birdtwitter birdtwitter birdtwitter birdtwitter bird
twitter bird
Ouvrir