logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 26-04-2019 08:43:24

abumbra
Membre
Inscription : 26-04-2019

ip6tables configuration

Bonjour !

Je configurais ip6tables, après avoir configuré iptables avec succès.


ip6tables -F
ip6tables -X
ip6tables -t nat -F
ip6tables -t nat -X
ip6tables -t mangle -F
ip6tables -t mangle -X
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
 
# Autorise les connexions déjà établies et localhost                
ip6tables -A INPUT -m state --state ESTABLISHED -j ACCEPT      
ip6tables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT  
ip6tables -A INPUT -i lo -j ACCEPT                          
#ip6tables -A OUTPUT -o lo -j ACCEPT
 
 
#TOR
ip6tables -A OUTPUT -p tcp -m tcp --dport 9050 -j ACCEPT
 
# ICMP (Ping)                                      
ip6tables -A INPUT -p icmp -j DROP                      
ip6tables -A OUTPUT -p icmp -j DROP
 
# DNS                                          
ip6tables -A OUTPUT -p tcp --dport 53 -j ACCEPT                
ip6tables -A OUTPUT -p udp --dport 53 -j ACCEPT                    
 
# HTTP                                          
ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT            
 
 
#HTTPS
ip6tables -A OUTPUT -p tcp --dport 443 -j ACCEPT                        
 
 
# Mail SMTP
 
ip6tables -A INPUT -p tcp --dport 25  -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 25 -j ACCEPT  
ip6tables -A INPUT -p tcp --dport 587 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 587 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 465 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 465 -j ACCEPT
 
 
#Transmission
ip6tables -A INPUT -p udp --dport 51413 -j ACCEPT
ip6tables -A OUTPUT -p udp --sport 51413 -j ACCEPT
 
 
# NTP (horloge du serveur)
ip6tables -A OUTPUT -p udp --dport 123 -j ACCEPT    
 
# On log les paquets en entrée.
ip6tables -A INPUT -j LOG
 
 
exit 0
 



Tout fonctionne... Sauf SMTP. Et je ne comprend juste pas pourquoi ! Pourtant, msmtp n'utilise pas d'autres ports que 25 ou 465 ou 587... Avec le traffic autorisé sur les 3 je ne comprend pas ce qui ne va pas. Des idées ?

Merci d'avance !

Hors ligne

#2 26-04-2019 09:05:39

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

Tout fonctionne, vraiment ? Pourtant ce script contient des erreurs.

 #ip6tables -A OUTPUT -o lo -j ACCEPT


Le fait que cette règle soit commentée empêche toute communication locale en IPv6 sur l'interface de loopback. Il faut accepter en INPUT et OUTPUT puisque chaque paquet passe par les deux chaînes (particularité du traffic sur l'interface de loopback).

 # ICMP (Ping)                                      
 ip6tables -A INPUT -p icmp -j DROP                      
 ip6tables -A OUTPUT -p icmp -j DROP


D'une part, ICMP ne se limite pas au ping. Le bloquer totalement peut causer des dysfonctionnement, notamment en perturbant la découverte de MTU du chemin (path MTU discovery) servant à déterminer la taille maximum des paquets pouvant être envoyés vers une destination donnée.
D'autre part, le protocole ICMP est propre à IPv4. L'équivalent pour IPv6 est ICMPv6. Ces commandes doivent donc provoquer une erreur.
ICMPv6 reprend en les étendant les fonctionnalités du protocole ARP, donc bloquer ICMPv6 empêche les communications en IPv6 sur un réseau local. Si ça marche un peu, je suppose que la connectivité IPv6 ne se fait pas via une interface de type LAN (Ethernet, wifi...) mais une interface de type point à point (PPP, tunnel, VPN en mode routé...).

abumbra a écrit :

je ne comprend pas ce qui ne va pas. Des idées ?


La dernière règle enregistre les paquets entrant qui atteignent la fin de la chaîne dans les logs du noyau. Il faut en profiter et les examiner. Et faire de même avec les paquets sortants.


Il vaut mieux montrer que raconter.

Hors ligne

