Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Forcer un port sur une interface via UFW

6 réponses
Avatar
Damien TOURDE
Bonjour,

Savez vous si on peut forcer UFW à n'autoriser les connexions que sur
une interface particulière ?


Je veux faire passer toutes les connexions (TCP/UDP entrantes &
sortantes) du port 51413 sur l'interface tun0.

tun0 est l'interface crée par OpenVPN lorsque je me connecte, sachant
que je ne me connecte au VPN que quand j'en ai besoin.


Je précise UFW car c'est ce que j'utilise, mais si on peut le faire avec
iptables directement (et que UFW n'a pas de problèmes lorsqu'on ajoute
des règles IPTABLES...).


Merci,
Damien


PS: Je ne détaillerais pas l'utilisation exacte, mais bon, le port
51413, c'est celui utilisé par Transmission

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: https://lists.debian.org/553D3062.3040502@tourde.org

6 réponses

Avatar
Pascal Hambourg
Salut,

Damien TOURDE a écrit :

Savez vous si on peut forcer UFW à n'autoriser les connexions que sur
une interface particulière ?

Je veux faire passer toutes les connexions (TCP/UDP entrantes &
sortantes) du port 51413 sur l'interface tun0.



Il y a une différence entre "forcer" ou "faire passer" sur une interface
(routage) et n'autoriser que sur une interface (filtrage). Que veux-tu
faire exactement ?

tun0 est l'interface crée par OpenVPN lorsque je me connecte, sachant
que je ne me connecte au VPN que quand j'en ai besoin.

Je précise UFW car c'est ce que j'utilise, mais si on peut le faire avec
iptables directement (et que UFW n'a pas de problèmes lorsqu'on ajoute
des règles IPTABLES...).



Je ne sais pas utiliser ufw. Pour bloquer en TCP avec iptables :
iptables -I OUTPUT ! -o tun0 -p tcp --dport 51413 -j DROP
iptables -I INPUT ! -i tun0 -p tcp --dport 51413 -j DROP
(-I insèrera les règles en début de chaîne, avant celles créées par ufw)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Damien TOURDE
Bonjour,
Le 27/04/2015 09:51, Pascal Hambourg a écrit :

Je veux faire passer toutes les connexions (TCP/UDP entrantes &
sortantes) du port 51413 sur l'interface tun0.



Il y a une différence entre "forcer" ou "faire passer" sur une interface
(routage) et n'autoriser que sur une interface (filtrage). Que veux-tu
faire exactement ?



Je veux faire en sorte que si tun0 est présent, on passe par tun0, si le
VPN se déconnecte, tun0 disparait, et je veux que dans ce cas, les
connexions entrantes et sortantes soient DROP (c'est toujours appelé
DENY sous UFW).

tun0 est l'interface crée par OpenVPN lorsque je me connecte, sachant
que je ne me connecte au VPN que quand j'en ai besoin.

Je précise UFW car c'est ce que j'utilise, mais si on peut le faire avec
iptables directement (et que UFW n'a pas de problèmes lorsqu'on ajoute
des règles IPTABLES...).



Je ne sais pas utiliser ufw. Pour bloquer en TCP avec iptables :
iptables -I OUTPUT ! -o tun0 -p tcp --dport 51413 -j DROP
iptables -I INPUT ! -i tun0 -p tcp --dport 51413 -j DROP
(-I insèrera les règles en début de chaîne, avant celles créées par ufw)




Merci pour ces règles, je vais les tester, j'imagine que le ! avant -i
et -o signifie /n'est pas/ ?

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Pascal Hambourg
Damien TOURDE a écrit :
Le 27/04/2015 09:51, Pascal Hambourg a écrit :

Je veux faire passer toutes les connexions (TCP/UDP entrantes &
sortantes) du port 51413 sur l'interface tun0.


Il y a une différence entre "forcer" ou "faire passer" sur une interface
(routage) et n'autoriser que sur une interface (filtrage). Que veux-tu
faire exactement ?



Je veux faire en sorte que si tun0 est présent, on passe par tun0, si le
VPN se déconnecte, tun0 disparait, et je veux que dans ce cas, les
connexions entrantes et sortantes soient DROP (c'est toujours appelé
DENY sous UFW).



Si la route par défaut est sur tun0 quand le VPN est actif, alors le
filtrage devrait suffire.

Je ne sais pas utiliser ufw. Pour bloquer en TCP avec iptables :
iptables -I OUTPUT ! -o tun0 -p tcp --dport 51413 -j DROP
iptables -I INPUT ! -i tun0 -p tcp --dport 51413 -j DROP
(-I insèrera les règles en début de chaîne, avant celles créées par ufw)





Note : pour UDP, il faut savoir si le port 51413 est le port source ou
destination, dans les paquets UDP émis et reçus.

j'imagine que le ! avant -i et -o signifie /n'est pas/ ?



Oui, cela inverse le critère qui suit. Cf. man iptables.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Erwan David
On Mon, Apr 27, 2015 at 11:08:26AM CEST, Damien TOURDE said:
Bonjour,
Le 27/04/2015 09:51, Pascal Hambourg a écrit :

