Vous êtes sur la page 1sur 35

1

Scurit du systme
Audit et tches de scurit

Plan
Filtrer le trafic Dclaration de rgles Ouvrir les ports utiliss Scan de ports Surveiller les logs

Filtrer le traffic
Le noyau Linux offre un pare-feu lutilisateur, quil est possible de configurer via le logiciel iptables

(normalement contenu dans /sbin/iptables).


Sil nest pas install : apt-get install iptables

Dclaration des rgles


Filtrage intgral Notez que la commande iptables -L -v vous permettra de consulter les

rgles courantes.
1. Crons le script : nano /etc/init.d/firewall Et on y crit : #!/bin/sh 2. On efface les rgles prcdentes pour partir sur de bonnes bases : 1 iptables -t filter -F

2 iptables -t filter -X

Dclaration des rgles


3. On bloque par dfaut tout le trafic : 1 iptables -t filter -P INPUT DROP 2 iptables -t filter -P FORWARD DROP 3 iptables -t filter -P OUTPUT DROP 4. On ne ferme pas les connexions dj tablies : 1 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 2 iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT Nous indiquons avec les paramtres -m et --state de ne pas fermer les connexions qui sont dj tablies. 5. On autorise le loopback : 1 iptables -t filter -A INPUT -i lo -j ACCEPT 2 iptables -t filter -A OUTPUT -o lo -j ACCEPT Tout est bloqu, il ne nous reste plus qu ouvrir les ports utiliss.

Ouvrir les ports utiliss


Les paramtres de iptables : -t : vaudra par dfaut filter ; -A : servira indiquer le sens du trafic : INPUT (entrant) ou OUTPUT (sortant) ; -p : indique le protocole (TCP ou UDP en principe) ;

--dport et --sport : respectivement port destination et port source


(comme nous sommes le serveur, nous utiliserons principalement dport) ;

-j : comment traiter le paquet (nous nous servirons d'ACCEPT et de


DROP pour respectivement accepter et refuser le paquet).

Ouvrir les ports utiliss


Ainsi, une rgle simple aura la forme suivante : iptables -t filter -A INPUT/OUTPUT -p protocole --dport port_a_ouvrir -j ACCEPT Notez enfin que si vous voulez un change, il faut toujours ouvrir le port dans les deux sens (INPUT et OUTPUT). Exemple si lon a un serveur web (port 80) : iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

Les ports dcoute

Ping
Le ping est bas sur un protocole particulier (ICMP) qui na pas de port prdfini. Mais il faut absolument autoriser le ping car cest la mthode la plus couramment utilise pour savoir si votre serveur est en vie. Voici donc les rgles : iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT

10

Dmarrage du firewall
Enfin, nous allons lancer notre firewall : chmod +x /etc/init.d/firewall /etc/init.d/firewall Tester abondamment que tout se passe bien. Vous pouvez notamment utiliser lutilitaire nmap pour vrifier quil ny a pas plus de ports ouverts que voulu. Il est important de charger ce script au dmarrage de la machine afin quun simple reboot ne vous laisse pas sans protection : update-rc.d firewall defaults

11

Exemple de script
script basique autorisant le minimum pour un serveur web (HTTP, FTP, mail et rsolution de DNS).

12

13

Suite du script

14

Flood ou dni de service


Ce genre dattaque vise surcharger la machine de requte. Il est possible de sen prmunir directement au niveau du firewall : iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT Le flags TCP syn engendre des demandes de connexions, et le but de cette rgle est donc de les limiter une par seconde (champs limit). Il est cependant dconseill de monter au-del de la seconde (sous peine de gner le contrle de flux et la rcupration derreur de TCP). On peut faire de mme avec les protocoles UDP et ICMP : iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT

15

Scan de ports
On peut aussi limiter le scan de ports (qui consiste tester tous vos ports afin de dtecter ceux qui sont ouverts).

Pour cela :

iptables -A FORWARD -p tcp --tcp-flags

SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

16

Bannir une IP
Si vous reprez dans les logs ou autre une adresse IP suspecte, vous pouvez la bannir aisment au niveau du firewall via la commande: iptables -A INPUT -s adresse_ip -j DROP

17

Se prmunir contre les intrusions


Le firewall va bloquer toutes tentatives de connexions sur les ports ferms.
Mais les ports ouverts ? Le firewall nest pas suffisant et nous allons devoir utiliser dautres outils, appels IDS (Intrusion Detection System) et IPS (Intrusion Prevention System).

Ces deux catgories de logiciels vont - comme leur nom lindique - surveiller toute tentative
dintrusion sur le serveur. comment ragir chaque tape dune tentative intrusion classique, savoir : 1. le scan de port (plus gnralement, la collecte dinformations) afin de trouver les vulnrabilits ;

2. les attaques simples , tmoins dune faible scurit ;


3. lintrusion ; 4. linstallation dun moyen de se logguer sur le serveur volont (si lattaquant parvient jusquici avec succs, on peut dire que la machine lui appartient).