#3 26-04-2019 09:28:33

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Merci pour la répons rapide !

Mes excuses, j'avais entre temps corrigé mon erreur pour icmp, je n'avais pas copié le bon script.

   ip6tables -A INPUT -p icmpv6 -j ACCEPT                       
    ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

en revanche, pour la boucle locale, étonnement ça marchait sans, mais en effet, je vais tout mettre en accept.

Ceci dit, malgré ces modifications, smtp ne fonctionne toujours pas ! Http, https, dns, torrent, tout passe... sauf smtp.

Ce que je ne comprend pas, c'est que :
iptables configuré en acceptant sur le port 25 : smtp marche
iptables configuré sans accepter sur le port 25 : smtp ne marche pas
-> bien besoin de 25.

Alors même que msmtp est sensé passer sur 587.

Dès que j'ajoute mes règles ip6tables, même en acceptant sur 25 ET 587 ( et même 465 dans le doute), smtp ne fonctionne plus. Avec ou sans icmp, avec ou sans la boucle lo.

Hors ligne

#4 26-04-2019 09:42:59

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

Ajoute une règle LOG dans OUTPUT et regarde les paquets bloqués dans les logs du noyau.

Il vaut mieux montrer que raconter.

Hors ligne

#5 26-04-2019 13:14:31

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

ça fonctionne !

Le boulet que je suis appliquais mon ancien script avec des

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT

Qui ne fonctionnait pas. D'ailleurs, pas un peu "risqué" que d'autoriser tout icmpv6 ? ce type de règle ci-dessus ne seraient pas plus appropriées ? sauf que je ne vois pas ce qu'il me manque pour que ça fonctionne.

Hors ligne

#6 26-04-2019 13:38:53

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

abumbra a écrit :

Le boulet que je suis appliquais mon ancien script


Si tu ne montres pas les règles réellement appliquées, c'est compliqué de comprendre pourquoi ça ne marche pas.
Ceci dit, je ne vois pas en quoi ces règles supplémentaires gênaient, au contraire puisqu'elles ont pour cible ACCEPT.

abumbra a écrit :

D'ailleurs, pas un peu "risqué" que d'autoriser tout icmpv6 ?


Oui, un peu. Il y a des types ICMPv6 dont l'usage peut être détourné, comme "redirect" qui peut servir à rediriger du trafic.

Les types ICMPv6 vraiment indispensables sont :
- les types d'erreur destination-unreachable, packet-too-big, time-exceeded, parameter-problem dans l'état RELATED
- les types de découverte du voisinage (remplaçant ARP) neighbor-solicitation, neighbor-advertisement, router-solicitation, router-advertisement dans l'état UNTRACKED avec un hl (hop limit) à 255.


Il vaut mieux montrer que raconter.

Hors ligne

#7 26-04-2019 13:50:49

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Autant pour moi... Mes excuses.

Et bien avec tout en drop sauf ces lignes pour l'icmpv6, smtp ne fonctionne pas. En autorisant tout icmpv6, il fonctionne. Je pense qu'il doit me manquer des règles nécessaires. Probablement dans ce que tu as indiqués ensuite.

Je test un peu plus tard !

En attendant l'intégralité de mon iptables/ip6tables



iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
 
# Autorise les connexions déjà établies et localhost      
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT   
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT  
iptables -A INPUT -i lo -j ACCEPT              
#iptables -A OUTPUT -o lo -j ACCEPT

#TOR
iptables -A OUTPUT -p tcp -m tcp --dport 9050 -j ACCEPT

# ICMP (Ping)                  
iptables -A INPUT -p icmp -j DROP          
iptables -A OUTPUT -p icmp -j DROP
   
# DNS                    
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT         
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT         
 
# HTTP                     
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
 
#HTTPS
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT        

# Mail SMTP
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT  

#Transmission
iptables -A INPUT -m state --state ESTABLISHED -p udp --dport 51413 -j ACCEPT
iptables -A OUTPUT -p udp --sport 51413 -j ACCEPT
   
# NTP (horloge du serveur)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT

