Utiliser ou contribuer au projet IPcop
Matériel
Ce site traite de la version assez ancienne maintenant de IPCOp 1.4. Il tourne avec un kernel 2.4. Cette caractéristique permet d'utiliser de vieux matériels ayant largement dépassés le stade obsolète ! Même si un 486 pourrait faire l'affaire, je conseille quand même un minimum tel que Pentium 500Mhz avec 256 mo de ram.
1.4.21
Il semble entendu maintenant qu'avec la sortie de IPCop 2, la version 1.4 en restera ou elle en est depuis la dernière mise à jour (1.4.21). D'ores et déjà, il est impossible de construire un IPCop 1.4 avec le code disponible sur le cvs sourceforge.
J'ai donc décidé, puisque j'ai developpé le produit un moment, de sortir le patch permettant de passer en IPCop 1.4.23. La bande passante de mon site est faible, il n'y a pas d'ISO disponible.
1.4.22 / 1.4.23
Installation
Elle se fait simplement en quelques étapes. Conversez une sauvegarde ou au moins sauvegardez votre config.
- Ajouter à gpg.conf: (à faire si la commande suivante plante)
- Ajouter ma clé publique signant les patchs:
echo " -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.11 (GNU/Linux) mQGiBE6tl4URBADaTe725TiF3pyzIKjwarWGbvHBXY2zdvBGAdh+2tsivAPLUUhI r9O2yO7CxN6/CpIhUqv/evGYLg82DkEjIRcaV8BtoteQblXRIlDQrR+j7wQF2Zky 9my8Lb5Nxj3Yu83/3g/9KjZXPND5cMhuWqCZTC3558x0v+axOu1Hj7y/lwCgyypH NMxd6sQw9DpFmoJUhnHu1KUEALWaog20n3w6GQ2h2OISz8rsT1IS2Ilwyz57c6jC 5Bghfxemr/lT+oFoiEQc4bbjYE/AERwQzopv+ulWricOXKvSBUe3lMnzr2oz1aG+ F9RB8d2GwKUzoDs2Zrda1AEEZx6vfY9SGvowa0xlszA+ibXYCizLFeNlzyLrGcyy ZK9ABADN9Dg9hidJBqwiNKiCGD39w9joXnTdHiycIFVqR4BUgkEW1/Yo515keNgL cSzQNrOCFcHSF9eGNHjptsFUIpO0aNY1NnFNsx4R/zWCZDIUiCFSjAOs6neU6FNk f0bLqulFpMqMLYSx/oo4AeTZ8U7CtZlCH8QSjXhbiufZsCKwDLRURnJhbmNrIEJv dXJkb25uZWMgKGh0dHA6Ly9mcmFuY2s3OC5hdGguY3ggdXBkYXRlIGlwY29wIDEu NC54KSA8ZmJvdXJkb25uZWNAY2hlei5jb20+iGIEExECACIFAk6tl4UCGwMGCwkI BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEMAQog6Nr5t9CTIAnjvmG8MZk2hbZ/qo 2q5GAoJLY3fNAKCRNHRgAMsBN73H53gzO0RjZqO51A== =rHmh -----END PGP PUBLIC KEY BLOCK----- " > key.txt gpg --import key.txt rm key.txt gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 1024D/4A3BFD9E 2003-10-03 uid IPCop Development Group (http://www.ipcop.org/)pub 1024D/8DAF9B7D 2011-10-30 uid Franck Bourdonnec (http://franck78.ath.cx update ipcop 1.4.x) - Télécharger le patch 1.4.22, md5sum = aae56f70faff85ae8dfd6d7b0b1eb505, installer.
- Télécharger le patch 1.4.23, md5sum = b59ea51ad8e1985cde9bc150ceede656, installer, redémarrez.
vi /root/.gnupg/gpg.conf
allow-non-selfsigned-uid
Comment est fabriqué le patch
La construction complète de l'IPCop est aujourd'hui quasiment impossible. J'entend par là, la célèbre toolchain. qui s'accomode très mal avec les kernels/distri récentes.
J'ai donc préparer une machine virtuelle 32bits, une classique ubuntu 11.10 avec compilateur et
autres outils. Puis la fameuse ligne cvs
cvs -z3 -d:pserver:anonymous@ipcop.cvs.sourceforge.net:/cvsroot/ipcop co -r IPCOP_v1_4_0 ipcop
Téléchargez aussi le paquet contenant presque les bons sources, a extraire dans le dossier cache.
Ensuite, lisez le site officiel !
Les changements principaux
- Kernel 2.4.37 patchlevel 11, le dernier de la série 2.4
- Squid 2.6 stable23, dernier de la série
- rp-pppoe 3.10
- ntp4, patched pour CVE-2009-3563
- pptp 1.7.2
- Mise à jour de driver réseau spécifiques.
- Snort 2.8.6.1 avec réparation du système d'upload des règles VRT.
Détails du patch
Le fichier patch complet permet de réparer la compilation d'IPCop à partir du CVS.
Nécessaire pour compiler dans une machine virtuelle (libvirt+kvm). Pas vraiment investigué.
Index: lfs/binutils =================================================================== RCS file: /cvsroot/ipcop/ipcop/lfs/binutils,v retrieving revision 1.4.2.5 diff -r1.4.2.5 binutils 35c35 < VER = 2.15.90.0.3 --- > VER = 2.21.1 39c39 < DL_FROM = $(URL_KERNEL)/linux/devel/binutils --- > DL_FROM = http://ftp.gnu.org/gun/binutils 76c76 < $(DL_FILE)_MD5 = 1c1af0064ebd3d7bd99905874656a21e --- > $(DL_FILE)_MD5 = bde820eac53fa3a8d8696667418557ad 108,109c108,109 < cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/binutils-2.15-allow-gcc-4.0.patch < cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/binutils-2.15-as_needed.patch --- > #cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/binutils-2.15-allow-gcc-4.0.patch > #cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/binutils-2.15-as_needed.patch-
De nombreux Makefile testent des versions 2.2 ou 2.4 ou 2.6 du kernel. La nouvelle version 3.0 qui peut survenir en environnement virtuel est masquée par un 2.4 !
Index: lfs/coreutils =================================================================== RCS file: /cvsroot/ipcop/ipcop/lfs/coreutils,v retrieving revision 1.5.2.9 diff -r1.5.2.9 coreutils 119c119 < echo '/bin/uname.bak $$* | sed 's/i.86/$(MACHINE)/g'' >> /bin/uname --- > echo '/bin/uname.bak $$* | sed -e 's/3\.0/2.4/' -e 's/i.86/$(MACHINE)/g'' >> /bin/uname -
Changement de directory.
Index: lfs/iana-etc =================================================================== RCS file: /cvsroot/ipcop/ipcop/lfs/iana-etc,v retrieving revision 1.1.2.8 diff -r1.1.2.8 iana-etc 39c39 < DL_FROM = http://www.sethwklein.net/projects/iana-etc/downloads --- > DL_FROM = http://www.sethwklein.net -
Le patch 1.4.22 programmé en 2009 intégrait le patchlevel .7 porté à .11 depuis. Plus grave, l'arborescence 2.4 a totalement disparu de la source officielle.
Index: lfs/linux =================================================================== RCS file: /cvsroot/ipcop/ipcop/lfs/linux,v retrieving revision 1.42.2.111 diff -r1.42.2.111 linux 36c36 < PATCHLEVEL = 2.4.37.7 --- > PATCHLEVEL = 2.4.37.11 39,40c39,40 < DL_FILE = $(THISAPP).tar.gz < DL_FROM = $(URL_KERNEL)/linux/kernel/v2.4 --- > DL_FILE = $(THISAPP).tar.bz2 > DL_FROM = ftp://ftp.southcom.com.au/kernel/v2.4 90,91c90,91 < $(DL_FILE)_MD5 = 8156d7a356c2eead90c88b4b01a080c7 < patch-$(PATCHLEVEL).bz2_MD5 = 3bcc4f95a23d9016d09a5713fdf18e9f --- > $(DL_FILE)_MD5 = e4197b25bfddacee61490921c885b2ec > patch-$(PATCHLEVEL).bz2_MD5 = 794728a45ee76c6df9a0bc5a33798ee4 127c127 < @rm -rf $(DIR_APP) $(DIR_SRC)/linux && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) --- > @rm -rf $(DIR_APP) $(DIR_SRC)/linux && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -
Version encore disponible en téléchargement, la dernière 2.8.
Index: lfs/snort =================================================================== RCS file: /cvsroot/ipcop/ipcop/lfs/snort,v retrieving revision 1.6.2.31 diff -r1.6.2.31 snort 35c35 < VER = 2.8.5.2 --- > VER = 2.8.6.1 39c39 < DL_FROM = http://dl.snort.org/snort-current --- > DL_FROM = http://brakertech.com 51c51 < $(DL_FILE)_MD5 = e6a8bc5aa1ebe4d2100533d7709c4a9e --- > $(DL_FILE)_MD5 = b1119396a32e9df0d80404e4b6c49166 -
Intégration de la dernière stable 2.6
Index: lfs/squid =================================================================== RCS file: /cvsroot/ipcop/ipcop/lfs/squid,v retrieving revision 1.4.2.34 diff -r1.4.2.34 squid 35c35 < VER = 2.6.STABLE22 --- > VER = 2.6.STABLE23 51c51 < $(DL_FILE)_MD5 = a55e29ad5ac26074b2f4bd9c3228763b --- > $(DL_FILE)_MD5 = 71aa24580f8a538ad84037bf2ac6f078 -
Problème d'espace ou de calcul ! Secondaire mais bloquant.
Index: lfs/usb-key =================================================================== RCS file: /cvsroot/ipcop/ipcop/lfs/usb-key,v retrieving revision 1.1.2.4 diff -r1.1.2.4 usb-key 81c81 < dd bs=1024 count=$$((`du -k -s /install/cdrom | awk '{print $$1}'` + 64 )) \ --- > dd bs=1024 count=$$((`du -k -s /install/cdrom | awk '{print $$1}'` + 128 )) \ -
Correction du téléchargement des règles VRT.
Index: src/scripts/snortrules.pl =================================================================== RCS file: /cvsroot/ipcop/ipcop/src/scripts/Attic/snortrules.pl,v retrieving revision 1.1.2.5 diff -r1.1.2.5 snortrules.pl 54,57c54,61 < my $rulesbranch="2.8"; # version should match snort branch version < my $VRTurl="http://www.snort.org/pub-bin/oinkmaster.cgi/$snortsettings{'OINKCODE'}/snortrules-snapshot"; < my %urls= ('subscripted' => "$VRTurl-${rulesbranch}_s.tar.gz", < 'registered' => "$VRTurl-${rulesbranch}.tar.gz"); --- > my %urls= ('subscripted' => > "http://www.snort.org/sub-rules/snortrules-snapshot-2861.tar.gz/$snortsettings{'OINKCODE'}", > 'registered' => > "http://www.snort.org/reg-rules/snortrules-snapshot-2861.tar.gz/$snortsettings{'OINKCODE'}" > ); > > my $url_dl_page= "http://dl.snort.org/snort-rules"; > 85c89 < $snorttags{'MD5PROBEVALUE'}=&getmd5($urls{$snortsettings{'RULESTYPE'}}); --- > $snorttags{'MD5PROBEVALUE'}=&getmd5($snortsettings{'RULESTYPE'}); 109,110d112 < # Retrieve MD5 sum from $url.md5 file < my $url=shift; 112c114,130 < my $md5buf = &geturl("$url.md5"); --- > my $md5buf = &geturl("$url_dl_page"); > return undef unless $md5buf; > > my $regtype = shift; > $regtype = 'subscriber' if ($regtype eq 'subscripted'); #fix bad naning choice > > my $file="/tmp/down$$.tmp"; > open (REP,">$file"); > print REP $md5buf->content; > close (REP); > $md5 = `sed -e '/class="snort-downloads $regtype"/,/class="snort-downloads"/!d' -e' /Snort v2\.8\.6/,//!d' -e '/download.*show_md5/!d' $file`; > unlink $file; > #we have now : MD5 > #and we dl from "http://www.snort.org/downloads/????/show_md5", > #with ???? replaced with actual value! > $md5 =~ /(down.*md5)/; > $md5buf = &geturl("http://www.snort.org/$1"); 122c140 < my $md5 = $md5buf->content; --- > $md5 = $md5buf->content; 124c142 < return substr($md5,0,32); #md5 is 32 chars (remove trailing spaces or newline) --- > return substr($md5,1,32); #md5 is 32 chars (remove quote trailing spaces or newline) 141c159 < $md5 = &getmd5($url); --- > $md5 = &getmd5($snortsettings{'RULESTYPE'}); 167c185 < $snorttags{'MESSAGE'} .= "$Lang::tr{'invalid md5sum'} $parts[-1]"; --- > $snorttags{'MESSAGE'} .= "$Lang::tr{'invalid md5sum'} $parts[-2]"; -
Description des changements apportés chaque patch.
Index: updates/1.4.22/information =================================================================== RCS file: /cvsroot/ipcop/ipcop/updates/1.4.22/Attic/information,v retrieving revision 1.1.2.47 diff -r1.1.2.47 information 1c1 < 022|1.4.22 update|linux-2.4.37, ahci module fixed.
Upgrade to vendor version bnx2-1.8.2b, r8168-8.014, r8169-6.011, tg3-3.99k, velocityget-1.36. Update ntp to 4.2.4p7, patched for CVE-2009-3563, pptp to 1.7.2, rp-pppoe to 3.10, squid to 2.6.STABLE22, tzdata to 2011a.
Add r8168, mcs7830 drivers.
Fix /var/log/squid/access.log with flash. Fix mmap_min_addr typo in /etc/sysctl.conf.
Translation fixes and updates (bg, bz, de, en, fa, nl).
Add dyndns provider (tiggerswelt.net).
No need to reboot before installing 1.4.23 update.|2011-01-dd --- > 022|1.4.22 update|linux-2.4.37-11 (the last one), ahci module fixed.
Upgrade to vendor version bnx2-1.8.2b, r8168-8.014, r8169-6.011, tg3-3.99k, velocityget-1.36. Update ntp to 4.2.4p7, patched for CVE-2009-3563, pptp to 1.7.2, rp-pppoe to 3.10, squid to 2.6.STABLE23, tzdata to 2011l.
Add r8168, mcs7830 drivers.
Fix /var/log/squid/access.log with flash. Fix mmap_min_addr typo in /etc/sysctl.conf.
Translation fixes and updates (bg, bz, de, en, fa, nl).
Add dyndns provider (tiggerswelt.net).
No need to reboot before installing 1.4.23 update.|2011-11-01 Index: updates/1.4.23/information =================================================================== RCS file: /cvsroot/ipcop/ipcop/updates/1.4.23/Attic/information,v retrieving revision 1.1.2.6 diff -r1.1.2.6 information 1c1 < 023|1.4.23 update|linux-2.4.37 second part.
Upgrade snort to 2.8.5.2.
Reboot after 1.4.22 and 1.4.23 updates have been installed to use the new kernel.|2010-02-dd --- > 023|1.4.23 update|linux-2.4.37-11 second part.
Upgrade snort to 2.8.6.1
Reboot after 1.4.22 and 1.4.23 updates have been installed to use the new kernel.|2011-11-01 -
Les autres fichiers modifiés sont de la cuisine interne qui indique quoi mettre dans les fichiers de patches.
rc.firewall.local
Ce script complète les règles de filtrage de IPCop en éliminant les sources IP indésirables. Malgré la pénurie
annoncée d'IP V4, quelques numéros de réseaux (range) ne peuvent pas provenir d'internet (consulter l'
IANA).
Placer rc.firewall.local
dans /etc/rc.d sur votre IPCop.
Déplacez "-i $EXTERNAL" selon votre numéro de réseau GREEN (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16) !
La restriction est réduite pour laisser passer votre réseau par les cartes non RED.
De temps à autre, de nouveaux réseaux sont libérés. Pensez à corriger la liste si certains sites ne fonctionnent plus.
Addon Calamaris
L'addon Calamaris compléte Calamaris en l'appelant comme une page cgi d'IPCop et aussi à travers cron. Pur exercice pour s'essayer à Perl. Calamaris produit les pages journaliéres et hebdos de ce style :
- Statistiques journalière de Squid (page exemple du 14 mars 2004)
- Statistiques hebdomadaire de Squid
- changelog
Installation
Dans un répertoire temporaire sur la machine ipcop
#>tar -xzf calamaris-1.0.tgz
#>./setup
Perte clavier et écran
Depuis quelques versions (1.4.11?), IPCop perd clavier et écran particulièrement quand un KVM (switch écran) est en jeu.
Ce module kernel permet de rendre vie à la console. Connectez-vous en ssh
pour entrer la commande
#> insmod -f pckbd_resetcontroller.o
Le problème semble atténué à partir de IPCop 1.4.21. Cela se produit moins souvent. Notez le -f pour
forcer le warning à propos de la version kernel. Il faudrait que je recompile tout.
L'addon SquidGuard 1.4.2
SquidGuard permet de filtrer les adresses de sites douteuses selon votre choix en les remplaçant par une page explicative. Une variante traite les pages de publicité et renvoie une petite image au lieu de la pub. Super efficace.
L'addon SquidGuard est une interfaçe d'administration de SquidGuard adaptée à
IPCop 1.4.
L'interface est en français/english/deutsch/dutch/russian/italian/chinois
et utilise la
blackliste
de l'université de
Toulouse.
Elle ajoute deux listes locales aisément modifiables:
'whitelist' et 'blacklist' dont le contenu est prioritaire sur les listes normales.
Cette méthode complète efficacement la mise à jour automatique.
Téléchargement
| Addon avec la blackliste | ||
|---|---|---|
| chez moi (lent) | mirroir (rapide) | control |
| 1.4.2a | 1.4.2a | md5 |
| 1.4.1c | 1.4.1c | md5 |
Installation
Dans un répertoire temporaire sur la machine ipcop
#>tar -xzf squidGuard-x.y.z.tgz
#>./setup
Documentation
La documentation de l'addon est disponible en français. Vous pouvez la traduire et votre travail sera intégré à l'addon.
Traductions
Traduisez pour les autres. Vous connaissez une autre langue que celles listées ici ? Prenez un modèle et envoyez moi votre traduction. J'intégrerais votre travail dans l'addon. Pensez à choisir le codage UTF-8 et aux fins de lignes 'unix'.
| français | english | deutsch |
| dutch | russian | italian |
| portuguese | chineese traditional | chineese simplified |
La Blackliste
Il s'agit en fait de plusieurs listes correspondant à une catégorie spécifique (sexe, drogue,
jeux, etc...). Pour faciliter la vie de l'administrateur, chaque catégorie est succintement
décrite dans autant de langues que possible. Vous êtes invités à compléter les traductions manquantes !
Envoyer vos correctifs à Fabrice Prigent, université de Toulouse.
Exemple d'une ajout récent
NAME: arjel
DEFAULT_TYPE: black
SOURCE: http://squidguard.univ-tlse1.fr
DESC EN: ARJEL which is a french certification authority for gambling sites
DESC FR: Sites de pari en ligne certifies par l ARJEL
NAME EN: arjel
NAME FR: arjel
NAME IT: arjel <- à traduire si possible
NAME NL: arjel
NAME DE: arjel
DESC XX: <- à ajouter
Le fichier contenant les descriptions se trouve toujours dans le zip de Toulouse. Son nom est global_usage




















