[LONG] Comment securiser sa machine Linux (Debian) ?

Le
Pham
Bonjour,

Voilà je viens de me lancer avec intérêt dans l'aventure Linux avec une
Debian Woody et je sollite l'avis des experts de ce forum pour sécuriser
la machine.

Je précise que je suis débutant mais que je n'ai aucune réticence à lire
de la doc, au contraire (c'est comme ça que j'arrive à comprendre ce que
je fais). Et puis le domaine de la sécurité semble particulièrement
intéressant en plus ;-) Idéalement j'aimerais faire une doc pour
mettre le pied à l'étrier au niveau sécurité pour les tout débutants
comme moi.

Quelques précisions de configuration tout d'abord : un seul poste pour
une utilisation personnelle (PC sous Debian Woody donc), connexion en
RTC et dans l'avenir en ADSL ethernet. L'utilisation est vraiment
basique : web, email, un peu de traitement de texte, etc mais pas de
choses sophistiquée comme l'hébergement d'un Apache ou d'un serveur
MySQL. Ah si j'utilise postfix et leafnode (serveur de newsgroups) quand
même.

Bon voici comment j'ai déjà procédé par étapes (pas sûr d'avoir tout
fait dans l'ordre):

1) Installation normale de la Woody
2) Création d'un utilisateur normal 'toto'
3) 'toto' s'est vu affecter aux groupes suivants : dialout cdrom audio
dip video scanner
4) configuration via kppp de la connexion : j'avais un peu galéré au
début car kppp voulait absolument être lancé par root mais j'ai plus ou
moins réglé le problème en rajoutant les groupes dialout et dip à 'toto'
puis en créant un fichier contenant la chaîne 'noauth' appelé en
argument de pppd, mais je ne suis pas sûr du tout que ce soit la bonne
méthode.
5) Lecture de http://www.tldp.org/HOWTO/Security-Quickstart-HOWTO et de
http://olivieraj.free.fr/fr/linux/information/firewall
6) Désactivation des services inutiles :

Maintenant en faisant un netstat -tap | grep LISTEN j'obtiens :
tcp 0 0 *:linuxconf *:* LISTEN 248/inetd
tcp 0 0 *:webcache *:* LISTEN 384/wwwoffled
tcp 0 0 *:tproxy *:* LISTEN 384/wwwoffled
tcp 0 0 mamachine:8118 *:* LISTEN 363/privoxy
tcp 0 0 *:ipp *:* LISTEN 252/cupsd
tcp 0 0 *:nntp *:* LISTEN 248/inetd
tcp 0 0 *:smtp *:* LISTEN 357/master

Je pense avoir gardé le minimum vital.
Au cas où j'ai quand même utilisé le Tcpwrappers pour leafnode en
modifiant le /etc/inetd.conf, je pense que ce n'est pas nécessaire pour
les autres.

7) Définition des règles iptables, là ce fut la partie difficile. Après
quelques tentatives personnelles plus ou moins fructueuses je me suis
rabattu sur le script que fournissait l'auteur de la doc sur les
firewall vu au 5) : netfilter_cfg (disponible à l'adresse
http://olivieraj.free.fr/fr/linux/programme/netfilter_cfg/)

J'ai ajouté un appel à ce script dans /etc/ppp/ip-up.d/01iptables

Maintenant quand je fais 'iptables -L -n -v' en étant connecté
j'obtiens :

Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:4660:4700
0 0 DROP udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 udp dpts:4660:4700
0 0 DROP tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10738
0 0 DROP udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:10738
26 1541 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state
NEW,RELATED,ESTABLISHED
0 0 ACCEPT all -- ppp0 * 0.0.0.0/0 80.9.46.140
state RELATED,ESTABLISHED
0 0 DROP all -- ppp0 * 127.0.0.0/8 0.0.0.0/0
0 0 DROP all -- ppp0 * 10.0.0.0/8 0.0.0.0/0
0 0 DROP all -- ppp0 * 172.16.0.0/12 0.0.0.0/0
0 0 DROP all -- ppp0 * 192.168.0.0/16 0.0.0.0/0
0 0 DROP all -- ppp0 * 224.0.0.0/4 0.0.0.0/0
0 0 DROP all -- ppp0 * 240.0.0.0/4 0.0.0.0/0
0 0 DROP all -- ppp0 * 240.0.0.0/4 0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
26 1541 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 state
NEW,RELATED,ESTABLISHED
0 0 ACCEPT all -- * ppp0 80.9.46.140 0.0.0.0/0
state NEW,RELATED,ESTABLISHED

8) Installation de 'bastille' (version 1:1.3.0-2) sensé 'durcir' le
système(j'ai choisi les options proposé par défaut partout sauf pour les
règles iptables)

9) Installation de l'IDS snort et de snortsnarf au cas où.

Voilà à partir de là je ne sais plus trop quoi faire. Quelques questions
que je me pose cependant :

-J'ai beaucoup entendu parler de 'sudo', 'setuid','chrootage' mais je
n'ai jamais eu besoin de faire appel à ça jusqu'ici, mais peut-être
ai-je eu tort ?

