[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] Help pour débuter avec iptables



giggzounet a écrit :
> Le 10/09/2010 15:39, Pascal Hambourg a écrit :
>>
>> giggzounet a écrit :
>>
>>> j'ai un cluster. les noeuds n'ont pas accès au net. Donc je monte un
>>> parefeu sur le master node. Naturellement le master doit accepter tout
>>> ce que vient des noeuds. Et j'aimerais que tout ce que vienne de
>>> l'extérieur soit filtré à part qqs services comme ssh et http.
>>
>> Le master se comporte comme un genre de load balancer ? Il fonctionne
>> plutôt comme un routeur, ou un reverse proxy, ou selon un autre mécanisme ?
> 
> le master se charge de distribuer les jobs sur les noeuds. C'est via le
> master que tout le monde se connecte.

"Via", ça reste vague. Ça peut être via routage et redirection de ports,
ou via un programme. Je suppose que c'est via un programme, donc le
master ne fonctionne pas en routeur et dans ce cas il n'est pas censé y
avoir de trafic dans la chaîne FORWARD.

> En gros j'ai 5 interfaces:
> 
> lo locahost
> eth0 interface ethernet vers les noeuds
> eth0:2 interface de controle/monitoring des noeuds (ipmi)

eth0:2 n'est pas une interface mais un alias IP, une façon obsolète
d'affecter une adresse IP supplémentaire à l'interface eth0.

> ib0 interface infiniband vers les noeuds
> eth1 interface ethernet vers l'extérieur.
> 
> En gros je voudrais qu'en interne il n'y ait aucun filtrage (donc tout
> passe sur lo,ib0,eth0,eth0:2 dans tous les sens). par contre que tout en
> entrée de eth1 soit bloqué sauf le port 22 (pour commencer). en sortie
> sur eth1 je peux laissé ouvert.

Ça, c'est facile. Ton jeu de règles va déjà plus loin.

> ben pour l'instant ça a l'air de marcher. en gros si je me connecte
> normal ça va. par contre si je lance un nmap par exemple il gueule.

C'est important qu'il gueule ?

> pour l'instant j'ai ça; qu'en pensez vous (résultat de mon mal de tête...) ?
> 
> *filter
> :INPUT ACCEPT [0:0]

La politique par défaut devrait être DROP.

> :FORWARD ACCEPT [0:0]

Même chose, si la machine n'est pas routeur rien ne doit traverser cette
chaîne.

> :OUTPUT ACCEPT [0:0]
> :Firewall-1-INPUT - [0:0]

Cette chaîne est inutile, tout ce qu'elle contient peut être mis dans INPUT.

> ## SSH (test brute force)

Ces règles devraient arriver après les règles anti-spoof.

> # IP DROP SPOOF
> -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
> -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
> -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP

Je suppose que tu sais ce que tu fais et que personne n'est censé
communiquer avec ta machine par cette interface depuis ces adresses.

> -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP

Pourquoi /5 et pas /4 ?

> # IP DROP MULTICAST
> -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP

Pas absolument nécessaire, la plage multicast est invalide en tant que
source donc ces paquets sont de toute façon écartés par la pile IP du noyau.

> -A INPUT -i eth1 -s 169.254.0.0/16  -j DROP

Ce n'est pas du multicast, c'est la plage link-local IPv4.

> # IP DROP LOOPBACK
> -A INPUT -i eth1 -d 127.0.0.0/8 -j DROP

Pas absolument nécessaire, la plage de loopback est invalide en tant que
source ou destination à l'extérieur de la machine donc ces paquets sont
de toute façon écartés par la pile IP du noyau.
Accessoirement tu n'as pas mis de règle pour bloquer la plage de
loopback en source.

> -A INPUT -i eth1 -s 240.0.0.0/4  -j DROP

Ah, voilà la bonne longueur de préfixe.

> -A INPUT -i eth1 -s 255.255.255.255/32  -j DROP

Déjà inclus dans le préfixe précédent.

> -A INPUT -i eth1 -s 168.254.0.0/16  -j DROP

Pourquoi, tu as quelque chose contre les écoles publiques du comté de
Hillsborough en Floride ?

> -A INPUT -i eth1 -s 248.0.0.0/5  -j DROP

Déjà inclus dans 240.0.0.0/4.

> -A INPUT -j Firewall-1-INPUT

Comme déjà dit, autant mettre les règles directement dans INPUT.

> -A FORWARD -j Firewall-1-INPUT

Comme déjà dit, aucun paquet ne traverse cette chaîne si la machine
n'est pas routeur.

> ## Allow all traffic from the nodes
> -A Firewall-1-INPUT -i eth0 -s 192.168.0.0/255.255.255.0 -j ACCEPT
> -A Firewall-1-INPUT -i ib0 -s 192.168.100.0/255.255.255.0 -j ACCEPT
> -A Firewall-1-INPUT -s 192.168.200.0/255.255.255.0 -j ACCEPT

Toujours vérifier l'interface d'entrée.
Note : spécifier la longueur de préfixe plutôt que le masque est AMA
plus lisible.

> ## Allow icmp
> -A Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

Bof. Le ping (echo-request), c'est suffisant.

> ## Allow IPsec (ESP port 50 and AH port 51)

Protocoles 50 et 51, pas ports.

> -A Firewall-1-INPUT -p esp -j ACCEPT
> -A Firewall-1-INPUT -p ah -j ACCEPT

C'est utile ?

> ## Allow previously established connections
> -A Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Cette règle devrait se trouver en début de chaîne car c'est elle qui
traite normalement le plus de paquets.

> ## Allow SSH
> -A Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

Déjà traité plus haut avec le bazar "recent", non ?

> ## Do not log smb/windows sharing packets - too much logging
> -A Firewall-1-INPUT -p tcp -i eth1 --dport 137:139 -j REJECT
> -A Firewall-1-INPUT -p udp -i eth1 --dport 137:139 -j REJECT
> ## Packets are DROPPED
> -A Firewall-1-INPUT -j DROP

Pas logique. Le commentaire dit "do not log", mais il n'y a pas de règle
LOG de toute façon. Et pourquoi REJECT sur les paquets Netbios mais pas
les autres ?


Reply to: