Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 26/04/2019, à 12:26

Spino1

Re : Iptables - configuration

TOR, tu n’as pas le 9001 en sortie, tu es sûr que ça marche ?

DNS, pas de 53 en UDP input ce n’est pas bon pour une connexion établie, en TCP input à éviter.

Ports pour Thunderbird output, je ne l’utilise plus, mais je crois qu’il en manque, voir pour le 993.


Tu aurais eu moins de mal en autorisant tout en sortie, filtrer par port en output ça peut être utile, quoi que fastidieux, si on peut le faire par application, mais sous Linux on ne peut pas, donc ça sort large, si un trojan ne peut pas sortir dans Firefox par exemple il choisira une autre voie, pas d’intérêt.
L’important c’est de filtrer en entrée, surtout dans ta box ou ton routeur.

Dernière modification par Spino1 (Le 26/04/2019, à 12:28)


PC assemblé - dual boot Ubuntu 18.04 LTS / Windows 10.

Hors ligne

#27 Le 26/04/2019, à 13:11

Redraven

Re : Iptables - configuration

Salutations !

Oui, Tor fonctionne, je viens de faire un petit tour sur Torcheck et tout bon !

Les input étaient commenté ! il n'y a que les output pour le DNS ! c'est bon du coup ?

Pas de thunderbird !

Et smtp fonctionne, mais en autorisant tout icmpv6. Pas un peu risqué ?

Le souci c'est qu'avec des filtres types :
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
p6tables -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

SMTP ne refonctionne plus. Il doit manquer quelque chose...

Hors ligne

#28 Le 26/04/2019, à 13:19

jlmas

Re : Iptables - configuration

bruno a écrit :

Et aucun rapport avec ICMP. Une machine peut parfaitement bloquer le « ping » et permettre d'envoyer et de recevoir du courrier, ou d'utiliser n'importe quel service.

Mauvaise idée en IPv6.
Toutes les annonces du routeur passent par des paquets icmpv6. C'est pourquoi en IPv6, il est très important de ne pas bloquer les paquets icmpv6 en entrée et en sortie, voire de mettre en tête de liste des ip6tables des règles les acceptant explicitement en entrée (INPUT) et sortie (OUTPUT).

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

L'option -p icmpv6 normalement prend en charge tous les protocoles liés à l'icmp en IPv6

Hors ligne

#29 Le 26/04/2019, à 13:27

jlmas

Re : Iptables - configuration

Ne filtre pas le loopback ni en IPv4 ni en IPv6

dans ta conf IPv4 tu as cette ligne commentée

 #iptables -A OUTPUT -o lo -j ACCEPT

Je tenterais plutôt ceci

#IPv4 
iptables -A INPUT -o lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#IPv6 
ip6tables -A INPUT -o lo -j ACCEPT
ip6tables -A FORWARD -o lo -j ACCEPT
ipt6ables -A OUTPUT -o lo -j ACCEPT
Spino1 a écrit :

Tu aurais eu moins de mal en autorisant tout en sortie

C'est clair, surtout dans le but de comprendre l'utilisation des ip(6)tables

Dernière modification par jlmas (Le 26/04/2019, à 13:29)

Hors ligne

#30 Le 26/04/2019, à 13:28

Redraven

Re : Iptables - configuration

Pas moyen de de n'autoriser justement que le strict nécessaire ? Normalement les lignes indiqués ci-dessus devraient pourtant fonctionner...

EDIT : Et c'est ce que j'avais au début ! Puis j'ai cherché à avoir le code minimal, et sans l'output de lo, tout fonctionnait encore ! Donc tant qu'à faire...


Aussi, une petite chose que je ne comprend pas :

Pour transmission j'ai :

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

J'avais par mégarde modifié en dport, et ça ne fonctionnait plus.

En revanche tout mes output http, https etc. fonctionnent avec du output --dport.

Que se passe-t-il ?!

Merci d'avance

Dernière modification par Redraven (Le 26/04/2019, à 13:30)

Hors ligne

#31 Le 26/04/2019, à 13:29

bruno

Re : Iptables - configuration

@jlmas : Tout à fait exact.
J'étais focalisé sur le copier/coller des règles IPv4 de ufw et je suis complètement passé à côté. Effectivement avec toutes les politiques par défaut sur « DROP » tes deux règles sont indispensables pour IPv6.

