/ Accueil
/ Logiciels libres, et autres créations plus modestes
| Ecrire
Tout ce qui suit commence à dater un peu, mais doit rester valable pour une connexion non dégroupée avec le modem sagem. Depuis ma ligne a été dégroupée et je suis l'heureux utilisateur d'une freebox. Je la connecte en ethernet et continue de router et filtrer mon traffic réseau sur le même principe. Le réseau est également en cours d'évolution vers le Wifi. Cette page sera mise à jour quand ceci sera complètement terminé (c'est à dire quand j'aurai réussi à faire un vrai point d'accès).
Le firewall est en fait mon ancien PC recyclé :
Le tout est posé en vrac dans une boite en carton, sans clavier sans écran
Le système est un Linux From Scratch doté d'un noyau 2.4.20.
Pour le filtrage des paquets IP, activer netfilter et l'ensemble des modules associés : suivi de session, suivi ftp, nat, masquerade... Patcher le noyau selon les recommandations netfilter.
# # Networking options # CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set # CONFIG_NETLINK_DEV is not set CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set # CONFIG_FILTER is not set CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_ROUTE_FWMARK=y CONFIG_IP_ROUTE_NAT=y CONFIG_IP_ROUTE_MULTIPATH=y CONFIG_IP_ROUTE_TOS=y CONFIG_IP_ROUTE_VERBOSE=y CONFIG_IP_ROUTE_LARGE_TABLES=y # CONFIG_IP_PNP is not set CONFIG_NET_IPIP=m CONFIG_NET_IPGRE=m CONFIG_NET_IPGRE_BROADCAST=y # CONFIG_IP_MROUTE is not set # CONFIG_INET_ECN is not set # CONFIG_SYN_COOKIES is not set # # IP: Netfilter Configuration # CONFIG_IP_NF_CONNTRACK=m CONFIG_IP_NF_FTP=m CONFIG_IP_NF_IRC=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_MATCH_LIMIT=m CONFIG_IP_NF_MATCH_MAC=m CONFIG_IP_NF_MATCH_PKTTYPE=m CONFIG_IP_NF_MATCH_MARK=m CONFIG_IP_NF_MATCH_MULTIPORT=m CONFIG_IP_NF_MATCH_TOS=m CONFIG_IP_NF_MATCH_ECN=m CONFIG_IP_NF_MATCH_DSCP=m CONFIG_IP_NF_MATCH_AH_ESP=m CONFIG_IP_NF_MATCH_LENGTH=m CONFIG_IP_NF_MATCH_TTL=m CONFIG_IP_NF_MATCH_TCPMSS=m CONFIG_IP_NF_MATCH_HELPER=m CONFIG_IP_NF_MATCH_STATE=m CONFIG_IP_NF_MATCH_CONNTRACK=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_REJECT=m CONFIG_IP_NF_NAT=m CONFIG_IP_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_NAT_LOCAL=y CONFIG_IP_NF_NAT_IRC=m CONFIG_IP_NF_NAT_FTP=m CONFIG_IP_NF_MANGLE=m CONFIG_IP_NF_TARGET_TOS=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_DSCP=m CONFIG_IP_NF_TARGET_MARK=m CONFIG_IP_NF_TARGET_LOG=m CONFIG_IP_NF_TARGET_ULOG=m CONFIG_IP_NF_TARGET_TCPMSS=m CONFIG_IP_NF_ARPTABLES=m CONFIG_IP_NF_ARPFILTER=m # CONFIG_IP_NF_COMPAT_IPCHAINS is not set # CONFIG_IP_NF_COMPAT_IPFWADM is not set # CONFIG_VLAN_8021Q is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set
Le modem sagem nécessite le support USB, avec support du système de fichier usbdev. Le noyau accèdera au modem via des interfaces standard de périphérique d'entrée série.
# # Input core support # CONFIG_INPUT=y # # Character devices # CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y # CONFIG_SERIAL_EXTENDED is not set CONFIG_SERIAL_NONSTANDARD=y # CONFIG_COMPUTONE is not set # CONFIG_ROCKETPORT is not set # [...] nothing set in this section # CONFIG_RIO is not set # CONFIG_STALDRV is not set CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 # File systems CONFIG_PROC_FS=y CONFIG_DEVPTS_FS=y # # USB support # CONFIG_USB=y # CONFIG_USB_DEBUG is not set CONFIG_USB_DEVICEFS=y # CONFIG_USB_BANDWIDTH is not set # CONFIG_USB_LONG_TIMEOUT is not set # CONFIG_USB_EHCI_HCD is not set CONFIG_USB_UHCI_ALT=y # CONFIG_USB_OHCI is not set # CONFIG_USB_AUDIO is not set # [...] # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set CONFIG_USB_ACM=y # CONFIG_USB_PRINTER is not set # CONFIG_USB_HID is not set # [...]
Créer s'il n'existe pas le répertoire /dev/pts
Vérifier que le fichier /etc/fstab contient les montages de proc pts et usbdev :
none /dev/pts devpts gid=4,mode=620 0 0 none /proc proc defaults 0 0 usbdevfs /proc/bus/usb usbdevfs defaults 0 0
Le but du firewall est de faire disparaître tout ce qui vient de l'extérieur qui n'a pas été sollicité. Il protège ainsi des malveillance du dehors mais pas des imprudences du dedans !
modprobe ip_tables modprobe iptable_filter modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ipt_state modprobe iptable_nat modprobe ip_nat_ftp modprobe ipt_MASQUERADE modprobe ipt_LOG modprobe ipt_REJECT
IF_PRIV=eth0 # nom de l'interface connectée au réseau privé IF_GW=ppp+ # nom de l'interface réseau connectée au reste du monde NET_PRIV=10.0.0.0/8 # masque du reseau interne iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -i $IF_PRIV -j ACCEPT iptables -A OUTPUT -o $IF_PRIV -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state NEW -i ! $IF_GW -j ACCEPT iptables -t nat -A POSTROUTING -o $IF_GW -j MASQUERADE iptables -A FORWARD -i $IF_PRIV -j ACCEPT iptables -A INPUT -i $IF_GW -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p all -s localhost -i $IF_GW -j DROP iptables -A INPUT -p all -s 10.0.0.0/8 -i $IF_GW -j DROP
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP
echo 2 > /proc/sys/net/ipv4/ip_dynaddr echo 0 > /proc/sys/net/ipv4/tcp_ecn for f in /proc/sys/net/ipv4/conf/*/rp_filter do echo 1 > $f done echo 1 > /proc/sys/net/ipv4/ip_forward
Ceci ne protège évidemment pas de tout puisque toutes les connexions en provenance du réseau interne sont relayées vers l'extérieur. Les vers et autre chevaux de Troyes ne sont donc pas affectés outre mesure à partir du moment où ils ont réussi à s'infiltrer jusqu'à l'intérieur (ce qui n'est pas très difficile quand ils exploitent les fonctionnalités douteuses de certains navigateurs et messageries). Le firewall n'est pas la protection absolue : ce n'est qu'un minimum.
Le driver le plus avancé est maintenant disponible ici :
http://eagle-usb.fr.st/.
J'utilise actuellement la version 1.0.4. Suivre les instruction
d'installation à la lettre, cela fonctionne même avec ma LFS.
Attention toutefois, un LFS ne dispose pas en général de la
commande which nécessaire pour le make install. Un simple
script faisant office de pseudo alias sur type -p fera
l'affaire (voir
blfs pour plus de détail).
Enfin, une LFS ne dispose pas de tous les mécanismes hotplug de l'USB
(normalement aucun problème pour l'ajouter) mais ce n'est pas un
problème : le driver, le firmware, voire la puce du modem présentent
un bug. Il y a des problèmes au démarrage selon les délais de mise
en route (voire doc du driver pour plus de détail). Mais comme
il s'agit pour moi d'une installation fixe, je n'ai aucun
besoin du hotplug. On fait le premier démarrage à la main pour
tester l'installation et plus tard, tout cela sera pris en charge
par un script au démarrage.
# chargement du driver modprobe adiusbadsl # init modem : chargement code DSP adictrl -d # démarrer la connexion startadsl
Sur le site du driver, un script de reconnexion automatique est proposé. Il repose sur le mode respawn dans /etc/inittab. Je ne suis pas fan de ce système. Il nécessite de changer de niveau d'exécution si on souhaite temporairement arrêter le service.
A mon habitude j'ai écris un script de démarrage à placer dans /etc/rc.d/init.d qui accepte les paramètres start et stop. ce script initialise le modem est lance le démon de maintient de connexion (il s'agit d'un simple script). Il écoute des commandes à l'aide d'un pipe nommé. Ceci permet à plusieurs processus (et donc plusieurs scripts) de lui envoyer des notification d'évènement. /etc/ppp/ip-up notifie la réussite ou non de la connexion. /etc/ppp/ip-down notifie la déconnexion. En fonction de son état et des évènements reçus, le démon peut décider d'un reset du modem avant de tenter une nouvelle connexion.
Depuis l'emploi du driver eagle-usb-1.0.4, la connexion est enfin proche de la perfection : il n'est maintenant pas rare de rester connecté vingt-quatre heures sans interruptions.
Pour ceux qui auraient malgré tout encore quelques difficultés, voici quelques points à vérifier :
mis à jour le : 15/04/2006 - 21:58