18

Se prmunir contre les intrusions: Portsentry (scan de ports)


Cet utilitaire permet de bloquer en temps rel la plupart des scans de port connus (mme trs discrets et chappant aux rgles de filtrage du firewall basiques). Scanner les ports signifie tester tous les ports dune machine afin de

dterminer ceux qui sont ouverts (les portes dentres ).


Cependant, il ne faut pas paniquer si votre serveur est la cible dun simple scan de port, cela sera monnaie courante, et si vous tes bien protg, le pirate passera sa route.

19

Se prmunir contre les intrusions: Portsentry (scan de ports)


Portsentry est bien si vous voulez compliquer la tche de lattaquant : apt-get install portsentry

Pour le configurer : nano /usr/local/psionic/portsentry/portsentry.conf

Ou : nano /etc/portsentry/portsentry.conf

Commentez les lignes KILL_HOSTS_DENY. Dcommentez la ligne KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP".

Ainsi, Portsentry ajoutera une rgle dans le firewall (iptables) pour rejeter les paquets en cas de scans.
On dmarre le logiciel (il faut le lancer deux fois, pour TCP et UDP) : portsentry audp portsentry atcp

20

Fail2ban (brute-force, dictionnaire, dni de service)


Les ports ouverts sur la machine sont priori sans grande protection, et sujet des attaques simples telles que la tentative de connexion par brute-force ou par dictionnaire (par exemple, tester toutes les combinaisons de mots de passe pour se logguer en ssh), le dni de services (surcharger le serveur de requtes) ou - plus

btement - la recherche dutilisateurs sans mots de passe...

Fail2ban est un petit utilitaire qui se base sur les logs de la machine pour chercher des actions suspectes rptes (par exemple, des erreurs de mots de passe) dans un laps de temps donn. Sil en trouve, il bannira lIP de lattaquant via iptables. Ce type de logiciel est indispensable, car, bien que lger, il offre une bonne protection contre les attaques basiques.

21

Fail2ban (brute-force, dictionnaire, dni de service)


Pour linstallation : apt-get install fail2ban Pour la configuration : nano /etc/fail2ban/jail.conf - destmail : indiquez une adresse mail si vous voulez recevoir des mails dalerte de la part de fail2ban. - bantime : temps de bannissement des IP suspectes ; - maxretry : nombre de tentatives de connexion permise avant bannissement.

22

Notez que dans la partie JAILS (dans nano : ctrl w => rechercher JAILS) figure tous les services que fail2ban surveillera. Si vous avez modifi les ports par dfaut, il faut les indiquer l aussi. Par exemple avec ssh : Code : Console - Slectionnernano /etc/fail2ban/jail.conf ctrl+w => chercher [ssh] port : indiquer le port Enregistrez et quittez. Je vous encourage parcourir rapidement le reste des options afin de personnaliser un peu votre soft.

Enfin, pour recharger la nouvelle configuration : Code : Console - Slectionner/etc/init.d/fail2ban restart

23

Snort (dtection dintrusions)


Snort est un outil trs puissant, pouvant dtecter la plupart des
attaques qui chapperaient un utilitaire comme fail2ban. Bien entendu, il ne servira pas dans 90 % des cas et comme ce nest

quun outil de dtection, ce sera vous de rendre les mesures


ncessaires sil dtecte une intrusion. Enfin, comme il analyse le trafic en temps rel, cela ralentit forcment un peu les flux. Notez que ce logiciel fonctionne partir de rgles de scurit crites par des utilisateurs, et parfois errones.

Rkhunter (rootkit et backdoors)


Dernier volet de cette section intrusion, les backdoors. Si par malheur un attaquant arrive prendre possession de votre machine, il y a fort parier quil y laisse une backdoor (porte drobe) qui lui permettrait den reprendre le contrle plus tard, ainsi quun rootkit pour la dissimuler : lattaquant maintient ainsi un accs frauduleux votre machine. Rkhunter est un utilitaire qui est charg de dtecter dventuels rootkits sur votre serveur.

24

Il est relativement lger (sexcute une fois par jour par dfaut).
apt-get install rkhunter Il est conseill de modifier un peu la configuration : nano /etc/default/rkhunter - REPORT_EMAIL : indiquez un mail pour recevoir des alertes de Rkhunter ;

- CRON_DAILY_RUN : mettez yes pour une vrification quotidienne de votre


machine via un cron. Notez que Rkhunter se trompe parfois en dclarant comme infects des fichiers sains ( faux positifs ). Par contre, sil savre que lalerte est justifie, cela signifie que vous avez

un rootkit ainsi quune faille de scurit qui a t dcouverte et exploite.

25

Surveiller les logs


La plupart des logiciels cits plus haut vous enverront des notifications par mail en cas dalerte.

Cependant, surveiller les logs est important, car ils refltent la vie de votre
serveur. Les logs les plus intressants sont notamment :

