##On fait du NAT
nat on $ext_if from $int_if:network to any -> $ext_if
## Et enfin, les regles de filtrage :
#On commence par tout bloquer
block all
#On laisse passer le trafic interne au réseau local
pass in on $int_if all
pass out on $int_if all
#On laisse passer les connexions SSH externe
pass in on $ext_if inet proto tcp from any to ($ext_if) port 22 flags
S/SA keep state
pass out on $ext_if proto tcp from $ext_if to any modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } from $ext_if to any keep state
==> Ce sont ces 2 dernières lignes que je ne comprend pas.
Elles permettent à tous les flux de sortir sans problème. Ma question
est : pourquoi ?
En particulier, pourqui c'est $ext_if que je dois mettre après le from,
et non int_if ?
Et question subsidiaire : si je veux ne permettre qu'une seule machine
de mon réseau à accèder au net, comment je l'indique ? Je pensais mettre
son IP après le from, mais apparemment, c'est pas ça :-(
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre
Salut
Alors une petite explication :
pass out on $ext_if proto tcp from $ext_if to any modulate state flags S/SA
Cette ligne autorise tout le trafic TCP a franchir le pare feu (a noter que l'option modulate state permet de renforcer les numeros de sequence initiaux des paquets TCP). On met cette ligne pour permettre la navigation web par exemple... On met $ext_if pour ne pas que les paquets soient bloqués par ta directive block all. Tu as dejà autorisé tout le trafic sortant et entrant sur ta $int_if (cf : pass in on $int_if all et pass out on $int_if all ). Il restait donc plus qu'a autoriser ce trafic sur $ext_if.
pass out on $ext_if proto { udp, icmp } from $ext_if to any keep state Même topo pour cette règle... Sauf que cette fois ci, on autorise les
protocoles udp et icmp. On conserve l'état afin de permettre les réponses (typiquement cela permet a une machine de ton réseau interne de pinguer un site web...)
Question subsidiaire... Si tu veux te montrer plus restrictif :
autorise = "{192.168.x.y}" Et ensuite : pass out on $ext_if proto tcp from $autorise to any modulate state flags S/SA pass out on $ext_if proto { udp, icmp } from $autorise to any keep state
Et voilou... Remarque que rien ne t'empeche d'etre plus genereux et de faire une liste : autorise = "{192.168.x.y, 192.168.a.b, ....}" Ca marche aussi.
J'espere que cela t'eclaire un peu plus...
A bientot.
Salut
Alors une petite explication :
pass out on $ext_if proto tcp from $ext_if to any modulate state
flags S/SA
Cette ligne autorise tout le trafic TCP a franchir le pare feu (a noter
que l'option modulate state permet de renforcer les numeros de sequence
initiaux des paquets TCP). On met cette ligne pour permettre la
navigation web par exemple... On met $ext_if pour ne pas que les paquets
soient bloqués par ta directive block all. Tu as dejà autorisé tout le
trafic sortant et entrant sur ta $int_if (cf : pass in on $int_if all et
pass out on $int_if all ). Il restait donc plus qu'a autoriser ce trafic
sur $ext_if.
pass out on $ext_if proto { udp, icmp } from $ext_if to any keep state
Même topo pour cette règle... Sauf que cette fois ci, on autorise les
protocoles udp et icmp. On conserve l'état afin de permettre les
réponses (typiquement cela permet a une machine de ton réseau interne de
pinguer un site web...)
Question subsidiaire...
Si tu veux te montrer plus restrictif :
autorise = "{192.168.x.y}"
Et ensuite :
pass out on $ext_if proto tcp from $autorise to any modulate state flags
S/SA
pass out on $ext_if proto { udp, icmp } from $autorise to any keep state
Et voilou...
Remarque que rien ne t'empeche d'etre plus genereux et de faire une
liste : autorise = "{192.168.x.y, 192.168.a.b, ....}"
Ca marche aussi.
pass out on $ext_if proto tcp from $ext_if to any modulate state flags S/SA
Cette ligne autorise tout le trafic TCP a franchir le pare feu (a noter que l'option modulate state permet de renforcer les numeros de sequence initiaux des paquets TCP). On met cette ligne pour permettre la navigation web par exemple... On met $ext_if pour ne pas que les paquets soient bloqués par ta directive block all. Tu as dejà autorisé tout le trafic sortant et entrant sur ta $int_if (cf : pass in on $int_if all et pass out on $int_if all ). Il restait donc plus qu'a autoriser ce trafic sur $ext_if.
pass out on $ext_if proto { udp, icmp } from $ext_if to any keep state Même topo pour cette règle... Sauf que cette fois ci, on autorise les
protocoles udp et icmp. On conserve l'état afin de permettre les réponses (typiquement cela permet a une machine de ton réseau interne de pinguer un site web...)
Question subsidiaire... Si tu veux te montrer plus restrictif :
autorise = "{192.168.x.y}" Et ensuite : pass out on $ext_if proto tcp from $autorise to any modulate state flags S/SA pass out on $ext_if proto { udp, icmp } from $autorise to any keep state
Et voilou... Remarque que rien ne t'empeche d'etre plus genereux et de faire une liste : autorise = "{192.168.x.y, 192.168.a.b, ....}" Ca marche aussi.
J'espere que cela t'eclaire un peu plus...
A bientot.
Pierre
Re
Pour la question subsidiaire, je me suis un peu emballé... Il faut connaitre la règle suivante : NAT puis filtrage. Autrement dit, OpenBSD fait la traduction d'adresse puis filtre apres. C'est pourquoi, ce que j'ai dit avant ne marche pas... Plusieurs solutions : + Ne "natter" qu'un seul PC (celui qui a un accés...) + Agir avant le "nattage" c'est à dire sur ton interface interne. Tu bloques tout le trafic et tu n'autorises que le bon PC a sortir de cette carte... + ... je sais pas.. :-)
En esperant que ca t'aide..
A+
Re
Pour la question subsidiaire, je me suis un peu emballé...
Il faut connaitre la règle suivante : NAT puis filtrage.
Autrement dit, OpenBSD fait la traduction d'adresse puis filtre apres.
C'est pourquoi, ce que j'ai dit avant ne marche pas...
Plusieurs solutions :
+ Ne "natter" qu'un seul PC (celui qui a un accés...)
+ Agir avant le "nattage" c'est à dire sur ton interface interne. Tu
bloques tout le trafic et tu n'autorises que le bon PC a sortir
de cette carte...
+ ... je sais pas.. :-)
Pour la question subsidiaire, je me suis un peu emballé... Il faut connaitre la règle suivante : NAT puis filtrage. Autrement dit, OpenBSD fait la traduction d'adresse puis filtre apres. C'est pourquoi, ce que j'ai dit avant ne marche pas... Plusieurs solutions : + Ne "natter" qu'un seul PC (celui qui a un accés...) + Agir avant le "nattage" c'est à dire sur ton interface interne. Tu bloques tout le trafic et tu n'autorises que le bon PC a sortir de cette carte... + ... je sais pas.. :-)