Jump to content

Archived

This topic is now archived and is closed to further replies.

Mephisto

[résolu] avis ipfw : je me rabat sur pf...

Recommended Posts

Bonjour,

Pour ceux qui ne suivent pas la section Linux/Unix, je suis actuellement en train de me monter une gate, sous mfsBSD.

Maintenant que tout commence à tourner, se pose la question du routage/firewall.<br><br>Avant de me lancer dans la doc de pf, j'aurais voulu commencer avec ipfw.

Dans la situation actuelle :

la gate et les clients peut ping des deux cotes

la gate et les clients resolvent des deux cotes

la gate peut se ssh des deux cotes

mais un client qui se ssh au-dela de la gate ne pourra pas se connecter :

en zieuttant logs, on voit qu'ipfw ne bloque rien de particulier (de la merde, udp, d'un NAS NetGear, au sujet duquel j'ai déjà passé un coup de gueule dans cette section...)

du cote du debug ssh, ca s'arrete apres avoir regarde dans ~/.ssh/ les id_dsa/rsa

donc, quatre lignes plus haut, on a bien le 'connection established'

mais la ligne qui devrait venir en dessous, celle ou l'on recoit 'SSH-x.x-OpenSSH_x.x', n'arrive jamais....

la conf :

rc.conf

defaultrouter="82.123.213.321"
dnsmasq_enable="YES"
firewall_enable="YES"
firewall_logging="YES"
firewall_script="/usr/local/etc/ipfw.rc"
gateway_enable="YES"
hostname="phi.faust-network"
ifconfig_bge0="DHCP"
ifconfig_bge1="inet 10.242.42.254 netmask 255.0.0.0"
natd_enable="YES"
natd_interface="bge0"
natd_flags="-f /etc/natd.conf"

natd.conf

unregistered_only
interface bge0
use_sockets
dynamic
punch_fw 2000:5

ipfw.rc

CMD="/sbin/ipfw -q"
PUBIF="bge0"
PRIVIF="bge1"
LOOP="lo0"
PUBNET=`/sbin/ifconfig $PUBIF | awk '/^[    	]*inet[ 	]*/{print $2}' | sed 's,\.[0-9]*$,.0/24,'` # (le net de mon itf publique, arrondie au /24)
PRIVNET=`/sbin/ifconfig $PRIVIF | awk '/^[      ]*inet[ 	]*/{print $2}' | awk -F '.' '{print $1 ".0.0.0/8" }'` # (le net de mon itf privé, arrondie au /8)
LONET="127.0.0.0/8"
RESTR0="10.0.0.0/8"
RESTR1="172.16.0.0/12"
RESTR2="192.168.0.0/16"

$CMD -f flush

$CMD add 1 allow ip from any to any via $LOOP
$CMD add 2 deny log ip from any to $LONET
$CMD add 3 deny log ip from any to any not verrevpath in via $PUBIF
$CMD add 4 deny log ip from $PRIVNET to any in via $PUBIF
$CMD add 5 deny log ip from $RESTR1 to any in via $PUBIF
$CMD add 6 deny log ip from $RESTR2 to any in via $PUBIF

$CMD add 50 divert natd ip from any to me in via $PUBIF
$CMD add 51 check-state

$CMD add 60 allow icmp from me to any setup keep-state
$CMD add 61 allow icmp from any to any keep-state
$CMD add 62 allow ip from any to me src-port 53
$CMD add 63 allow udp from any to any dst-port 67 in via $PRIVIF
$CMD add 64 allow icmp from $PRIVNET to any setup keep-state

$CMD add 100 allow tcp from any to me dst-port 22 in via $PUBIF setup keep-state
$CMD add 101 allow tcp from any to me dst-port 53 in via $PUBIF setup keep-state
$CMD add 102 allow udp from any to me dst-port 53 in via $PUBIF
$CMD add 103 allow tcp from any to me in via $PRIVIF setup keep-state
$CMD add 104 allow udp from any to me in via $PRIVIF

$CMD add 200 skipto 600 ip from $PRIVNET to any in via $PRIVIF setup keep-state
$CMD add 201 skipto 601 ip from $PRIVNET to any out via $PUBIF setup keep-state
$CMD add 202 skipto 602 ip from any to $PRIVNET in via $PUBIF setup keep-state
$CMD add 203 skipto 603 ip from any to $PRIVNET out via $PRIVIF setup keep-state

$CMD add 300 allow ip from me to any
$CMD add 400 deny log icmp from any to me
$CMD add 401 deny log ip from any to me dst-port 135
$CMD add 402 deny log ip from any to me dst-port 137-139
$CMD add 403 deny log ip from any to me dst-port 445
$CMD add 404 deny log ip from any to me dst-port 4665
$CMD add 405 allow tcp from any to any established
$CMD add 406 deny log ip from any to any

$CMD add 600 divert natd ip from $PRIVNET to any out via $PUBIF
$CMD add 601 divert natd ip from $PRIVNET to any in via $PRIVIF
$CMD add 602 divert natd ip from any to $PRIVNET in via $PUBIF
$CMD add 603 divert natd ip from any to $PRIVNET out via $PRIVIF
$CMD add 604 allow ip from any to any
$CMD add 999 deny log ip from any to any

(très largement repris d'un tutoriel pas très à jour)

est-ce que ca ne rappellerait pas quelque chose a quelqu'un ?

Share this post


Link to post
Share on other sites

Bonjour,

Je n'ai toujours pas trouvé de solution à ce sujet.

J'ai donc tenté ma chance sous pf.

Après avoir eu le même problème, j'ai trouvé ce qu'il manquait : le 'scrubs'.

Au final, je n'ai pas cherché quel est l'équivalent de scrubs sous ipfw.

J'ai besoin de deux fois moins de modules (ipfw, ipfw_nat, ipadvert, libalias remplacés par pf et pflog), un daemon en moins (natd), ...

Je vais rester là dessus.

La conf est la suivante :

ext_if="bge0"
int_if="bge1"
localnet = $int_if:network
emma="10.242.42.200"
alpha="10.42.42.42"
delta="10.42.42.44"
set skip on lo0
scrub in on $ext_if all fragment reassemble
nat on $ext_if from $localnet to any -> ($ext_if)
rdr on $ext_if inet proto tcp from any to ($ext_if) port 1101 -> $emma port 22
rdr on $ext_if inet proto tcp from any to ($ext_if) port 307 -> $emma port 80
rdr on $ext_if inet proto tcp from any to ($ext_if) port 1666 -> $alpha port 1666
rdr on $ext_if inet proto tcp from any to ($ext_if) port 1667 -> $delta port 22
rdr on $ext_if inet proto tcp from any to ($ext_if) port 1668 -> $alpha port 22
pass in log on $ext_if inet proto tcp from any to $ext_if port 22
pass in log on $ext_if inet proto tcp from any to $ext_if port 53
pass in log on $ext_if inet proto udp from any to $ext_if port 53
pass in log on $ext_if inet proto tcp from any to $ext_if port 1664
pass in log on $int_if inet proto tcp from any to any
pass in log on $int_if inet proto udp from any to any
block in log on $ext_if inet proto icmp from any to $ext_if

c'est ultra-minimaliste

j'étofferai en fonction des emmerdes...

ça tourne nikel. prochaine étape, IPV6...

Share this post


Link to post
Share on other sites

×
×
  • Create New...