26
Toutes tentatives daccs au
serveur. /var/log/auth.log Utile de filtrer le contenu : cat /var/log/auth.log | grep authentication failure

le log dalerte de fail2ban. Cherchez /var/log/fail2ban notamment : cat /var/log/fail2ban | grep ban ;

contient un peu de tout /var/log/message et /var/log/syslog (erreurs, bugs, informations)

indique les logs /var/log/snort/alert dalertes de Snort

les rapports quotidien de Rkhunter. erreurs /var/log/rkhunter trouves= mauvais signe

27

Surveiller les logs : Logwatch


Logwatch simplifie un peu ce travail et permet de rsumer plusieurs logs afin de ne vous retourner que des anomalies si possible. Cela vite un long et fastidieux travail de recherche.

Installation :
apt-get install logwatch nano /usr/share/logwatch/default.conf/logwatch.conf Spcifiez loption MailTo car logwatch envoie ses rsums de logs par mail. Il va normalement sexcuter tous les jours (ls -l /etc/cron.daily/ | grep logwatch pour sen assurer).

28

Bien utiliser son serveur


90 % des problmes informatiques relvent de lutilisateur. Il faut garder quelques rgles de bon sens :

interdire les utilisateurs sans mot de passe (ce sont dnormes failles potentielles) ;
toujours choisir de bons mots de passe : 8 caractres minimum, (des chiffres, des majuscules, des symboles.) un outil comme pwgen vous en gnrera automatiquement (apt-get install pwgen) ; maintenir son systme jour (apt-get update et apt-get upgrade) ; toujours utiliser ssh pour laccs distance (et non telnet ou des services graphiques, sauf sils sont en tunnel travers ssh).

29

Bien utiliser son serveur


SSH En premier lieu, il faut regarder du ct de ssh, puisque cest tout de mme un accs direct votre machine. nano /etc/ssh/sshd_config Il est conseill de changer les champs suivants : - Port : le port par dfaut est 22... et nimporte quel attaquant le sait. Changer le port force effectuer un scan (ou quivalent) avant de rflchir attaquer (attention de bien changer le port dans le firewall) ; - PermitRootLogin : mettre no afin dinterdire le login en root ; - AllowUsers : indique une liste dutilisateur autoris se connecter via ssh. Cela peut tre utile si vous avez des utilisateurs qui ne sont pas censs se connecter sur la machine. Et on redmarre : /etc/init.d/ssh restart

30

Apache
Apache donne par dfaut de nombreuses informations quiconque sy connecte. Vu que cela ne sert rien que votre serveur web donne au monde votre

distribution Linux, autant limiter cela :


nano /etc/apache2/apache2.conf Passez ServerSignature off et ServerTokens Prod pour rendre

votre serveur web plus discret.


/etc/init.d/apache2 restart

31

Autres logiciels
Pour la plupart des logiciels de base, il existe quelques recommandations de prudence. Voici une liste non exhaustive :

32

Tester la suret de son serveur


Test de sret

Scanner de port

Scanner de vulnrabilit

il va tenter douvrir des connexions sur un grand nombre de ports de votre machine afin de dterminer sils sont ouverts ou non.

le but est de chercher en gnral les failles de votre machine

Nmap meilleur outils de scan de ports

Nessus utilitaire performant avec interface graphique

33

Tester la suret de son serveur


Il est bien connu que pour prouver la scurit de son serveur, le plus simple est encore de se mettre dans la peau dun pirate. Il existe nanmoins quelques outils intressants pour rapidement dterminer sil existe une grosse faille ou non. Scanner de port apt-get install nmap Le mieux est deffectuer le scan le plus sr possible : nmap -v ip_ou_nom_de_la_machine Vous aurez alors la liste des ports ouverts. Vous pouvez aussi tester un port en particulier avec largument -p port.
un port ouvert sans que vous le sachiez est une faille

Jouer avec nmap pour voir si vos rgles sont efficaces ou pas (par exemple avec les options -sS, -sN ou -sI, cf le manuel).

34

Q.C.M.
Quel est le rle du firewall ?
Fermer les ports inutiliss

Rendre le scan de port inutile


Filtrer les paquets autoriss ou non du rseau Empcher toutes les intrusions

Que fait cette rgle du firewall : iptables -t filter -p tcp --dport 2222 -j ACCEPT
elle autorise le trafic TCP sur le port 2222

elle autorise tout le trafic sur le port 2222 sauf en TCP


elle bloque le trafic TCP sur le port 2222

35

QCM
En cas de prsence dun rootkit sur le serveur, quelle proposition ci-dessous est fausse ?
Il existe une faille de scurit dans la configuration du serveur

Lattaquant a pu utiliser la machine mauvais escient


Lattaquant bnficie dun accs direct la machine Un audit approfondi des logs et de lensemble du serveur est requis

Quel est selon vous le meilleur mot de passe ci-dessous :


anticonstitutionnellement dB_45

bossdemerde05
axt20mp5