>> Je veux faire passer toutes les connexions (TCP/UDP entrantes &
>> sortantes) du port 51413 sur l'interface tun0.
>
> Il y a une différence entre "forcer" ou "faire passer" sur une interface
> (routage) et n'autoriser que sur une interface (filtrage). Que veux-tu
> faire exactement ?

Je veux faire en sorte que si tun0 est présent, on passe par tun0, si le
VPN se déconnecte, tun0 disparait, et je veux que dans ce cas, les
connexions entrantes et sortantes soient DROP (c'est toujours appelé
DENY sous UFW).



Je ne connais pas UFW (j'utilise fwbuilder pour générer mes règles
iptables), mais à ta place je mettrais une règle qui droppe (ou
rejette) ces paquets sur les interfaces physiques, suivi d'une règle qui autorise.


en iptables ça utiliserait -i <interface> ou -o <interface> selon que tu considère l'interface d'entrée ou de sortie.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Damien TOURDE
Le 27/04/2015 11:20, Pascal Hambourg a écrit :
Si la route par défaut est sur tun0 quand le VPN est actif, alors le
filtrage devrait suffire.




Lors d'une déconnexion VPN "accidentelle" (par ex. la connexion se
"coupe"), l'interface tun0 est supprimée et tout le transfert repasse
par wlan0 dans mon cas.

En gros, je veux que les transferts via Transmission s'arrêtent dans ce
cas, je vais jeter un coup d’œil à iptables et les règles que tu m'as
données, ça fait un moment (5 ans) que j'ai pas utilisé iptables
directement, c'est pour ça que j'ai d'abord demandé avec UFW.

Note : pour UDP, il faut savoir si le port 51413 est le port source ou
destination, dans les paquets UDP émis et reçus.



Je ne sais pas trop comment fonctionne Transmission, il faut que je me
documente, quand je fais un netstat j'ai :

:~# netstat -lnp | grep transmiss
tcp 0 0 0.0.0.0:51413 0.0.0.0:*
LISTEN 6339/transmission-g
tcp6 0 0 :::51413 :::*
LISTEN 6339/transmission-g
udp 0 0 0.0.0.0:46821 0.0.0.0:*
6339/transmission-g
udp 0 0 0.0.0.0:51413 0.0.0.0:*
6339/transmission-g


L'idéal serait de pouvoir dire que tout ce qui sort ou entre pour
l'application transmission-gtk doit passer par tun0, mais je ne suis pas
sur que ce soit possible.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/
Avatar
Pascal Hambourg
Damien TOURDE a écrit :

Le 27/04/2015 11:20, Pascal Hambourg a écrit :
Si la route par défaut est sur tun0 quand le VPN est actif, alors le
filtrage devrait suffire.



Lors d'une déconnexion VPN "accidentelle" (par ex. la connexion se
"coupe"), l'interface tun0 est supprimée et tout le transfert repasse
par wlan0 dans mon cas.



Avec un filtrage approprié ça ne passera plus.

Note : pour UDP, il faut savoir si le port 51413 est le port source ou
destination, dans les paquets UDP émis et reçus.



Je ne sais pas trop comment fonctionne Transmission, il faut que je me
documente, quand je fais un netstat j'ai :



Parfois une capture de paquets bien ciblée en apprend autant et plus
rapidement qu'une longue lecture.

:~# netstat -lnp | grep transmiss
tcp 0 0 0.0.0.0:51413 0.0.0.0:* LISTEN 6339/transmission-g
tcp6 0 0 :::51413 :::* LISTEN 6339/transmission-g
udp 0 0 0.0.0.0:46821 0.0.0.0:* 6339/transmission-g
udp 0 0 0.0.0.0:51413 0.0.0.0:* 6339/transmission-g



On voit une socket UDP sur le port local 46821 que tu n'avais pas
mentionné. S'il change à chaque fois que transmission est relancé, c'est
un port aléatoire qui ne sert probablement que de port source pour
envoyer des paquets UDP vers le port 51413 de machines distantes. Dans
ce cas je pense qu'il devrait être suffisant de bloquer le port 51413 en
source ou destination dans les paquets UDP émis ou reçus.

iptables -I OUTPUT ! -o tun0 -p udp --dport 51413 -j DROP
iptables -I OUTPUT ! -o tun0 -p udp --sport 51413 -j DROP
iptables -I INPUT ! -i tun0 -p udp --dport 51413 -j DROP
iptables -I INPUT ! -i tun0 -p udp --sport 51413 -j DROP

L'idéal serait de pouvoir dire que tout ce qui sort ou entre pour
l'application transmission-gtk doit passer par tun0, mais je ne suis pas
sur que ce soit possible.



Un filtre de paquets comme iptables n'est pas vraiment conçu pour cela.
Si le processus tourne avec un UID ou un GID spécifique, la
correspondance "owner" permet d'identifier les paquets émis localement
avec cet UID ou GID, mais pas les paquets reçus.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: https://lists.debian.org/