[réseau] Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Modérateur : Mods GNU/Linux
-
- Site Admin
- Messages : 98240
- Inscription : 10 sept. 2005 13:57
- Contact :
[réseau] Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Une fois n'est pas coutume, nous allons parler de sécurité non pas sous Windows mais sous GNU/Linux.
À l'heure où les serveurs dédiés sont accessibles au grand public (Dedibox, OVH, etc.), vous pouvez vous retrouver avec un serveur dédié GNU/Linux sans avoir forcément les connaissances requises pour l'administrer et surtout le sécuriser.
Les auteurs de malwares recherchent des serveurs WEB vulnérables afin de les hacker, soit pour insérer une iframe pour infecter les visiteurs du site, soit pour héberger du code malicieux utilisé dans des infections.
Cette page a pour but de vous donner les bases pour sécuriser un serveur WEB PHP/MySQL, bien entendu, une connaissance minimale du système GNU/Linux est requise.
Introduction
Cette page vous donne quelques recettes et conseils pour sécuriser votre serveur GNU/Linux, la page sera découpée en quatre chapitres : Cette page est destinée à des personnes qui ont un minimum de connaissance du système GNU/Linux, vous risquez de faire plus de dégâts qu'autre chose à modifier certaines configurations.
Tous les éléments sont donnés pour être effectués en console via SSH sur votre serveur distant. Pour ceux qui ne sont pas habitués, vous pouvez bien sûr vous inspirer de certains conseils et les appliquer via panels ou interfaces WEB pour modifier la configuration de votre système.
Dans le cas d'un serveur de production, essayez sur un serveur de test ou une machine personnelle avant d'effectuer des éventuelles modifications.
Enfin, effectuez une sauvegarde des fichiers de configuration avant toute modification afin de pouvoir revenir en arrière et bien sûr faites une sauvegarde du système.
Les conseils classiques en matière de sécurité
Bien entendu, vous devez aussi suivre les conseils classiques de tout système que ce soit un serveur ou un poste de travail à savoir :
De même le nom des packages peut différer d'une distribution à l'autre.
À l'heure où les serveurs dédiés sont accessibles au grand public (Dedibox, OVH, etc.), vous pouvez vous retrouver avec un serveur dédié GNU/Linux sans avoir forcément les connaissances requises pour l'administrer et surtout le sécuriser.
Les auteurs de malwares recherchent des serveurs WEB vulnérables afin de les hacker, soit pour insérer une iframe pour infecter les visiteurs du site, soit pour héberger du code malicieux utilisé dans des infections.
Cette page a pour but de vous donner les bases pour sécuriser un serveur WEB PHP/MySQL, bien entendu, une connaissance minimale du système GNU/Linux est requise.
Introduction
Cette page vous donne quelques recettes et conseils pour sécuriser votre serveur GNU/Linux, la page sera découpée en quatre chapitres : Cette page est destinée à des personnes qui ont un minimum de connaissance du système GNU/Linux, vous risquez de faire plus de dégâts qu'autre chose à modifier certaines configurations.
Tous les éléments sont donnés pour être effectués en console via SSH sur votre serveur distant. Pour ceux qui ne sont pas habitués, vous pouvez bien sûr vous inspirer de certains conseils et les appliquer via panels ou interfaces WEB pour modifier la configuration de votre système.
Dans le cas d'un serveur de production, essayez sur un serveur de test ou une machine personnelle avant d'effectuer des éventuelles modifications.
Enfin, effectuez une sauvegarde des fichiers de configuration avant toute modification afin de pouvoir revenir en arrière et bien sûr faites une sauvegarde du système.
Les conseils classiques en matière de sécurité
Bien entendu, vous devez aussi suivre les conseils classiques de tout système que ce soit un serveur ou un poste de travail à savoir :
- Utiliser des mots de passe complexes (on évite les mots de passe faciles qui se trouvent dans les dictionnaires)
- Maintenir son système à jour, encore et toujours, un système non à jour = un système comportant des failles. Si vous voulez donner du grain à moudre pour vous faire hacker, y a pas bien.
- Maintenez votre système à jour : effectuez des mises à jour régulières, dans le cas d'un serveur Debian : apt-get update puis apt-get upgrade. Dans cette optique, installez au maximum les applications —notamment celles critiques (Apache, MySQL)— depuis les packages de votre distribution afin qu'elles soient maintenues à jour par votre distribution.
- Inscrivez-vous sur des sites de news pour vous tenir au courant (vous trouverez une liste plus bas).
- Faites bien attention aux permissions sur les fichiers et à la gestion des utilisateurs/groupes.
- N'installez que les dæmons et applications utiles et requis par votre serveur. Moins d'applications qui tournent = moins de vulnérabilités possibles et aussi moins de problèmes.
- Si vous faites des tests de forums, wiki etc... pensez à supprimer ces derniers, ce serait dommage de se faire compromettre son serveur pour un wiki oublié au fin fond d'un répertoire.
- Attention aussi aux scripts PHP et autres que vous utilisez, si vous téléchargez des scripts PHP sur des sites attention... notamment aux SQL Injections
- Maîtriser et connaître son système. Plus vous serez à l'aise sur votre système, moins il sera facile de hacker votre serveur. N'hésitez pas à vous documenter sur les systèmes GNU/Linux, Internet regorge d'informations.
- Jeter un œil régulièrement aux logs systèmes afin de vérifier ce qui se passe.
De même le nom des packages peut différer d'une distribution à l'autre.
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
-
- Site Admin
- Messages : 98240
- Inscription : 10 sept. 2005 13:57
- Contact :
Re: Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Sécuriser le système
Gestion des ports
Le but est de fermer les ports ouverts par divers dæmons après installation du système.
Ce sont en général des dæmons qui ouvrent des ports. Pour fermer un port, vous devez soit désactiver le dæmon du démarrage pour ne pas qu'il se lance, soit le désinstaller (en supprimant le package).
Pour visualiser les ports ouverts (LISTEN), utilisez la commande suivante :
NOTE : la commande netstat -taupe donne des infos supplémentaires tel que le PID du programme etc...
Si vous avez à killer un programme.
inetd
Cela permet d'éviter d'avoir des services qui tournent en permanence afin de gagner en ressources.
Si vous n'en avez pas besoin, vous pouvez le supprimer : dpkg -P inetd
Par défaut le port auth (113) est ouvert, pour le fermer, éditez le fichier /etc/inetd.conf et commentez la ligne
RPC
Les RPC (développées par sun) permettent l’exécution de procédures sur une machine distante.
Les RPC sont utilisées par NFS, NID etc... si vous ne comptez pas utiliser ces programmes, vous pouvez les supprimer.
(plus d'infos : http://coredump.developpez.com/nfs/)
exim4 est le dæmon mail par défaut de Debian, et il écoute sur localhost.
Si ce n'est pas le cas, vous pouvez le reconfigurer, tapez la commande : dpkg-reconfigure exim4-config
Si votre serveur ne fait pas serveur mail, laissez la distribution en local, Il vous demandera alors sur quelle adresse écouter, laissez l'adresse: 127.0.0.1
Après installation d'Apache et MySQL, vous devez obtenir ceci :
Sécuriser SSHD
Il peut être intéressant d'interdire de se logguer directement en root pour plus de sécurité.
Pour cela dans le fichier /etc/ssh/sshd_config, mettez la valeur PermitRootLogin à no
Vous pouvez aussi utiliser fail2ban pour filtrer les tentatives de connexions SSH (voir dans le paragraphe pour aller plus loin).
Firewall / Iptables
La dernière opération consiste à installer un pare-feu via un script iptables.
NOTE : Si vous n'êtes pas à l'aise avec les scripts iptables et que vous avez un accès graphiques à votre serveur (sic), vous pouvez utiliser les programmes suivants :
firestarter: http://doc.ubuntu-fr.org/firestarter
FirewallBuilder : http://www.fwbuilder.org/
Un peu de documentation sur iptables :
http://doc.ubuntu-fr.org/iptables
http://www.linux-france.org/prj/inetdoc ... -tutorial/
Voici un script de départ que vous pouvez modifier : https://www.malekal.com/fichiers/secure_ ... irewall.sh
Ce dernier n'ouvre que les ports 22 et 80, à vous de le customizer selon les ports à ouvrir sur votre serveur.
Dans le cas d'un serveur distant, il peut être dangereux d'effectuer des tests. Si vous fermez le port SSH, vous perdez la main sur le serveur.
Vous pouvez alors utiliser ce script qui reset toutes les tables iptables : https://www.malekal.com/fichiers/secure_ ... irewall.sh
Après avoir mis les scripts en exécution (chmod +x), pour effectuer un test, il suffit de lancer la commande suivante :
/root/firewall && sleep 120 && /root/no-firewall.sh
Le pare-feu sera alors lancé pendant 120s puis tout sera remis à zéro, dans le cas où vous avez fait une erreur de script, tout sera à nouveau accessible après ces 120s.
De quoi effectuer autant de test que vous voulez.
Une fois le script firewall OK, copiez le dans /etc/init.d et lancez la commande suivante pour que le script se charge au démarrage :
Vous pouvez scanner votre serveur depuis une machine distance avec nmap : http://nmap.org/
ou éventuellement depuis un site testant les pare-feu.
https://www.grc.com/x/ne.dll?bh0bkyd2
http://www.auditmypc.com/firewall-test.asp
Note pour les utilisateurs Dedibox :
Dedibox utilise un système de monitoring qui se connecte sur le port 161, vous devez donc ouvrir ce port, pour cela, rajoutez les lignes suivantes :
# Monitoring Dedibox
iptables -A INPUT -i $wlan -s 88.191.254.0/24 -p tcp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $wlan -s 88.191.254.0/24 -p udp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $wlan -d 88.191.254.0/24 -p tcp --sport 161 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $wlan -d 88.191.254.0/24 -p udp --sport 161 -m state --state ESTABLISHED -j ACCEPT
Firewall et DoS
On peux aussi définir des règles pour limiter le nombre de connexion sur le port 80.
Pour tester, vous pouvez utiliser le programme ab qui est fournit avec le package Apache.
Exemple :
Par exemple, si l'on prend cette portion de log d'attaque.
On peut voir que c'est la même page avec la même string qui est envoyée (https://www.malekal.com//search/index.ph ... U*@T^VDT^R ).
Le script fait un grep sur les logs pour récupérer cette string et récupère les IP des attaquants pour les bloquer.
A customisez selon le type d'attaque :
iptables et strings :
iptables est capable de filtrer sur les strings - exemple pour les attaques :
Cette commande peux donc être utile sur les attaques avec des stings spécifiques.
Encore une fois, cela est suffisant pour certains DoS, plus le nombre d'IP est grand plus difficile l'attaque sera à bloquer.
Enfin dans le cas d'un syn flood, cela ne marche pas.
Firewall DOS et IPSET
IPSET peux aussi s'avérer utile pour bannir un nombre assez conséquent d'IPs.
IPSET nécessite des modules dans le kernel, par exemple, sur les kernel OVH ce dernier n'est pas disponible.
Créer une chain ipset et la bloquer sur ipatbles :
Lister les IPs dans IPset :
Dans un tout autre registre, il est fortement conseiller de renforcer la sécurité de votre serveur FTP en filtrant les connexions extérieures.
Dans la mesure du possible, créez des règles iptables pour filtrer les connexions et ne laisser passer que votre adresse IP fixe (ou vos classes d'IP si vous êtes en IP dynamique).
Certains infections volent les informations de connexion FTP, je vous conseille de lire cette page afin d'avoir un aperçu sur ces infections : hack-web-site-t22837.html
Pour aller plus loin contre les attaques DoS
Voici un programme Floodmon qui permet d'aider à bloquer les attaques Syn Flood : http://spamcleaner.org/fr/misc/floodmon.html
Si vous êtes chez OVH - Il est aussi possible de mettre un firewall matériel en amont de votre serveur dédié : https://www.malekal.com/2013/01/01/ovh-e ... isco-asdm/
Quelques liens et programmes utiles et divers
Vous pouvez aussi désinstaller le package ppp qui ne sert à priori à rien : apt-get remove ppp
Enfin, vous pouvez aussi faire en sorte que seul le root puisse utiliser les programmes de compilations :
Gestion des ports
Le but est de fermer les ports ouverts par divers dæmons après installation du système.
Ce sont en général des dæmons qui ouvrent des ports. Pour fermer un port, vous devez soit désactiver le dæmon du démarrage pour ne pas qu'il se lance, soit le désinstaller (en supprimant le package).
Pour visualiser les ports ouverts (LISTEN), utilisez la commande suivante :
Code : Tout sélectionner
demonux:/# netstat -lp
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 *:4427 *:* LISTEN 2016/rpc.statd
tcp 0 0 *:sunrpc *:* LISTEN 1644/portmap
tcp 0 0 *:auth *:* LISTEN 1996/inetd
tcp 0 0 localhost:smtp *:* LISTEN 1984/exim4
tcp6 0 0 *:ssh *:* LISTEN 2204/sshd
udp 0 0 *:3072 *:* 2016/rpc.statd
udp 0 0 *:920 *:* 2016/rpc.statd
udp 0 0 *:bootpc *:* 1807/dhclient3
udp 0 0 *:sunrpc *:* 1644/portmap
Si vous avez à killer un programme.
inetd
inetd est un service réseau qui écoute les ports pour démarrer le service adéquat en fonction de la connexion sur le port.tcp 0 0 *:auth *:* LISTEN 1996/inetd
Cela permet d'éviter d'avoir des services qui tournent en permanence afin de gagner en ressources.
Si vous n'en avez pas besoin, vous pouvez le supprimer : dpkg -P inetd
Par défaut le port auth (113) est ouvert, pour le fermer, éditez le fichier /etc/inetd.conf et commentez la ligne
Relancez la conf d'inetd par la commande :ident stream tcp wait identd /usr/sbin/identd identd
Code : Tout sélectionner
/etc/init.d/openbsd-inetd start
Les RPC (développées par sun) permettent l’exécution de procédures sur une machine distante.
Les RPC sont utilisées par NFS, NID etc... si vous ne comptez pas utiliser ces programmes, vous pouvez les supprimer.
(plus d'infos : http://coredump.developpez.com/nfs/)
Vous pouvez désinstaller portmap & nfs-common:tcp 0 0 *:sunrpc *:* LISTEN 1644/portmap
tcp 0 0 *:4427 *:* LISTEN 2016/rpc.statd
udp 0 0 *:3072 *:* 2016/rpc.statd
udp 0 0 *:920 *:* 2016/rpc.statd
Code : Tout sélectionner
apt-get remove portmap nfs-common
Si ce n'est pas le cas, vous pouvez le reconfigurer, tapez la commande : dpkg-reconfigure exim4-config
Si votre serveur ne fait pas serveur mail, laissez la distribution en local, Il vous demandera alors sur quelle adresse écouter, laissez l'adresse: 127.0.0.1
Après installation d'Apache et MySQL, vous devez obtenir ceci :
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 localhost:mysql *:* LISTEN 2480/mysqld
tcp 0 0 localhost:smtp *:* LISTEN 7160/exim4
tcp6 0 0 *:www *:* LISTEN 6830/apache2
tcp6 0 0 *:ssh *:* LISTEN 1971/sshd
udp 0 0 *:bootpc *:* 1952/dhclient3
Sécuriser SSHD
Il peut être intéressant d'interdire de se logguer directement en root pour plus de sécurité.
Pour cela dans le fichier /etc/ssh/sshd_config, mettez la valeur PermitRootLogin à no
et pour encore plus de sécurité, vous pouvez restreindre l'accès SSH à certains utilisateurs ou groupes, via les paramètres : AllowUsers et AllowGroupsPermitRootLogin no
Vous pouvez aussi utiliser fail2ban pour filtrer les tentatives de connexions SSH (voir dans le paragraphe pour aller plus loin).
Firewall / Iptables
La dernière opération consiste à installer un pare-feu via un script iptables.
NOTE : Si vous n'êtes pas à l'aise avec les scripts iptables et que vous avez un accès graphiques à votre serveur (sic), vous pouvez utiliser les programmes suivants :
firestarter: http://doc.ubuntu-fr.org/firestarter
FirewallBuilder : http://www.fwbuilder.org/
Un peu de documentation sur iptables :
http://doc.ubuntu-fr.org/iptables
http://www.linux-france.org/prj/inetdoc ... -tutorial/
Voici un script de départ que vous pouvez modifier : https://www.malekal.com/fichiers/secure_ ... irewall.sh
Ce dernier n'ouvre que les ports 22 et 80, à vous de le customizer selon les ports à ouvrir sur votre serveur.
Dans le cas d'un serveur distant, il peut être dangereux d'effectuer des tests. Si vous fermez le port SSH, vous perdez la main sur le serveur.
Vous pouvez alors utiliser ce script qui reset toutes les tables iptables : https://www.malekal.com/fichiers/secure_ ... irewall.sh
Après avoir mis les scripts en exécution (chmod +x), pour effectuer un test, il suffit de lancer la commande suivante :
/root/firewall && sleep 120 && /root/no-firewall.sh
Le pare-feu sera alors lancé pendant 120s puis tout sera remis à zéro, dans le cas où vous avez fait une erreur de script, tout sera à nouveau accessible après ces 120s.
De quoi effectuer autant de test que vous voulez.
Une fois le script firewall OK, copiez le dans /etc/init.d et lancez la commande suivante pour que le script se charge au démarrage :
Code : Tout sélectionner
update-rc.d firewall defaults
ou éventuellement depuis un site testant les pare-feu.
https://www.grc.com/x/ne.dll?bh0bkyd2
http://www.auditmypc.com/firewall-test.asp
Note pour les utilisateurs Dedibox :
Dedibox utilise un système de monitoring qui se connecte sur le port 161, vous devez donc ouvrir ce port, pour cela, rajoutez les lignes suivantes :
# Monitoring Dedibox
iptables -A INPUT -i $wlan -s 88.191.254.0/24 -p tcp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $wlan -s 88.191.254.0/24 -p udp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $wlan -d 88.191.254.0/24 -p tcp --sport 161 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $wlan -d 88.191.254.0/24 -p udp --sport 161 -m state --state ESTABLISHED -j ACCEPT
Firewall et DoS
On peux aussi définir des règles pour limiter le nombre de connexion sur le port 80.
Pour tester, vous pouvez utiliser le programme ab qui est fournit avec le package Apache.
Exemple :
Voici un exemple de script qui permet de filtrer le nombre de connexions sur le port 80 :ab -n 1000 -c 100 http://www.adressesiteweb.com/
Je vous donne aussi ce script qui peut être interressant pour bloquer des IP sur des requêtes identiques : https://www.malekal.com/fichiers/secure_ ... /ban_ip.sh#!/bin/bash
IPT=/sbin/iptables
# Max connection in seconds
SECONDS=10
# Max connections per IP
BLOCKCOUNT=10
# ....
# ..
# default action can be DROP or REJECT
DACTION="DROP"
$IPT -F
$IPT -N LOGDROP
$IPT -A LOGGING -j LOG -m limit --limit 10/m --log-prefix "Possible-DoS: " --log-level 4
$IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds ${SECONDS} --hitcount ${BLOCKCOUNT} -j LOGGING
$IPT -A LOGDROP -j ${DACTION}
# ....
Par exemple, si l'on prend cette portion de log d'attaque.
Code : Tout sélectionner
62.163.251.181 - - [27/Feb/2008:09:14:57 +0100] "GET https://www.malekal.com//search/index.php?action=go&blork=743hbvysbtVTRVDRW^%^F^VF^WF^D$%WD$%DWC$#WDF$%WFDW%^T&GYHU*@T^VDT^R HTTP/1.1" 403 219 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Hotbar 4.3.1.0)"
80.200.13.7 - - [27/Feb/2008:09:14:57 +0100] "GET https://www.malekal.com//search/index.php?action=go&blork=743hbvysbtVTRVDRW^%^F^VF^WF^D$%WD$%DWC$#WDF$%WFDW%^T&GYHU*@T^VDT^R HTTP/1.1" 403 219 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031007"
91.64.5.214 - - [27/Feb/2008:09:14:57 +0100] "GET https://www.malekal.com//search/index.php?action=go&blork=743hbvysbtVTRVDRW^%^F^VF^WF^D$%WD$%DWC$#WDF$%WFDW%^T&GYHU*@T^VDT^R HTTP/1.1" 403 219 "-" "Microsoft-WebDAV-MiniRedir/5.1.2600"
81.241.161.172 - - [27/Feb/2008:09:14:57 +0100] "GET https://www.malekal.com//search/index.php?action=go&blork=743hbvysbtVTRVDRW^%^F^VF^WF^D$%WD$%DWC$#WDF$%WFDW%^T&GYHU*@T^VDT^R HTTP/1.1" 403 219 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1"
77.250.132.166 - - [27/Feb/2008:09:14:57 +0100] "GET https://www.malekal.com//search/index.php?action=go&blork=743hbvysbtVTRVDRW^%^F^VF^WF^D$%WD$%DWC$#WDF$%WFDW%^T&GYHU*@T^VDT^R HTTP/1.1" 403 219 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)"
89.3.137.76 - - [27/Feb/2008:09:14:57 +0100] "GET https://www.malekal.com//search/index.php?action=go&blork=743hbvysbtVTRVDRW^%^F^VF^WF^D$%WD$%DWC$#WDF$%WFDW%^T&GYHU*@T^VDT^R HTTP/1.1" 403 219 "-" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.5) Gecko/20031021"
Le script fait un grep sur les logs pour récupérer cette string et récupère les IP des attaquants pour les bloquer.
A customisez selon le type d'attaque :
iptables et strings :
iptables est capable de filtrer sur les strings - exemple pour les attaques :
Vous pouvez utiliser la commande :GET /w00tw00t.at.ISC.SANS
On limite la recherche aux strings de 70 octets maximum (sinon cela peux faire ramer le serveur).iptables -I INPUT -d xxx.xxx.xxx.xxx -p tcp --dport 80 -m string --to 70 --algo bm --string 'GET /w00tw00t.at.ISC.SANS.' -j DROP
Cette commande peux donc être utile sur les attaques avec des stings spécifiques.
Encore une fois, cela est suffisant pour certains DoS, plus le nombre d'IP est grand plus difficile l'attaque sera à bloquer.
Enfin dans le cas d'un syn flood, cela ne marche pas.
Firewall DOS et IPSET
IPSET peux aussi s'avérer utile pour bannir un nombre assez conséquent d'IPs.
IPSET nécessite des modules dans le kernel, par exemple, sur les kernel OVH ce dernier n'est pas disponible.
modprobe ip_set_hash_net
modprobe ip_set_list_set
Créer une chain ipset et la bloquer sur ipatbles :
Ajouter une IP à la chain ipset :ipset -N attaquant iphash --hashsize 4096 --probes 2 --resize 50
iptables -I INPUT -p tcp -m multiport --dport 80,443 -m set --match-set attaquant src -j DROP
On peux aussi ajouter des subnets etc.ipset -! add attaquant $i
Lister les IPs dans IPset :
Vider une chain :ipset list
Sécuriser le service FTPipset -F attaquant
Dans un tout autre registre, il est fortement conseiller de renforcer la sécurité de votre serveur FTP en filtrant les connexions extérieures.
Dans la mesure du possible, créez des règles iptables pour filtrer les connexions et ne laisser passer que votre adresse IP fixe (ou vos classes d'IP si vous êtes en IP dynamique).
Certains infections volent les informations de connexion FTP, je vous conseille de lire cette page afin d'avoir un aperçu sur ces infections : hack-web-site-t22837.html
Pour aller plus loin contre les attaques DoS
Voici un programme Floodmon qui permet d'aider à bloquer les attaques Syn Flood : http://spamcleaner.org/fr/misc/floodmon.html
Si vous êtes chez OVH - Il est aussi possible de mettre un firewall matériel en amont de votre serveur dédié : https://www.malekal.com/2013/01/01/ovh-e ... isco-asdm/
Quelques liens et programmes utiles et divers
- Bastille pour sécuriser GNU/Linux : http://bastille-linux.sourceforge.net/
- Pour les paranos - Rkhunter : http://www.rootkit.nl/
- Toujours pour les paranos - chkrootkit : http://www.chkrootkit.org/
- Gérer et surveiller ses daemmon avec Monit : http://gorgonite.developpez.com/tutoriels/linux/monit/
Vous pouvez aussi désinstaller le package ppp qui ne sert à priori à rien : apt-get remove ppp
Enfin, vous pouvez aussi faire en sorte que seul le root puisse utiliser les programmes de compilations :
Code : Tout sélectionner
chmod o-x /usr/bin/gcc-4.1
chmod o-x /usr/bin/make
chmod o-x /usr/bin/apt-get
chmod o-x /usr/bin/dpkg
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
-
- Site Admin
- Messages : 98240
- Inscription : 10 sept. 2005 13:57
- Contact :
Re: Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Sécuriser Apache 2
Sécuriser Apache : faites du ménage
Il convient de faire du ménage après l'installation d'Apache, afin de désactiver les éléments inutiles.
Encore une fois, faites tourner le strict minimum, c'est à dire ce dont vous vous servez et désactivez le reste qui peut mettre en péril la sécurité du serveur (surtout si vous oubliez à la longue que telle ou telle chose tourne).
un peu d'obscurentisme
Par défaut, Apache nous donne la version utilisée, ce qui peut permettre de savoir si telles ou telles vulnérabilités est présente.
Faites du ménage dans les sites-availables : /etc/apache2/sites-available/default
Notez que la commande suivante permet de désactiver un répertoire virtuel :
Faites du ménage dans les modules. Les modules ajoutent des fonctionnalités (et donc des risques de vulnérabilités) au serveur Apache.
Encore une fois, ne faites tourner que les modules que vous utilisez, désactiver tous les autres modules.
La liste des modules et leurs descriptions respectives est disponible, en français, à cette adresse : http://httpd.apache.org/docs/2.2/mod/
Voir aussi cette page : http://www.formation.ssi.gouv.fr/stages ... dules.html
Par exemple pour désactiver le module cgi :
Vous devez comme indiqué relancer Apache.
La commande a2enmod permet de réactiver le module.
Dans les bonnes habitudes :
NE PAS laisser les droits en écriture aux groupes others afin d'éviter que n'importe quel utilisateur Linux ne puisse écrire dans les sites et ainsi pouvant uploader par une vulnérabilité une backdoor
Les explications du pourquoi et du comment sont sur la page des SQL Injection (SQLi) : SQL Injection (SQLi) : quelques commentaires
Bloquer l'exécution de binaire par Apache
Bloquer l'exécution de binaire par Apache (ls, wget etc), se reporter à la FAQ : Sécurité WEB : bloquer l’exécution de binaire sur Apache
mod-Security
Ce mods permet de mettre en place du filtrage au niveau des user agents, referer, header etc.
modsecurity ainsi que les règles crs sont disponible sur apt :
Site officiel des règles crs : https://github.com/SpiderLabs/owasp-modsecurity-crs
Sur Debian, les règles sont placées dans le dossier : /usr/share/modsecurity-crs/base_rules/
Le log modsecurity se situe dans le fichier : /var/log/apache2/modsec_audit.log
Pour ma part, je n'ai pas installé les crc de Debian, mais pris directement les règles sur le site.
Au moment où ces lignes sont écrites, les règles sont pour la version 2.7 de modsecurity.
Sur apt, la version de modsecurity est la 2.6
Si vous désirez utiliser les dernières règles avec la version 2.6, vous devez utiliser l'utilitaire suivant : https://github.com/SpiderLabs/owasp-mod ... actions.pl
qui permet de les convertir de la manière suivante : remove-2.7-actions.pl -t 2.6 -f regle.conf
Notez qu'il existe des projets qui permettent de récupérer les logs modsecurity et de les afficher sur des consoles WEB.
Exemple modsecurity-console ou WAF-FLE, plus d'informations : http://www.modsecurity.org/projects/
La directive SecRuleEngine à DetectionOnlypermet de passer modsecurity en détection afin de visualiser les potentielles faux positif et créer des règles d'exception.
Pour cela, vous pouvez créer un fichier whitelist.conf, par exemple, dans : /usr/share/modsecurity-crs/base_rules/
Exemple pour désactiver la règle 981245 sur la page inscription.php
Une fois que vous pensez que les règles sont bien adaptées, vous pouvez passer SecRuleEngine sur On
mods-security et DoS
SpiderLabs fournit des règles expérimentales contre les attaques DoS : https://github.com/SpiderLabs/owasp-mod ... base_rules
Téléchargez ces règles et placez les dans le dossier : /usr/share/modsecurity-crs/base_rules/
Téléchargez le fichier :https://github.com/SpiderLabs/owasp-mod ... nf.example
et renommer le en .conf
Relance la configuration d'Apache : /etc/init.d/apache2 reload
Le programme Slowloris : http://ckers.org/slowloris/
ou slowhttptest http://code.google.com/p/slowhttptest/
permet de tester.
Attention, si les règles ne fonctionnent pas, vous pouvez faire planter Apache (il convient de relancer ce dernier)
Hop en test :

On constate le bourrinage dans les logs Apache.

Après un certain nombre de requête, modsecurity détecte l'attaque.
Dans les logs de modsecurity, on voir le bloquage :

Pour aller plus loin...
Protéger vos données avec .htaccess : https://www.malekal.com/apache.php
Pas mal de tutorial sur Spamcleaner pour sécuriser son serveur Apache : http://spamcleaner.org/fr/misc/modsec2ipt.html
Eventuellement mettre en place du SSL :
http://www.ac-creteil.fr/reseaux/system ... e-ssl.html
http://www.coagul.org/article.php3?id_article=351
http://doc.ubuntu-fr.org/tutoriel/secur ... 2_avec_ssl
Chrooter Apache2 :
http://www.cgisecurity.com/webservers/a ... howto.html
Apache et suEXEC : http://httpd.apache.org/docs/1.3/suexec.html
Documentation apache ubuntu : http://doc.ubuntu-fr.org/apache2
Sécuriser Apache : faites du ménage
Il convient de faire du ménage après l'installation d'Apache, afin de désactiver les éléments inutiles.
Encore une fois, faites tourner le strict minimum, c'est à dire ce dont vous vous servez et désactivez le reste qui peut mettre en péril la sécurité du serveur (surtout si vous oubliez à la longue que telle ou telle chose tourne).
un peu d'obscurentisme
Par défaut, Apache nous donne la version utilisée, ce qui peut permettre de savoir si telles ou telles vulnérabilités est présente.
Ajoutez les directives suivantes dans le fichier de conf d'apache (/etc/apache2/apache2.conf) afin de masquer les versions et autres informations :Not Found
The requested URL /apache2-default/prout.html was not found on this server.
Apache/2.2.3 (Debian) Server at 192.168.1.10 Port 80
nettoyer les sites/vhostsServerTokens Prod
ServerSignature Off
Faites du ménage dans les sites-availables : /etc/apache2/sites-available/default
Notez que la commande suivante permet de désactiver un répertoire virtuel :
Celle-ci de le désactiver :a2ensite mon_repertoire_virtuel
Supprimer les modules inutilesa2dissite mon_repertoire_virtuel
Faites du ménage dans les modules. Les modules ajoutent des fonctionnalités (et donc des risques de vulnérabilités) au serveur Apache.
Encore une fois, ne faites tourner que les modules que vous utilisez, désactiver tous les autres modules.
La liste des modules et leurs descriptions respectives est disponible, en français, à cette adresse : http://httpd.apache.org/docs/2.2/mod/
Voir aussi cette page : http://www.formation.ssi.gouv.fr/stages ... dules.html
Par exemple pour désactiver le module cgi :
Code : Tout sélectionner
demonux:/etc/apache2/mod-security# a2dismod cgid
Module cgid disabled; run /etc/init.d/apache2 force-reload to fully disable.
La commande a2enmod permet de réactiver le module.
Dans les bonnes habitudes :
NE PAS laisser les droits en écriture aux groupes others afin d'éviter que n'importe quel utilisateur Linux ne puisse écrire dans les sites et ainsi pouvant uploader par une vulnérabilité une backdoor
Les explications du pourquoi et du comment sont sur la page des SQL Injection (SQLi) : SQL Injection (SQLi) : quelques commentaires
Bloquer l'exécution de binaire par Apache
Bloquer l'exécution de binaire par Apache (ls, wget etc), se reporter à la FAQ : Sécurité WEB : bloquer l’exécution de binaire sur Apache
mod-Security
Ce mods permet de mettre en place du filtrage au niveau des user agents, referer, header etc.
modsecurity ainsi que les règles crs sont disponible sur apt :
Code : Tout sélectionner
malekalmorte@MaK-tux:/tmp$ aptitude search modsecurity
p libapache2-modsecurity - Tighten web applications security for Apache
p modsecurity-crs
Sur Debian, les règles sont placées dans le dossier : /usr/share/modsecurity-crs/base_rules/
Le log modsecurity se situe dans le fichier : /var/log/apache2/modsec_audit.log
Pour ma part, je n'ai pas installé les crc de Debian, mais pris directement les règles sur le site.
Au moment où ces lignes sont écrites, les règles sont pour la version 2.7 de modsecurity.
Sur apt, la version de modsecurity est la 2.6
Si vous désirez utiliser les dernières règles avec la version 2.6, vous devez utiliser l'utilitaire suivant : https://github.com/SpiderLabs/owasp-mod ... actions.pl
qui permet de les convertir de la manière suivante : remove-2.7-actions.pl -t 2.6 -f regle.conf
Notez qu'il existe des projets qui permettent de récupérer les logs modsecurity et de les afficher sur des consoles WEB.
Exemple modsecurity-console ou WAF-FLE, plus d'informations : http://www.modsecurity.org/projects/
La directive SecRuleEngine à DetectionOnlypermet de passer modsecurity en détection afin de visualiser les potentielles faux positif et créer des règles d'exception.
Pour cela, vous pouvez créer un fichier whitelist.conf, par exemple, dans : /usr/share/modsecurity-crs/base_rules/
Exemple pour désactiver la règle 981245 sur la page inscription.php
Code : Tout sélectionner
<LocationMatch "/inscription.php">
SecRuleRemoveById 981245
</LocationMatch>
mods-security et DoS
SpiderLabs fournit des règles expérimentales contre les attaques DoS : https://github.com/SpiderLabs/owasp-mod ... base_rules
Téléchargez ces règles et placez les dans le dossier : /usr/share/modsecurity-crs/base_rules/
Téléchargez le fichier :https://github.com/SpiderLabs/owasp-mod ... nf.example
et renommer le en .conf
Relance la configuration d'Apache : /etc/init.d/apache2 reload
Le programme Slowloris : http://ckers.org/slowloris/
ou slowhttptest http://code.google.com/p/slowhttptest/
permet de tester.
Attention, si les règles ne fonctionnent pas, vous pouvez faire planter Apache (il convient de relancer ce dernier)
Hop en test :

On constate le bourrinage dans les logs Apache.

Après un certain nombre de requête, modsecurity détecte l'attaque.
Dans les logs de modsecurity, on voir le bloquage :

Pour aller plus loin...
Protéger vos données avec .htaccess : https://www.malekal.com/apache.php
Pas mal de tutorial sur Spamcleaner pour sécuriser son serveur Apache : http://spamcleaner.org/fr/misc/modsec2ipt.html
Eventuellement mettre en place du SSL :
http://www.ac-creteil.fr/reseaux/system ... e-ssl.html
http://www.coagul.org/article.php3?id_article=351
http://doc.ubuntu-fr.org/tutoriel/secur ... 2_avec_ssl
Chrooter Apache2 :
http://www.cgisecurity.com/webservers/a ... howto.html
Apache et suEXEC : http://httpd.apache.org/docs/1.3/suexec.html
Documentation apache ubuntu : http://doc.ubuntu-fr.org/apache2
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
-
- Site Admin
- Messages : 98240
- Inscription : 10 sept. 2005 13:57
- Contact :
Re: Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Sécuriser MySQL
Comme tout serveur, il est important de :
Ce qui est bien sûr une bonne chose en terme de sécurité, sauf dans le cas où la base de données et le serveur WEB sont des machines dissociées.
Vous pouvez alors filtrer les connexions par IP avec iptables par exemple.
A noter, qu'il est est aussi possible de se connecter à MySQL depuis un tunnel SSH : http://krierjon.developpez.com/mysql/se ... age_5#L5.2
C'est la directive bind-adresse qui permet de choisir l'adresse d'écoute du serveur MySQL dans le fichier de configuration (/etc/mysql/my.cnf sur Debian)
pour se connecter à MySQL :
Par défaut, vous pouvez avoir deux comptes root.
Il faut supprimer celui de la machine (dont le host est celui de votre machine)
Pour supprimer, une requete delete, comme ceci : delete from user where user='root' AND host='demonux';
remplacer demonux par le nom de votre host dans la requête.
Supprimer la base de données test :
Une autre solution consiste à renommer le compte root.
Le pirate (ou un script) va chercher à hacker le compte root, s'il n'existe pas, ça marchera bcp moins bien...
Pour se connecter, il faudra donc utiliser l'utilisateur Ed3dELD
Enfin, pour empécher de lister les bases de données (show databases) pour les users
rajouter la directive safe-show-database dans le fichier de configuration.
NE PAS connecter vos sites à vos base de données avec l'utilisateur root - créer un utilisateur pour chaque site avec un mot de passe fort
Les explications du pourquoi et du comment sont sur la page des SQL Injection (SQLi) : https://www.malekal.com/2012/10/08/sql-i ... mentaires/
Pour aller plus loin...
Sécuriser MySQL : http://krierjon.developpez.com/mysql/securiser/
Chrooter MySQL : http://krierjon.developpez.com/mysql/se ... age_13#L13
Comme tout serveur, il est important de :
- Limiter les connexions extérieures aux machines permises.
- Avoir une gestion des utilisateurs stricte (supprimer les utilisateurs inutiles, limiter l'accès aux machines/IP, avoir des mots de passe forts etc.).
- Maintenir MySQL à jour pour corriger les éventuelles failles de sécurités.
- Jeter un oeil de temps en temps aux logs afin de vérifier ce qui se passent.
Ce qui est bien sûr une bonne chose en terme de sécurité, sauf dans le cas où la base de données et le serveur WEB sont des machines dissociées.
Vous pouvez alors filtrer les connexions par IP avec iptables par exemple.
A noter, qu'il est est aussi possible de se connecter à MySQL depuis un tunnel SSH : http://krierjon.developpez.com/mysql/se ... age_5#L5.2
C'est la directive bind-adresse qui permet de choisir l'adresse d'écoute du serveur MySQL dans le fichier de configuration (/etc/mysql/my.cnf sur Debian)
Rappel quelques commandes simples# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
pour se connecter à MySQL :
pour voir les bases :mysql -u root -p
Pour se connecter à une base :show databases;
pour voir les tables :connect database;
Mettre un mot de passe sécurité, pour changer le mot de passe, se connecter à MySQL et passer la commande :show tables;
Code : Tout sélectionner
SET PASSWORD FOR root@localhost=PASSWORD('DlkeDl242');
Par défaut, vous pouvez avoir deux comptes root.
Il faut supprimer celui de la machine (dont le host est celui de votre machine)
ici on voit que la connexion pour l'utilisateur root est possible depuis demonux et ceci sans mot de passe.mysql> select host,user,password from user;
+-----------+------------------+-------------------------------------------+
| host | user | password |
+-----------+------------------+-------------------------------------------+
| localhost | root | *D9BF15612BEA17FD0DF611CA11343517EA86F81D |
| demonux | root | |
| localhost | debian-sys-maint | *AE3297F7AA8487C489A1EA7D22252DF093844E3C |
+-----------+------------------+-------------------------------------------+
3 rows in set (0.00 sec)
Pour supprimer, une requete delete, comme ceci : delete from user where user='root' AND host='demonux';
remplacer demonux par le nom de votre host dans la requête.
Supprimer la base de données test :
Code : Tout sélectionner
DROP DATABASE test;
DELETE FROM db WHERE db='test' OR db='test\_%';
Le pirate (ou un script) va chercher à hacker le compte root, s'il n'existe pas, ça marchera bcp moins bien...
Code : Tout sélectionner
update user set user='Ed3dELD' where user='root';
flush privileges;
Enfin, pour empécher de lister les bases de données (show databases) pour les users
rajouter la directive safe-show-database dans le fichier de configuration.
NE PAS connecter vos sites à vos base de données avec l'utilisateur root - créer un utilisateur pour chaque site avec un mot de passe fort
Les explications du pourquoi et du comment sont sur la page des SQL Injection (SQLi) : https://www.malekal.com/2012/10/08/sql-i ... mentaires/
Pour aller plus loin...
Sécuriser MySQL : http://krierjon.developpez.com/mysql/securiser/
Chrooter MySQL : http://krierjon.developpez.com/mysql/se ... age_13#L13
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
-
- Site Admin
- Messages : 98240
- Inscription : 10 sept. 2005 13:57
- Contact :
Re: Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Sécuriser PHP
Comme indiqué dans l'introduction, le choix des scripts PHP est important.
Comme sur votre poste de travail, vous devez faire attention aux applications que vous installez, il convient aussi de faire attention aux applications PHP et scripts que vous installez et mettez en ligne.
Le simple faite de télécharger et installer un script PHP depuis un site WEB en proposant peut mettre en péril la sécurité de votre serveur, si la conception du script laisse à désirer (SQL injection etc..).
En outre certaines applications, si elles ont mal été pensées peuvent ne pas fonctionner suite à certaines modifications proposées ci-dessus.
A vous de tester avant.
Voici quelques vérification à effectuer quant à la configuration de votre serveur PHP.
Pour rappel, le fichier de configuration PHP5 sur une Debian se trouve ici : /etc/php5/apache2/php.ini
Si version PHP < 5.4.0
http://phpsec.org/projects/guide/fr/1.html
http://www.student-designer.com/fr/tuto ... s-failles/
Permet de désactiver certains fonctions et vérifie l'accès aux fichiers (UID / GID) :
Limiter l'exécution de script à certains répertoires.
Ceci est à rajouter dans le fichier de configuration Apache, dans vos vhosts :
Quelques liens :
Sécurisez votre installation PHP avec Hardened-PHP : http://www.hardened-php.net/
PhpSecInfo permet de tester la sécurité de votre installation PHP : http://phpsec.org/projects/phpsecinfo/
PHP Secure : http://thierrylhomme.developpez.com/php/php_secure/
Un mot sur les Backdoor PHP
Je vous invite à lire cet article, au moins connaître leur existance : Détecter les Backdoor PHP
D'autre part, dans l'article, un script est fourni qui permet de détecter les ajouts de pages PHP.
Comme indiqué dans l'introduction, le choix des scripts PHP est important.
Comme sur votre poste de travail, vous devez faire attention aux applications que vous installez, il convient aussi de faire attention aux applications PHP et scripts que vous installez et mettez en ligne.
Le simple faite de télécharger et installer un script PHP depuis un site WEB en proposant peut mettre en péril la sécurité de votre serveur, si la conception du script laisse à désirer (SQL injection etc..).
En outre certaines applications, si elles ont mal été pensées peuvent ne pas fonctionner suite à certaines modifications proposées ci-dessus.
A vous de tester avant.
Voici quelques vérification à effectuer quant à la configuration de votre serveur PHP.
Pour rappel, le fichier de configuration PHP5 sur une Debian se trouve ici : /etc/php5/apache2/php.ini
Si version PHP < 5.4.0
Une bonne explication des risques de laisser register_globals à on :register_globals off
http://phpsec.org/projects/guide/fr/1.html
http://www.student-designer.com/fr/tuto ... s-failles/
Permet de désactiver certains fonctions et vérifie l'accès aux fichiers (UID / GID) :
Eventuellement porter la variable allow_url_fopen à off.safe_mode = Off
Vous pouvez aussi logguer les erreurs PHP afin d'obtenir d'éventuelles informations :allow_url_fopen = off
Le dossier de logs doit bien sûr être accessibles en écriture pour l'utilisateur apache (www-data).log_errors On
display_errors Off
error_log /var/log/php/errors
Limiter l'exécution de script à certains répertoires.
Ceci est à rajouter dans le fichier de configuration Apache, dans vos vhosts :
<VirtualHost 127.0.0.1>
DocumentRoot /home/www/exemple.com/html
ServerName exemple.com
ServerAlias http://www.exemple.com
php_admin_value open_basedir /home/www/exemple.com/:/tmp
</VirtualHost>
Quelques liens :
Sécurisez votre installation PHP avec Hardened-PHP : http://www.hardened-php.net/
PhpSecInfo permet de tester la sécurité de votre installation PHP : http://phpsec.org/projects/phpsecinfo/
PHP Secure : http://thierrylhomme.developpez.com/php/php_secure/
Un mot sur les Backdoor PHP
Je vous invite à lire cet article, au moins connaître leur existance : Détecter les Backdoor PHP
D'autre part, dans l'article, un script est fourni qui permet de détecter les ajouts de pages PHP.
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
-
- Site Admin
- Messages : 98240
- Inscription : 10 sept. 2005 13:57
- Contact :
Re: Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Pour aller plus loin...
Divers autres tutorials de sécurité WEB, notamment lié à Apache sont disponibles sur ce site.
Voici l'index les regroupant : Apache : sécuriser son site WEB
Si vous utilisez WordPress, vous pouvez vous rendre sur la page : Sécuriser WordPress.
Monitorer son serveur Apache
Il peux être interressant de monitorer son serveur Apache, parfois cela permet de détecter des attaques (cf par exemple ou à défaut les dysfonctionnements) - Exemple : Attaque WEB les plus communes.
Munin peux s'avérer utile - il existe pas mal de tutorials sur le net.
Sécuriser encore plus GNU/Linux
Tenez vous au courant des vulnérabilités et maintenez les applications installées à jour. Une seule vulnérabilité peut compromettre votre serveur - La sécurité se fait au quotidien[/b].
Quelques liens pour se tenir informer des vulnérabilités :
http://www.frsirt.com/bulletins/
http://www.securityfocus.com/vulnerabilities
http://www.debian.org/security/
SQLInjection : https://www.malekal.com/2012/10/08/sql-i ... mentaires/
SQL injection (en anglais) : https://www.owasp.org/index.php/SQL_Injection
SQL Power Injector : http://www.sqlpowerinjector.com/index.htm
Sqlbftools : http://www.reversing.org/node/view/11
Quelques programmes qui peuvent s'avérer utils :
Bastille pour sécuriser GNU/Linux : http://bastille-linux.sourceforge.net/
Pour les paranos - Rkhunter : http://www.rootkit.nl/
Toujours pour les paranos - chkrootkit : http://www.chkrootkit.org/
Connaître l'OS :
https://www.debian.org/doc/manuals/secu ... ex.fr.html
Pour les Gentoo - Hardened Gentoo : http://www.gentoo.org/proj/en/hardened/
BABA du système GNU/Linux : http://www.debianworld.org/systemes.et.reseaux
Pour aller plus loin :
Installer grsecurity : http://www.grsecurity.net/
Installer LIDS : http://www.lids.org/
Installer un IDS - snort : http://www.snort.org/
Filtrage
Quelques autres programmes qui peuvent s'avérer utiles pour vous simplifier la vie.
Attention aux filtrages automatiquement (ajouts de règles iptables automatiques etc..), parfois cela peut faire plus de mal que de bien.
Bloquer les scans de ports avec Port Sentry :
http://aide.sivit.fr/index.php?2006/01/20/96-portsentry
http://www.funix.org/fr/linux/detection.htm
Filtrer avec fail2ban :
http://www.fail2ban.org/wiki/index.php/Main_Page
http://doc.ubuntu-fr.org/fail2ban
Monitorer le système et connexions réseaux :
Monitorer les connexions réseaux et load avec mrtg : https://www.malekal.com/mrtg.php
Monitorer les connexions réseaux et load avec cacti :
http://openmaniak.com/fr/cacti_tutorial.php
Note dans le cas d'un serveur OVH ou Dedibox, les graphs pour monitorer sont fournis.
Recevoir des logs par mail avec logwatch : http://doc.ubuntu-fr.org/logwatch
Divers autres tutorials de sécurité WEB, notamment lié à Apache sont disponibles sur ce site.
Voici l'index les regroupant : Apache : sécuriser son site WEB
Si vous utilisez WordPress, vous pouvez vous rendre sur la page : Sécuriser WordPress.
Monitorer son serveur Apache
Il peux être interressant de monitorer son serveur Apache, parfois cela permet de détecter des attaques (cf par exemple ou à défaut les dysfonctionnements) - Exemple : Attaque WEB les plus communes.
Munin peux s'avérer utile - il existe pas mal de tutorials sur le net.
Sécuriser encore plus GNU/Linux
Tenez vous au courant des vulnérabilités et maintenez les applications installées à jour. Une seule vulnérabilité peut compromettre votre serveur - La sécurité se fait au quotidien[/b].
Quelques liens pour se tenir informer des vulnérabilités :
http://www.frsirt.com/bulletins/
http://www.securityfocus.com/vulnerabilities
http://www.debian.org/security/
SQLInjection : https://www.malekal.com/2012/10/08/sql-i ... mentaires/
SQL injection (en anglais) : https://www.owasp.org/index.php/SQL_Injection
SQL Power Injector : http://www.sqlpowerinjector.com/index.htm
Sqlbftools : http://www.reversing.org/node/view/11
Quelques programmes qui peuvent s'avérer utils :
Bastille pour sécuriser GNU/Linux : http://bastille-linux.sourceforge.net/
Pour les paranos - Rkhunter : http://www.rootkit.nl/
Toujours pour les paranos - chkrootkit : http://www.chkrootkit.org/
Connaître l'OS :
https://www.debian.org/doc/manuals/secu ... ex.fr.html
Pour les Gentoo - Hardened Gentoo : http://www.gentoo.org/proj/en/hardened/
BABA du système GNU/Linux : http://www.debianworld.org/systemes.et.reseaux
Pour aller plus loin :
Installer grsecurity : http://www.grsecurity.net/
Installer LIDS : http://www.lids.org/
Installer un IDS - snort : http://www.snort.org/
Filtrage
Quelques autres programmes qui peuvent s'avérer utiles pour vous simplifier la vie.
Attention aux filtrages automatiquement (ajouts de règles iptables automatiques etc..), parfois cela peut faire plus de mal que de bien.
Bloquer les scans de ports avec Port Sentry :
http://aide.sivit.fr/index.php?2006/01/20/96-portsentry
http://www.funix.org/fr/linux/detection.htm
Filtrer avec fail2ban :
http://www.fail2ban.org/wiki/index.php/Main_Page
http://doc.ubuntu-fr.org/fail2ban
Monitorer le système et connexions réseaux :
Monitorer les connexions réseaux et load avec mrtg : https://www.malekal.com/mrtg.php
Monitorer les connexions réseaux et load avec cacti :
http://openmaniak.com/fr/cacti_tutorial.php
Note dans le cas d'un serveur OVH ou Dedibox, les graphs pour monitorer sont fournis.
Recevoir des logs par mail avec logwatch : http://doc.ubuntu-fr.org/logwatch
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
-
- Site Admin
- Messages : 98240
- Inscription : 10 sept. 2005 13:57
- Contact :
Re: [réseau] Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Une page concernant les SQL Injection (SQLi) : https://www.malekal.com/2012/10/08/sql-i ... mentaires/
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
-
- Site Admin
- Messages : 98240
- Inscription : 10 sept. 2005 13:57
- Contact :
Re: [réseau] Sécuriser un serveur Apache/PHP/MySQL (LAMP)
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.
Sécuriser son ordinateur (version courte)
Tutoriels Logiciels - Tutoriel Windows - Windows 10
Stop publicités - popups intempestives
supprimer-trojan.com : guide de suppression de malwares
Partagez malekal.com : n'hésitez pas à partager sur Facebook et GooglePlus les articles qui vous plaisent.