# On log les paquets en entrée.
iptables -A INPUT -j LOG

# On log les paquets en sortie.
iptables -A OUTPUT -j LOG
 
# On log les paquets forward.
iptables -A FORWARD -j LOG


ip6tables -F
ip6tables -X
ip6tables -t nat -F
ip6tables -t nat -X
ip6tables -t mangle -F
ip6tables -t mangle -X
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
 
# Autorise les connexions déjà établies et localhost      
ip6tables -A INPUT -m state --state ESTABLISHED -j ACCEPT  
ip6tables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT  
ip6tables -A INPUT -i lo -j ACCEPT             
#ip6tables -A OUTPUT -o lo -j ACCEPT

ip6tables -A INPUT -p icmpv6 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

#TOR
ip6tables -A OUTPUT -p tcp -m tcp --dport 9050 -j ACCEPT
   
# DNS                    
ip6tables -A OUTPUT -p tcp --dport 53 -j ACCEPT        
ip6tables -A OUTPUT -p udp --dport 53 -j ACCEPT          

# HTTP                     
ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT      
 
#HTTPS
ip6tables -A OUTPUT -p tcp --dport 443 -j ACCEPT         

# Mail SMTP
ip6tables -A INPUT -p tcp --dport 587 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 587 -j ACCEPT

#Transmission
ip6tables -A INPUT -p udp -m state --state ESTABLISHED --dport 51413 -j ACCEPT
ip6tables -A OUTPUT -p udp --sport 51413 -j ACCEPT
 
 
# NTP (horloge du serveur)
ip6tables -A OUTPUT -p udp --dport 123 -j ACCEPT 

# On log les paquets en entrée.
ip6tables -A INPUT -j LOG

# On log les paquets en sortie.
ip6tables -A OUTPUT -j LOG
 
# On log les paquets forward.
ip6tables -A FORWARD -j LOG
 

Dernière modification par abumbra (26-04-2019 13:53:14)

Hors ligne

#8 26-04-2019 14:11:28

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

abumbra a écrit :

Et bien avec tout en drop sauf ces lignes pour l'icmpv6, smtp ne fonctionne pas.


