ph11 wrote on 23. Dec 2007 at 16:57:
Je n'ai pas encore bien saisi la logique de pf.
Par exemple, j'avais mis dans mon pf.conf ceci:
Code:ext_if="rl0"
ports={ 21, 22, 80, 110, 443, 1863 }
scrub in all
set skip on lo0
block in log all
pass in quick on $ext_if inet proto tcp from any to any port $ports
Et pas moyen de me connecter. Alors, j'ai appliqué les exemples de pf.conf:
Code:block in log all
pass in on $ext_if proto tcp from any to $ext_if port 22 keep state
pass out on $ext_if proto { tcp, udp } all keep state
pass in on $ext_if proto { tcp, udp } from any to any port 80 keep state
Et là ça fonctionnait. Et en commentant les lignes "pass in...port 22..." et "pass in...port 80...", cela fonctionne toujours.
Étant donné que je n'ai pas mis de "block out all" comment ça se fait que la ligne commençant par "pass out" est nécessaire pour pouvoir aller sur le net? Je croyais que seules les lignes en "pass in" étaient suffisantes pour déclarer les exceptions dans pf, et aller sur le net.
Il faut bien compendre qui se connect à quoi pour mettre en place les régles de firewaling.
La différence entre tes deux config c'est le "keep state", explication :
tu veux te connecter à un site web :
Ta machine,port 2045 (par exemple) -> fug-fr.org port 80
Cela veut dire que tu doit autoriser les packets a "sortir" vers le port 80 et les autoriser a entré sur le port de départ (d'ou l'interet du keep state) cela donne une regle du genre :
Code:block in log all
pass out on $ext_if proto tcp from any to any port 80 keep state
Si tu ne mets pas le "keep state" ta machine laisse sortir le packet mais n'autorise pas la réponse (à cause du block in log). (Ce qui est un peu dommage)
Après ta première config, est une config serveur (c'est toi le serveur Web etc...) et si j'ai bien compris c'est plutot le contraire.
En terme de sécurité, il vaut mieux tout bloquer et n'autorisé que ce dont tu as besoins que le contraire, c'est plus facile à controler. Donc je verrai bien une config dans ce genre :
Code:ext_if="rl0"
ports={ 21, 22,25, 80, 110, 443,1863}
scrub in all
set skip on lo0
block log all # block tout dans tous les sens
pass out quick on $ext_if proto tcp from any to any port $ports keep state
pass out quick on $ext_if proto udp from any to any port 53 keep state #pour la resolution de nom
Après, je pense qu'il faut ajouter des pass in pour les ports concernant bittorrent.. Et verifier le fonctionnemenbt de ftp qui est toujours un bor..