En ligne

#32 Le 26/04/2019, à 13:59

Spino1

Re : Iptables - configuration

Redraven a écrit :

Salutations !
Les input étaient commenté ! il n'y a que les output pour le DNS ! c'est bon du coup ?
Et smtp fonctionne, mais en autorisant tout icmpv6. Pas un peu risqué ?
Le souci c'est qu'avec des filtres types :
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
p6tables -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
...


Si ça marche en autorisant tout ICMP dans Iptables règles IPV6, autorise, de toute façon IPV6 seul on ne sait pas complètement ce qui nous attend au niveau réseau.

Dans IPV4, il faut garder au moins destination inaccessible et le ping en retour que tu as sollicité, mais en IPV6 seul il faut faire confiance à Iptables, tu n’as pas le choix, c’est vrai qu’ICMP comporte des risques, mais on n’en entend pas beaucoup parlé, à part ces histoires de réponse au ping qui sont de la fausse sécurité.


Pour le DNS ça doit être bon, j’ai regardé dans le log UFW, je vois partir les output en UDP sur le 53, je ne vois rien revenir, et pas de règle input UDP 53 dans UFW non plus, peut être cachée, mais ça marche, donc pas de problème.

Dernière modification par Spino1 (Le 26/04/2019, à 15:49)


PC assemblé - dual boot Ubuntu 18.04 LTS / Windows 10.

Hors ligne

#33 Le 26/04/2019, à 14:15

Redraven

Re : Iptables - configuration

Merci mille fois !

Et pour le --sport, qu'en penses -tu ?

Hors ligne

#34 Le 26/04/2019, à 15:48

Spino1

Re : Iptables - configuration

Redraven a écrit :

Et pour le --sport, qu'en penses -tu ?


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

Sous réserve de mes souvenirs de la syntaxe d’IPtables, autorise les sorties en UDP du port source ( sport ) 51413.
Avec un dport ça ne pouvait pas marcher, sauf en local.


PC assemblé - dual boot Ubuntu 18.04 LTS / Windows 10.

Hors ligne

#35 Le 26/04/2019, à 15:57

Redraven

Re : Iptables - configuration

C'est bien ce qu'il me semblait.

Mais

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

fonctionne ! j'ai beau vérifier par timedatectl , tout va. Je ne comprend plus...

Hors ligne

#36 Le 26/04/2019, à 16:20

Spino1

Re : Iptables - configuration

Redraven a écrit :

C'est bien ce qu'il me semblait.
Mais
# NTP (horloge du serveur)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT   
fonctionne ! j'ai beau vérifier par timedatectl , tout va. Je ne comprend plus...


Autorise en sortie UDP vers le port destinataire ( dport ) 123.

Dernière modification par Spino1 (Le 26/04/2019, à 16:20)


PC assemblé - dual boot Ubuntu 18.04 LTS / Windows 10.

Hors ligne

#37 Le 26/04/2019, à 16:27

jlmas

Re : Iptables - configuration

Je ne sais pas si NTP est un bon exemple pour comprendre les règles de filtrage d'iptables dans la mesure ou il fonctionne de plein de manières différentes (c'est un très très vieux protocole)

J'ai la règle inverse et ça fonctionne aussi smile

iptables -A INPUT -p udp  --dport 123 -m comment --comment "205 allow ntp server" -j ACCEPT

Hors ligne

#38 Le 26/04/2019, à 16:42

Redraven

Re : Iptables - configuration

Aaaah. Sans doute pour ça que je m'y perd un peu ahah.

Pour revenir au script entier, pas d'optimisations nécessaire, cette configuration est "sécurisée" ?

Hors ligne

#39 Le 26/04/2019, à 17:34

Spino1

Re : Iptables - configuration

jlmas a écrit :

Je ne sais pas si NTP est un bon exemple pour comprendre les règles de filtrage d'iptables dans la mesure ou il fonctionne de plein de manières différentes (c'est un très très vieux protocole)
J'ai la règle inverse et ça fonctionne aussi smile

iptables -A INPUT -p udp  --dport 123 -m comment --comment "205 allow ntp server" -j ACCEPT

Règle entrante, serveur NTP en écoute, input sur dport 123 destinataire.