Tu veux dire sans les règles qui acceptent tout ICMPv6 en entrée et en sortie ?
Dans ce cas il ne devait pas y avoir que SMTP qui ne fonctionnait pas. Rien ne devait fonctionner puisque toute communication IPV6 sur un réseau local Ethernet ou wifi a besoin des 4 types de découverte du voisinage mentionnés plus haut (pour déterminer l'adresse MAC destination à mettre dans les trames). Sauf si l'IPv6 ne passe pas par un réseau local mais par une interface point à point sans adresse MAC.

#ip6tables -A OUTPUT -o lo -j ACCEPT


Toujours pas décommentée, donc les communications locales sont bloquées.

ip6tables -A INPUT -p udp -m state --state ESTABLISHED --dport 51413 -j ACCEPT


Redondant avec la règle ESTABLISHED générale.

Dernière modification par raleur (26-04-2019 14:12:47)


Il vaut mieux montrer que raconter.

Hors ligne

#9 26-04-2019 14:25:24

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Tout fonctionnait, mais en ipv4 du coup je suppose. Si je comprend bien ce qui se passe, seul msmtp passe systématiquement par l'ipv6 sur 587. Le reste semble se rabattre sur ipv4, http etc.

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type destination-unreachable -m state --state RELATED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type packet-too-big -m state --state RELATED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type time-exceeded -m state --state RELATED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type parameter-problem -m state --state RELATED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type destination-unreachable -m state --state RELATED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type packet-too-big -m state --state RELATED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type time-exceeded -m state --state RELATED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type parameter-problem -m state --state RELATED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m state --state RELATED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-solicitation -m state --state RELATED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m state --state RELATED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m state --state RELATED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-advertisement -m state --state RELATED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-solicitation -m state --state RELATED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m state --state RELATED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m state --state RELATED -m hl --hl-eq 255 -j ACCEPT

Ne fonctionne pas...

EDIT  : tout fonctionne, j'avais mis related par réflexe sur les derniers.

Merci beaucoup, vraiment !

Dernière modification par abumbra (26-04-2019 14:32:05)

Hors ligne

#10 26-04-2019 14:53:24

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

Note que pour alléger un peu tu peux regrouper les règles dans une chaîne utilisateur appelée depuis INPUT et OUTPUT.

Il vaut mieux montrer que raconter.

Hors ligne

#11 26-04-2019 14:59:13

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Merci pour l'astuce.

Cette utilisation est donc plus sécurisée que tout accepter en icmpv6?

Ce que je ne comprend pas, c'est pourquoi tout accepter en icmpv6 et qu'en established fonctionne.
Mais que pour faire fonctionner au cas par cas, il faut du related et untracked ?

Dernière modification par abumbra (26-04-2019 15:00:04)

Hors ligne

#12 26-04-2019 15:10:03

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

abumbra a écrit :

Cette utilisation est donc plus sécurisée que tout accepter en icmpv6?


Forcément puisque cela supprime les risques associés aux types ICMPv6 non acceptés.

abumbra a écrit :

Ce que je ne comprend pas, c'est pourquoi tout accepter en icmpv6 et qu'en established fonctionne.


Je ne comprends pas la phrase. Les types ICMPv6 indispensables ne sont pas dans l'état ESTABLISHED.

abumbra a écrit :

Mais que pour faire fonctionner au cas par cas, il faut du related et untracked ?


C'est pour une meilleure sécurisation. Les paquets valides de ces types doivent avoir ces états. Un paquet qui aurait un état différent est forcément invalide et doit être bloqué.

Dernière modification par raleur (26-04-2019 15:12:41)


Il vaut mieux montrer que raconter.

Hors ligne

#13 26-04-2019 15:31:29

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Ok. (je n'avais lu qu'à propos de ces types là, donc..).

Je crois que je commence à me mélanger les pinceaux (ou que je n'ai rien compris pour commencer, ce qui serait gênant, et auquel cas toutes mes excuses).

Si je fais :


ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP

           
ip6tables -A INPUT -m state --state ESTABLISHED -j ACCEPT       
ip6tables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT

ip6tables -A INPUT -p icmpv6 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 -j ACCEPT

ça revient à accepter icmpv6 qu'en established, non ? Solution qui fonctionne.

Par conséquent, là j'accepte deux types supplémentaires.

Comment la première solution peut-elle fonctionner, alors qu'elle rejette les related et untracked, qui sont nécessaire à la deuxième ?

Dernière modification par abumbra (26-04-2019 15:32:52)

Hors ligne

#14 26-04-2019 15:36:52

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

abumbra a écrit :

ça revient à accepter icmpv6 qu'en established, non ?



Non, ça revient à
- accepter les paquets de n'importe quel protocole dans l'état ESTABLISHED
- et accepter les paquets du protocole ICMPv6 dans n'importe quel état

La cible ACCEPT est dite terminale : si un paquet correspond à une règle, il est définitivement accepté et les règles suivantes ne sont pas examinées.

Dernière modification par raleur (26-04-2019 15:38:53)


Il vaut mieux montrer que raconter.

Hors ligne

#15 26-04-2019 16:01:24

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Hmm. Ok.


# Autorise les connexions déjà établies et localhost      
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT   
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT  
iptables -A INPUT -i lo -j ACCEPT  

#TOR
iptables -A OUTPUT -p tcp -m tcp --dport 9050 -j ACCEPT

# ICMP (Ping)                  
iptables -A INPUT -p icmp -j DROP          
iptables -A OUTPUT -p icmp -j DROP
   
# DNS                    
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT         
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT         
 
# HTTP                     
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
 
#HTTPS
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT        
 



Si ACCEPT est terminale, quel est le process ici. Toutes les états established sont accepté, puis, port par port, tout les autres états ?

iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT : accepte donc tout les états ?

ce serait donc iptables -A OUTPUT -p tcp --dport 443 -m state --state ESTABLISHED  -j ACCEPT si je ne veux pas du reste ?

Dernière modification par abumbra (26-04-2019 16:02:32)

Hors ligne

#16 26-04-2019 16:14:44

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

abumbra a écrit :

Toutes les états established sont accepté, puis, port par port, tout les autres états ?
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT : accepte donc tout les états ?


Oui.
Note que la chaîne OUTPUT ne concerne que les paquets émis par la machine elle-même.

abumbra a écrit :

ce serait donc iptables -A OUTPUT -p tcp --dport 443 -m state --state ESTABLISHED  -j ACCEPT si je ne veux pas du reste ?


Non, tous les paquets dans l'état ESTABLISHED sont déjà acceptés par la règle générale. C'est l'état NEW (le premier paquet de la connexion) qu'il faut accepter. Par contre cela peut empêcher l'utilisation de certains types de scan de port depuis cette machine.


Il vaut mieux montrer que raconter.

Hors ligne

#17 26-04-2019 16:40:23

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Dans ma tête, ces règles n'autorisait que les established sur les règles qui suivait.

#Transmission
ip6tables -A INPUT -p udp --dport 51413 -j ACCEPT
ip6tables -A OUTPUT -p udp --sport 51413 -j ACCEPT

je pensais que du coup, seul 51413 established passait.

Mais tout passe. Je ne sais pas pourquoi, mais ça m'inquiète. Surement une mauvaise conception que je dois avoir d'iptables.

Aussi, je voulais te demander pourquoi :

ip6tables -A OUTPUT -p udp --sport 51413 -j ACCEPT

--sport est nécessaire, ce sans quoi smtp ne fonctionne pas.

Mais
# NTP (horloge du serveur)
ip6tables -A OUTPUT -p udp --dport 123 -j ACCEPT

--dport fonctionne ?!

Dernière modification par abumbra (26-04-2019 16:43:15)

Hors ligne

#18 26-04-2019 16:52:20

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

abumbra a écrit :

Dans ma tête, ces règles n'autorisait que les established sur les règles qui suivait.


Heureusement que non. Sinon aucune communication ne serait possible puisque toute connexion doit commencer par un paquet dans l'état NEW.

abumbra a écrit :

Aussi, je voulais te demander pourquoi :ip6tables -A OUTPUT -p udp --sport 51413 -j ACCEPT--sport est nécessaire, ce sans quoi smtp ne fonctionne pas


SMTP ? Je ne vois pas le rapport, d'autant plus que le commentaire précédent cette règle mentionne Transmission, qui est un client BitTorrent si je ne m'abuse.


Il vaut mieux montrer que raconter.

Hors ligne

#19 26-04-2019 16:59:15

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Ahah, mes excuses, j'ai passé un bon bout de temps sur faire marcher smtp, lapsus. Transmission.

Ok, merci pour tes réponses.

Et du coup, pas d'autres optimisations nécessaires, cette configuration est "sécurisée" ?



Aussi, j'ai vu sur pas mal d'exemple de :

iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

Après ce que tu viens de me dire, je ne sais qu'en penser.

Ne vaut il mieux pas accepter que les états nécessaire au lieu d'un accept global ?

(debout depuis 5h, je commence à m'endormir, pardonnes si je ne fais plus aucun sens)



Aussi, je m'amusait à tester... Si je précède les règles vu avant d'un imcpv6 drop, plus rien ne fonctionne. Pourtant, les accept qui suis devraient laisser passer, non ?... Je ne comprend plus rien.

Dernière modification par abumbra (26-04-2019 18:41:58)

Hors ligne

#20 26-04-2019 19:09:45

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

abumbra a écrit :

j'ai passé un bon bout de temps sur faire marcher smtp, lapsus. Transmission.


Je ne connais pas le protocole réseau BitTorrent, que je n'ai jamais utilisé. Si transmission fonctionne en client+serveur avec le même port UDP local, alors ces règles sont logiques : une pour les paquets entrants destinés à ce port local (--dport), une pour les paquets sortant émis depuis ce port local (--sport).

Les autres règles UDP pour DNS et NTP sont différentes car elles concernent des usages en tant que client uniquement, et seul compte le port destination distant des paquets de requête. Les paquets de réponse entrants sont dans l'état ESTABLISHED donc acceptés par la règle globale correspondante.

abumbra a écrit :

Et du coup, pas d'autres optimisations nécessaires, cette configuration est "sécurisée" ?


Pour pouvoir donner un avis sérieux il faudrait montrer le script complet actuel, car tu n'as montré que le script initial et dfes modifications partielles.

abumbra a écrit :

Aussi, j'ai vu sur pas mal d'exemple de :
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT


En INPUT, c'est plus sécurisé que sans state puisque cela exclut les paquets qui sont classés dans l'état INVALID.
En OUTPUT, c'est moins utile pour la sécurité. Par contre cela évite d'émettre des paquets INVALID dont l'éventuelle réponse sera forcément INVALID aussi, donc bloquée.

A propose de connexions entrantes, ta machine est-elle vraiment censée recevoir des connexions SMTP de l'extérieur ?

abumbra a écrit :

Ne vaut il mieux pas accepter que les états nécessaire au lieu d'un accept global ?


Oui, bien sûr.


Il vaut mieux montrer que raconter.

Hors ligne

#21 26-04-2019 19:15:12

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

abumbra a écrit :

Si je précède les règles vu avant d'un imcpv6 drop, plus rien ne fonctionne. Pourtant, les accept qui suis devraient laisser passer, non ?


Non. Comme ACCEPT, la cible DROP est aussi terminale. En revanche la cible LOG ne l'est pas.


Il vaut mieux montrer que raconter.

Hors ligne

#22 26-04-2019 19:38:34

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Donc, le drop est terminal et les règles qui suivent ne sont donc pas pris en compte.
En revanche, pour le -P INPUT DROP initial, les règles qui suivent sont bien pris en compte ? Je m'avoue perdu.

Il n'est qu'en output, smtp, si tu l'as vu en input quelques part, faute de copier coller je pense.

Voici le tout


iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Droping all invalid packets
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
 
# Autorise les connexions déjà établies et localhost      
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT   
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT  
iptables -A INPUT -i lo -j ACCEPT  

#TOR
iptables -A OUTPUT -p tcp -m tcp --dport 9050 -j ACCEPT

# ICMP (Ping)                  
iptables -A INPUT -p icmp -j DROP          
iptables -A OUTPUT -p icmp -j DROP
   
# DNS                    
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT         
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT         
 
# HTTP                     
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
 
#HTTPS
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT        

# Mail SMTP
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT  

#Transmission
iptables -A INPUT -p udp --dport 51413 -j ACCEPT
iptables -A OUTPUT -p udp --sport 51413 -j ACCEPT
   
# NTP (horloge du serveur)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT

# On log les paquets en entrée.
iptables -A INPUT -j LOG

# On log les paquets en sortie.
iptables -A OUTPUT -j LOG
 
# On log les paquets forward.
iptables -A FORWARD -j LOG

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
 
# Droping all invalid packets
ip6tables -A INPUT -m state --state INVALID -j DROP
ip6tables -A FORWARD -m state --state INVALID -j DROP
ip6tables -A OUTPUT -m state --state INVALID -j DROP
 
# Autorise les connexions déjà établies et localhost      
ip6tables -A INPUT -m state --state ESTABLISHED -j ACCEPT  
ip6tables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT  
ip6tables -A INPUT -i lo -j ACCEPT

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type destination-unreachable -m state --state RELATED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type packet-too-big -m state --state RELATED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type time-exceeded -m state --state RELATED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type parameter-problem -m state --state RELATED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type destination-unreachable -m state --state RELATED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type packet-too-big -m state --state RELATED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type time-exceeded -m state --state RELATED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type parameter-problem -m state --state RELATED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m state --state UNTRACKED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-solicitation -m state --state UNTRACKED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m state --state UNTRACKED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m state --state UNTRACKED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-advertisement -m state --state UNTRACKED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-solicitation -m state --state UNTRACKED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m state --state UNTRACKED -m hl --hl-eq 255 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m state --state UNTRACKED -m hl --hl-eq 255 -j ACCEPT

#TOR
ip6tables -A OUTPUT -p tcp -m tcp --dport 9050 -j ACCEPT
   
# DNS                    
ip6tables -A OUTPUT -p tcp --dport 53 -j ACCEPT        
ip6tables -A OUTPUT -p udp --dport 53 -j ACCEPT          

# HTTP                     
ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT      
 
#HTTPS
ip6tables -A OUTPUT -p tcp --dport 443 -j ACCEPT         

# Mail SMTP
ip6tables -A OUTPUT -p tcp --dport 587 -j ACCEPT

#Transmission
ip6tables -A INPUT -p udp --dport 51413 -j ACCEPT
ip6tables -A OUTPUT -p udp --sport 51413 -j ACCEPT
 
# NTP (horloge du serveur)
ip6tables -A OUTPUT -p udp --dport 123 -j ACCEPT 

# On log les paquets en entrée.
ip6tables -A INPUT -j LOG

# On log les paquets en sortie.
ip6tables -A OUTPUT -j LOG
 
 



Et je tiens à te remercier encore du temps passé à me guider, c'est très gentil (c'est que tu y as passé, du temps...).

Dernière modification par abumbra (26-04-2019 20:48:59)

Hors ligne

#23 26-04-2019 20:47:25

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

-P ne crée par une règle mais définit la politique par défaut qui est appliquée si le paquet atteint la fin de la chaîne. Peu importe qu'elle soit définie avant ou après la création des règles, elle s'applique après les règles.

ip6tables -A INPUT -i lo -j ACCEPT


Cette règle ne sert pas à grand-chose sans la règle similaire dans OUTPUT (qui était commentée dans ton premier script).

Puisque l'essentiel est fait, on peut s'attaquer aux détails.

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT


Répondre inconditionnellement au ping n'est pas dangereux en soi mais peut être exploité pour un déni de service (flood).
Tu fais comme tu veux, mais je limiterais la taille des paquets (-m length) et la fréquence (-m limit).


Il vaut mieux montrer que raconter.

Hors ligne

#24 26-04-2019 21:22:10

abumbra
Membre
Inscription : 26-04-2019

Re : ip6tables configuration

Tu n'es pas la première personne à me le faire remarquer. Mais étonnement, tout fonctionne sans, donc je ne vois pas vraiment l'intérêt de l'ajouter, je me trompe ?

Je testerai cela demain. Merci ! Valeur à fixer arbitrairement ou selon ce que me donne une petite analyse du trafic ?

Peut-être que ça t'aidera dans la compréhension de ce qui m'embrouille, mais je suis entre autre tombé sur ceci https://resources.sei.cmu.edu/tools/dow … _rules.txt

Et plusieurs points m'interpelle, la personne indique un ip6tables -A INPUT -p icmpv6 -j DROP avant la suite de ses règles, et tout fonctionne (la personne semble avoir un doute sur si la policy par défaut d'imcpv6 est drop, je comprend pas...).

Aussi : icmpv6 --icmpv6-type redirect -j REJECT : quel intérêt si policy drop ?

Pourquoi ip6tables -A OUTPUT -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT    si après : ip6tables -A OUTPUT -p icmpv6 -j ACCEPT ?!

Une excellente soirée et nuit.

Hors ligne

#25 26-04-2019 21:50:19

raleur
Membre
Inscription : 03-10-2014

Re : ip6tables configuration

Les règles sur l'interface de loopback ne servent que s'il y a du trafic sur cette interface. Une application qui communique avec elle-même, ou un client qui communique avec un service local. L'interface de loopback n'est pas utilisée par les communications avec l'extérieur.

Les limites de taille et de fréquence peuvent être fixées arbitrairement selon tes critères, du moment que c'est au dessus des valeurs normales d'un ping.

Pour le reste, je regarderai plus tard.

Il vaut mieux montrer que raconter.

Hors ligne

Pied de page des forums