-j'ai du mal à interpreter les informations envoyés par snort (via
snortsnarf), par exemple je ne vois jamais de tentative de connexion de
ce Blaster dont tous le monde me parle, est-ce qu'il faut configurer son
snort pour que celui-ci reconnaisse les tentatives de connexion (ici un
P2P, ici un ver, ici une tentative d'exploitation de failles) et n'est
ce pas déjà disponible quelque part ? Je n'ai pas voulu installer de
serveur MySQL ou autre pour gérer dans une base de données les
informations de snort, cela ajouterait un serveur de plus à maintenir,
est-ce que j'ai eu raison ? J'ai aussi essayé prelude et celui-ci
voulait aussi absolument installer un MySQL pour pouvoir exploiter les
logs

-Je ne vois pas très bien ou se place l'IDS dans mon cas ? est-il
derrière le firewall ou devant ? et où faut-il idéalement le placer (je
ne dispose que d'une seule machine !)

-J'ai longuement hésité entre définir mes propres règles iptables (via
un script ou pas) et utiliser un firewall (guarddog ?) déjà tout fait.
Que me recommandez vous ? et sinon quel est le firewall 'tout fait' le
plus efficace ?

-Quelles sont les autres voies à explorer pour améliorer encore la
sécurité ?

Merci à tous ceux qui sont arrivé jusqu'ici et j'attends donc vos
commentaires et ou conseils et ou critiques (qui sont les bienvenues !)
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Xavier Roche
Le #219153
Pham wrote:
-Quelles sont les autres voies à explorer pour améliorer encore la
sécurité ?


- Kernel avec ACL et protection de pile pour la rendre non executable
(grsecurity.net)
- / monté en read-only (avec arme absolue: un disque dédié avec
protection activée par jumper)

Pham
Le #219727
Re-bonjour !

C'est bizarre je ne vois aucune réponse à mon message ?
Est-ce que c'est un problème de serveur de news (auquel cas si quelqu'un
pouvait me dire qu'il voit bien mon message...) ou bien est-ce que je
suis hors-charte ?

Désolé du dérangement sinon...

*********** REPLY SEPARATOR ***********


Bonjour,

Voilà je viens de me lancer avec intérêt dans l'aventure Linux avec
une Debian Woody et je sollite l'avis des experts de ce forum pour
sécuriser la machine.

Je précise que je suis débutant mais que je n'ai aucune réticence à
lire de la doc, au contraire (c'est comme ça que j'arrive à comprendre
ce que je fais). Et puis le domaine de la sécurité semble
particulièrement intéressant en plus... ;-) Idéalement j'aimerais
faire une doc pour mettre le pied à l'étrier au niveau sécurité pour
les tout débutants comme moi.

Quelques précisions de configuration tout d'abord : un seul poste pour
une utilisation personnelle (PC sous Debian Woody donc), connexion en
RTC et dans l'avenir en ADSL ethernet. L'utilisation est vraiment
basique : web, email, un peu de traitement de texte, etc... mais pas
de choses sophistiquée comme l'hébergement d'un Apache ou d'un serveur
MySQL. Ah si j'utilise postfix et leafnode (serveur de newsgroups)
quand même.

Bon voici comment j'ai déjà procédé par étapes (pas sûr d'avoir tout
fait dans l'ordre):

1) Installation normale de la Woody
2) Création d'un utilisateur normal 'toto'
3) 'toto' s'est vu affecter aux groupes suivants : dialout cdrom
audio dip video scanner
4) configuration via kppp de la connexion : j'avais un peu galéré au
début car kppp voulait absolument être lancé par root mais j'ai plus
ou moins réglé le problème en rajoutant les groupes dialout et dip à
'toto' puis en créant un fichier contenant la chaîne 'noauth' appelé
en argument de pppd, mais je ne suis pas sûr du tout que ce soit la
bonne méthode.
5) Lecture de http://www.tldp.org/HOWTO/Security-Quickstart-HOWTO et
de http://olivieraj.free.fr/fr/linux/information/firewall
6) Désactivation des services inutiles :

Maintenant en faisant un netstat -tap | grep LISTEN j'obtiens :
tcp 0 0 *:linuxconf *:* LISTEN 248/inetd
tcp 0 0 *:webcache *:* LISTEN 384/wwwoffled
tcp 0 0 *:tproxy *:* LISTEN 384/wwwoffled
tcp 0 0 mamachine:8118 *:* LISTEN 363/privoxy
tcp 0 0 *:ipp *:* LISTEN 252/cupsd
tcp 0 0 *:nntp *:* LISTEN 248/inetd
tcp 0 0 *:smtp *:* LISTEN 357/master

Je pense avoir gardé le minimum vital.
Au cas où j'ai quand même utilisé le Tcpwrappers pour leafnode en
modifiant le /etc/inetd.conf, je pense que ce n'est pas nécessaire
pour les autres.

