Bonjour a tous,
Je suis sur un reseau ayant deux plage d’adresses :
192.168.0.0 pour tout ce qui est RJ45
10.3.2.0 pour tout ce qui est wifi.
Mon routeur (10.3.2.1/192.168.0.1
Ma machine debian : (192.168.0.254/10.3.2.254)
Un proxy squid en mode transparent (le routeur est derrière la patte 10.3.2.254)
Un serveur samba, accessible seulement par les machines RJ45.
Une base de donnée FIREBIRD accessible à tous.
Je lui fait aussi jouer le rôle de firewall :
Mes utilisateurs :
Utilisateur Wifi invités passant à travers le proxy pour l’acces WEB
Utilisateur referencé en wifi sans proxy pour le web uniquement
Utilisateur RJ45 pour le WEB uniquement
Utilisateur RJ45 pour un acces a tout (Web, samba, firebird, matériel …).
Mon soucis est de filtrer ces divers utilisateurs de facon transparente (pas d’authentification).
Pour les identifier je ne vois que les adresses mac.
J’ai donc fait un script iptables. Mais je bloque sur les adresses mac : j’arrive a crerr un tableau de ces adresses, a jouer le script, les adresses mac sont bien prisent en compte par iptables mais je ne parvient pas a bipasser le proxy.
J’en suis a marquer les paquets, et utiliser iprules (sympa, je ne connaissais pas, je decouvre).
Voila voila, je ne pense pas que cela soit bien violent, mais je viens d’y passer 3 heures et la je ne vois plus rien …
Voici mon script :
#on libere tout :
iptables -F
iptables -X
#VARIABLES POUR LES REGLES
MAC_ADRESSE=“00:12:F0:18:1A:E6 00:1A:73:86:AB:93”
on ferme d’abord tout en entrée
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
Nous faisons de même avec toutes les autres tables,
à savoir “nat” et “mangle”, mais en les faisant pointer
par défaut sur ACCEPT. Ca ne pose pas de problèmes
puisque tout est bloqué au niveau “filter”
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
#on accept les interfaces lo eth0 et eth1
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
on active le routage
echo 1 >/proc/sys/net/ipv4/ip_forward
#Translation d’adresse pour tout ce qui traverse la passerelle.
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.3.2.0/24 -o eth1 -j MASQUERADE
Toutes les connexions qui sortent du LAN vers la passerelle
#ou du LAN vers le LAN
sont acceptées
iptables -A FORWARD -i eth0 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Seules les connexions déjà établies ou en relation avec
des connexions établies sont acceptées venant de la passerelle vers le LAN
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#Se protéger des scan de port
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#Se protéger contre le ping de la mort
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#Requete ICMP passent :
iptables -A INPUT -p icmp -m state --state RELATED -j ACCEPT
Autorisation des requêtes DNS locales pour la mise a jour du serveur dns
iptables -A OUTPUT -o eth1 -p udp --sport 1024: --dport 53 -m state --state ! INVALID -j ACCEPT
iptables -A INPUT -i eth1 -p udp --sport 53 --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
#ARRET DES REQUETE DE MSN ET LIVE MESSAGER
iptables -A FORWARD -p TCP --dport 1863 -j DROP
iptables -A FORWARD -o eth0 -d login.passport.net
iptables -A FORWARD -o eth0 -d loginnet.passport.com -j DROP
iptables -A FORWARD -o eth0 -d hotmail.com -j DROP
TEST MACHINES QUI ECHAPPENT A LA REGLE PROXY:
Traitement de la liste des adresses mac autorisée
for adr_mac in $MAC_ADRESSE ; do
#TEST#iptables -A INPUT -m state --state ! INVALID -m mac --mac-source $adr_mac -p tcp -m multiport --dport 80,110,25,20,21,443 -j ACCEPT;
#TEST#iptables -t nat -A PREROUTING -i eth1 -m mac --mac-source $adr_mac -p tcp -m multiport --dport 80,110,25,20,21,443 -j ROUTE --gw 10.3.2.1;
iptables -t mangle -A PREROUTING -i eth1 -m mac --mac-source $adr_mac -p tcp -m multiport --dport 80,110,25,20,21,443 -j MARK --set-mark 1
echo $adr_mac;
done
#Requete des routeurs WiFi :
iptables -t nat -A PREROUTING -i eth1 -s 10.3.2.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -s 10.3.2.0/24 -p tcp --dport 443 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -s 10.3.2.0/24 -p udp --dport 443 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -s 10.3.2.0/24 -p tcp --dport 110 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth1 -s 10.3.2.0/24 -p tcp --dport 25 -j REDIRECT --to-port 3128
#FireBird INFOLOG
iptables -A INPUT -m state --state ! INVALID -s 192.168.0.0/255.255.255.0 -p TCP --dport 3050 -j ACCEPT
#samba
iptables -A INPUT -m state --state ! INVALID -s 192.168.0.0/255.255.255.0 -p TCP --dport 137:139 -j ACCEPT
iptables -A INPUT -m state --state ! INVALID -s 192.168.0.0/255.255.255.0 -p UDP --dport 137:139 -j ACCEPT
iptables -A INPUT -m state --state ! INVALID -s 192.168.0.0/255.255.255.0 -p TCP --dport 445 -j ACCEPT
iptables -A INPUT -m state --state ! INVALID -s 192.168.0.0/255.255.255.0 -p UDP --dport 445 -j ACCEPT
#squid
iptables -A INPUT -m state --state ! INVALID -s 192.168.0.0/255.255.255.0 -p TCP --dport 3128 -j ACCEPT
iptables -A INPUT -m state --state ! INVALID -s 192.168.0.0/255.255.255.0 -p UDP --dport 3128 -j ACCEPT
#ssh
#iptables -A INPUT -m state --state NEW -p TCP --dport 22 -j ACCEPT
#Puis on rejette tout.
iptables -A INPUT -j DROP
##########################################################################################################
##########IPRULES
#*************************
Debut des definitions.
#-------------------------
clear
ip route flush cache
ip rule del fwmark 1
Regle de transmission aux bonnes tables de routages
ip rule add fwmark 1 table 1
ip route add default via 10.3.2.1 table 1
ip route flush ca