Le -m comment je ne vois pas, peut être une poignée de mains ( handshake ) avant la connexion.

Dernière modification par Spino1 (Le 26/04/2019, à 17:36)


PC assemblé - dual boot Ubuntu 18.04 LTS / Windows 10.

Hors ligne

#40 Le 30/04/2019, à 10:56

jlmas

Re : Iptables - configuration

-m comment --comment "205 allow ntp server"

Cette option sert à activer les commentaires dans les iptables, ce qui donne ceci par exemple

sudo iptables -L | grep ntp
ACCEPT     udp  --  anywhere             anywhere             multiport dports ntp /* 205 allow ntp server */

C'est utile afin de se souvenir de ce que fait chacune des règles et pourquoi elle est là, surtout quand on en a beaucoup et qu'on travaille en équipe.
Ce n'est pas indispensable, mais c'est bien pratique.

Hors ligne

#41 Le 02/05/2019, à 08:27

Redraven

Re : Iptables - configuration

Merci pour toutes ces informations complémentaires !

Voici mon script "final" :

#!/bin/bash
#iptables-restore < /etc/iptables.test.rules

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 

## On drop les scans XMAS et NULL.
iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# Dropper silencieusement tous les paquets broadcastés.
iptables -A INPUT -m pkttype --pkt-type broadcast -j 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 -m state --state NEW -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 -m state --state NEW -j ACCEPT					
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT 					
 
# HTTP 											
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
	
# HTTPS
iptables -A OUTPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT					

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

#Transmission
iptables -A INPUT -p udp --dport 51413 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --sport 51413 -m state --state NEW -j ACCEPT
		
# NTP (horloge du serveur) 
iptables -A OUTPUT -p udp --dport 123 -m state --state NEW -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 

## On drop les scans XMAS et NULL.
ip6tables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
ip6tables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
ip6tables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
ip6tables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# Dropper silencieusement tous les paquets broadcastés.
ip6tables -A INPUT -m pkttype --pkt-type broadcast -j 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 router-advertisement -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-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
ip6tables -A INPUT -p icmpv6 -j DROP
ip6tables -A OUTPUT -p icmpv6 -j DROP

#TOR
ip6tables -A OUTPUT -p tcp -m tcp --dport 9050 -m state --state NEW -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 -m state --state NEW -j ACCEPT				
	
# HTTPS
ip6tables -A OUTPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT					

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

#Transmission
ip6tables -A INPUT -p udp --dport 51413 -m state --state NEW -j ACCEPT
ip6tables -A OUTPUT -p udp --sport 51413 -m state --state NEW -j ACCEPT
	
# NTP (horloge du serveur) 
ip6tables -A OUTPUT -p udp --dport 123 -m state --state NEW -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 


exit 0

Des idées d'améliorations ? Vos avis quand à la sécurité de cette configuration ?

Merci d'avance !

Hors ligne

#42 Le 07/05/2019, à 14:55

Redraven

Re : Iptables - configuration

Je me permet un petit up, suivi d'une petite question :

Comment faire pour que mon script soit appliqué au plus tôt au démarrage, avant la connexion au réseau ? On m'a fait remarquer que la solution de placer le script dans /etc/network/if-pre-up.d/iptables n'était pas optimale.

Merci d'avance !

Hors ligne

#43 Le 10/05/2019, à 21:40

mike_r_qc

Re : Iptables - configuration

Redraven,
J'ai consulté ton code...j'ai remarqué que tu as déclaré tes ports à ouvrir, mais pas tes interfaces d'entrée ou sortie liées aux ports. Il n'y a que "lo" qui est déclaré. Moi je galère un peu aussi avec IPtables: mes 2 réseaux se communiquent pas entre eux et doivent traverser une machine qui agit à titre de routeur pour mon sous-réseau. Il manque 3 règles à inscrire dans IPtables (venant d'une configuration publiée sur un forum), j'ai déclaré les interfaces concernées pour ouvrir quelques ports selon mes besoins. Mais je redoute que peut-être la configuration de la route pourrait être une cause ou LA cause du blocage des paquets limités à l'interface d'Entrée de chaque interface.


Mike_R_Qc. Utilisateur régulier Ubuntu, expérimente CentOS pour le plaisir. Comme avec les cultures: aucun préjugé, tout vient d'une "même racine".

Hors ligne