7) Définition des règles iptables, là ce fut la partie difficile.
Après quelques tentatives personnelles plus ou moins fructueuses je me
suis rabattu sur le script que fournissait l'auteur de la doc sur les
firewall vu au 5) : netfilter_cfg (disponible à l'adresse
http://olivieraj.free.fr/fr/linux/programme/netfilter_cfg/)

J'ai ajouté un appel à ce script dans /etc/ppp/ip-up.d/01iptables

Maintenant quand je fais 'iptables -L -n -v' en étant connecté
j'obtiens :

Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:4660:4700
0 0 DROP udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 udp dpts:4660:4700
0 0 DROP tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10738
0 0 DROP udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:10738
26 1541 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 state
NEW,RELATED,ESTABLISHED
0 0 ACCEPT all -- ppp0 * 0.0.0.0/0 80.9.46.140
state RELATED,ESTABLISHED
0 0 DROP all -- ppp0 * 127.0.0.0/8 0.0.0.0/0
0 0 DROP all -- ppp0 * 10.0.0.0/8 0.0.0.0/0
0 0 DROP all -- ppp0 * 172.16.0.0/12 0.0.0.0/0
0 0 DROP all -- ppp0 * 192.168.0.0/16 0.0.0.0/0
0 0 DROP all -- ppp0 * 224.0.0.0/4 0.0.0.0/0
0 0 DROP all -- ppp0 * 240.0.0.0/4 0.0.0.0/0
0 0 DROP all -- ppp0 * 240.0.0.0/4 0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
26 1541 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 state
NEW,RELATED,ESTABLISHED
0 0 ACCEPT all -- * ppp0 80.9.46.140 0.0.0.0/0
state NEW,RELATED,ESTABLISHED

8) Installation de 'bastille' (version 1:1.3.0-2) sensé 'durcir' le
système(j'ai choisi les options proposé par défaut partout sauf pour
les règles iptables)

9) Installation de l'IDS snort et de snortsnarf au cas où.

Voilà à partir de là je ne sais plus trop quoi faire. Quelques
questions que je me pose cependant :

-J'ai beaucoup entendu parler de 'sudo', 'setuid','chrootage' mais je
n'ai jamais eu besoin de faire appel à ça jusqu'ici, mais peut-être
ai-je eu tort ?

-j'ai du mal à interpreter les informations envoyés par snort (via
snortsnarf), par exemple je ne vois jamais de tentative de connexion
de ce Blaster dont tous le monde me parle, est-ce qu'il faut
configurer son snort pour que celui-ci reconnaisse les tentatives de
connexion (ici un P2P, ici un ver, ici une tentative d'exploitation de
failles) et n'est ce pas déjà disponible quelque part ? Je n'ai pas
voulu installer de serveur MySQL ou autre pour gérer dans une base de
données les informations de snort, cela ajouterait un serveur de plus
à maintenir, est-ce que j'ai eu raison ? J'ai aussi essayé prelude et
celui-ci voulait aussi absolument installer un MySQL pour pouvoir
exploiter les logs...

-Je ne vois pas très bien ou se place l'IDS dans mon cas ? est-il
derrière le firewall ou devant ? et où faut-il idéalement le placer
(je ne dispose que d'une seule machine !)

-J'ai longuement hésité entre définir mes propres règles iptables (via
un script ou pas) et utiliser un firewall (guarddog ?) déjà tout fait.
Que me recommandez vous ? et sinon quel est le firewall 'tout fait' le
plus efficace ?

-Quelles sont les autres voies à explorer pour améliorer encore la
sécurité ?

Merci à tous ceux qui sont arrivé jusqu'ici et j'attends donc vos
commentaires et ou conseils et ou critiques (qui sont les bienvenues
!)


Hardware
Le #219726
Olà,

Moi je vois bien tes posts et même 1 réponse quelque peu... survolée!
Comme je ne peux pas t'aider, et comme les "experts" du newsgroup sont en
vacances ;o) ou ne sont tout simplement pas aussi "expert" que ça et comme
tu dis ne pas voir les réponses, je cross-post la réponse qui t'à été faite
(copié/collé).

Bon courage.


***** DEBUT DU COPIE/COLLE *****
expéditeur => Xavier Roche

Pham wrote:
-Quelles sont les autres voies à explorer pour améliorer encore la
sécurité ?


- Kernel avec ACL et protection de pile pour la rendre non executable
(grsecurity.net)
- / monté en read-only (avec arme absolue: un disque dédié avec
protection activée par jumper)

***** FIN DU COPIE/COLLE *****


"Pham"
Re-bonjour !

C'est bizarre je ne vois aucune réponse à mon message ?
Est-ce que c'est un problème de serveur de news (auquel cas si quelqu'un
pouvait me dire qu'il voit bien mon message...) ou bien est-ce que je
suis hors-charte ?

Désolé du dérangement sinon...


remf02
Le #219724
Ou tout simplement :

http://www.debian.org/doc/manuals/securing-debian-howto/

;o)

Xavier Roche
Pham wrote:
-Quelles sont les autres voies à explorer pour améliorer encore la
sécurité ?


- Kernel avec ACL et protection de pile pour la rendre non executable
(grsecurity.net)
- / monté en read-only (avec arme absolue: un disque dédié avec
protection activée par jumper)



Poster une réponse
Anonyme