# [OpenVPN] Couper les connexions inutilisées (abandon)

## El_Goretto

Bonjour,

Aujourd hui, une petite question du style "comment faire pour...".

Je voudrais provoquer une timeout sur des connexions "stalled", de type tunnel VPN qui ne serait plus utilisé. Mon objectif est de sécuriser un peu plus le tunnel en provoquant son timeout au bout de X temps sans transfert de données.

(NB: je parle de "connexion", mais c'est un terme abusif, sans distinguer TCP ou UDP).

Le VPN (OpenVPN) a une fonction (--tls-timeout) qui permet de détecter une rupture de tunnel, mais ne permet pas de faire directement le timeout. Du coup je cherchais à faire combo du côté d'iptables pour lui faire couper véritablement la connexion, qui provoquerait ensuite ce timout OpenVPN. Mais je ne trouve pas vraiment de module iptables qui permettrait de dire "si pas plus de X paquets ou octects pendant X secs, alors drop". Ya bien limit, mais je crois qu'il fait l'inverse de ce que je cherche.

Je suis passé à côté de quelque chose d'évident?

----------

## El_Goretto

Bon, je pensais m'en sortir comme çà, ayant mesuré qu'une connexion samba inutilisée (ainsi que les routine OpenVPN de test de connexion) générait ~50 paquets en 1 minute (une consultation samba fait littéralement exploser le compteur):

```
$IPTABLES -A INPUT  -s $IP_SOURCE  -i $IF_LAN  -p tcp  --dport $P_VPN  -m state --state NEW  -j ACCEPT

$IPTABLES -A INPUT  -s $IP_SOURCE  -i $IF_LAN  -p tcp  --dport $P_VPN  -m state --state ESTABLISHED,RELATED -m limit ! --limit 60/minute -j REJECT

$IPTABLES -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
```

Mais malgré ce que dit la manpage:

 *Manpage iptables wrote:*   

> limit
> 
>        This module matches at a limited rate using a token bucket filter.
> 
>        A rule using this extension will match until this limit is reached
> ...

 

J'obtiens cette erreur à l'exécution du script iptables (que le "!" soit avant ou après "--limit"):

```
iptables v1.3.5: limit does not support invert
```

Argh, une idée?

----------

## geekounet

```
# emerge sys-freebsd/freebsd-pf
```

 :Razz: 

----------

## kopp

 *geekounet wrote:*   

> 
> 
> ```
> # emerge sys-freebsd/freebsd-pf
> ```
> ...

 

Encore une réponse utile pour faire savoir à ceux qui ne le sauraient pas encore que tu utilises Gentoo/FreeBSD ... Vu le nombre de fois où tu l'as déjà clamé, je pense que tout le monde est au courant maintenant.

Enfin, je dis ça, je dis rien.

----------

## geekounet

 *kopp wrote:*   

>  *geekounet wrote:*   
> 
> ```
> # emerge sys-freebsd/freebsd-pf
> ```
> ...

 

Non, juste pour dire (troller ?) que PF est meilleur qu'iptables  :Wink: 

----------

## kopp

 *geekounet wrote:*   

> Non, juste pour dire (troller ?) que PF est meilleur qu'iptables 

 

Troller est le mot. C'était pas du tout constructif comme réponse vu que pf ne s'utilise pas sous Linux, que je sache.

----------

## _droop_

Salut,

Si j'ai bien compris tu veux qu'au bout d'un certain temps la règle :

```
IPTABLES -A INPUT  -m state --state ESTABLISHED,RELATED
```

ne s'applique plus, afin de simuler un time out du client.

Peut être qu'en jouant sur le time out du "conntrack" on peut définir ce temps. (ca doit se trouvet dans /proc/sys/net mais j'ai la flemme de chercher). Après ca risque d'influencer les autres services...

Sinon j'ai aussi vu un patch iptables qui pourrait faire ceci (modifier le time out conntrack).

----------

## El_Goretto

Ouaip, effectivement, c'est moyen l'impact sur les autres services  :Smile: , surtout que je risque de laisser la machine en l'état passé cette semaine...

Merci quand même droop  :Smile: 

----------

## truc

http://openvpn.net/man-beta.html  openvpn-2.1

 *Quote:*   

> --inactive n [bytes] 
> 
> Causes OpenVPN to exit after n seconds of inactivity on the TUN/TAP device. The time length of inactivity is measured since the last incoming tunnel packet. 
> 
> If the optional bytes parameter is included, exit after n seconds of activity on tun/tap device produces a combined in/out byte count that is less than bytes. 
> ...

 

et pour openvpn-2.0.x, c'est la même chose sans l'optionnel argument [bytes]

Ca ne fait pas ce que tu veux ça?

----------

## El_Goretto

Arrgh, je l'avais pas vu cette option (je n'avais d'ailleurs pas vu ta réponse, les bermudes ont encore frappé). C'est ce que je cherchais mais je ne sais pas si j'aurais le temps de l'implémenter et de la valider d'ici ce soir...

Je travaille avec une "vieille" version d'OpenVPN marqué stable sur alpha, c'est peut etre pour çà que je ne l'ai pas repéré (mauvais foi? moi?  :Smile: )

En tout cas, en théorie, on considère le point comme résolu  :Smile: 

Merci truc (pour ton dévouement et ton PM  :Smile: ).

----------

## El_Goretto

Erf, çà marche...

Mais le client OpenVPN est trop malin et relance la connexion dès que le serveur la coupe.

Donc c'est pas encore çà.

----------

## truc

 *El_Goretto wrote:*   

> Erf, çà marche...
> 
> Mais le client OpenVPN est trop malin et relance la connexion dès que le serveur la coupe.
> 
> Donc c'est pas encore çà.

 

Et en mettant l'option chez le client également ça ne fait rien?   :Question: 

----------

## El_Goretto

Désolé, mais partant du principe de ne jamais faire confiance au client (parano, mais presque), je n'ai absolument pas pensé à voir si l'option pouvait se mettre sur le client...

Et surtout je devais "rendre" la machine ce soir, donc je n'ai pas eu le temps de creuser cet aspect qui n'était plus prioritaire.

Merci encore, pour la culture j'essaierai chez moi un jour ^^.

----------

