Amazing Kiwi's Blog

Aller au contenu | Aller au menu | Aller à la recherche

lundi, janvier 18 2010

Une forge sous FreeBSD

Introduction

Comme bapt, j'ai pour mes besoins personnels de mettre en place une forge sur mon OS préféré afin de dégager mon vieux truc sur une jail et quelques wrappers...

Redmine est donc une bonne alternative a tout ce qui trainne et en plus c'est en ruby (balle avec des branches dedans !).

Pas mal de composants sont sur les ports donc nous allons les utiliser port :

  • redmine : /usr/ports/www/redmine
  • mysql (ou pgsql... a vous de choisir)
  • ruby-mysql : /usr/ports/databases/ruby-mysql
  • thin : le serveur web du coma pour ruby : /usr/ports/www/rubygem-thin
  • le binding image magic : ruby-rmagick : /usr/ports/graphics/ruby-rmagick
  • subversion : /usr/ports/devel/subversion (git me gonflant par manque de doc et le bordel général de ce soft...)
  • apache2.2 : /usr/ports/www/apache22
  • lighttpd : /usr/ports/www/lighttpd
  • mod_perl : /usr/ports/www/mod_perl2 (pour svn pawah)

Pour l'installation des ports, c'est assez simple et je passe donc cette étape.

Après compilation de tous ces packages, il vous reste a configurer redmine, la base mysql, thin et le serveur SVN :p

Configuration de redmine

Il s'agit de prendre en gros ce qu'il y a dans le manuel d'install de redmine.

Créer la base SQL :

En ligne de commande ou via phpmyadmin :p

create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';

Configurer redmine

Dans /usr/local/www/redmine

cd config
cp database.yml.example database.yml
cp email.yml.example email.yml

Editer les 2 fichiers pour que la configuration soit correspondante a vos paramètres.

Configuration de base de redmine

Session store secret :

RAILS_ENV=production rake config/initializers/session_store.rb

Initialisation de la DB :

RAILS_ENV=production rake db:migrate

Insertion des valeurs par défaut :

RAILS_ENV=production rake redmine:load_default_data

Initialisation des plugins locaux

RAILS_ENV=production rake db:migrate_plugins

1er lancement

ruby script/server webrick -e production

Se connecter sur http://127.0.0.1:3000/ avec comme login admin et password admin. Vérifier que tout est ok puis arreter le server webrick a coup de Ctrl+C.

Configuration du serveur thin.

Thin permet d'avoir un serveur web rapide.

Droits d'accès

Dans notre forge, les accès web seront fait en tant www:www. Comme dans notre test, nous avons accédés a pas mal de pages en tant que root. Il faut changer les droits pour le serveur web thin se pete pas la tete :

cd /usr/local/www && chown -R www:www redmine

Fichier de démarrage

Il reprends le fichier de démarrage de bapt avec les modification FreeBSD :

[kiwi@dev2 /usr/local/etc/rc.d]$ cat thin 
#!/bin/sh
#
# PROVIDE: thin
# REQUIRE: DAEMON
#
# thin_enable="YES"
#

thin_enable=${thin_enable-"NO"}

. /etc/rc.subr

name=thin
rcvar=`set_rcvar`

command=/usr/local/bin/${name}
stop_cmd="/usr/local/bin/thin -c /usr/local/www/redmine -e production stop"
command_args="-c /usr/local/www/redmine -e production -d -u www -g www start"

load_rc_config ${name}
run_rc_command "$1"

Pour l'activer :

# chmod 755 /usr/local/etc/rc.d/thin
# echo "thin_enable=YES" >> /etc/rc.conf
# /usr/local/etc/rc.d/thin start

Le serveur web tourne alors sur le port 3000, vous pouvez donc vous connecter dessus sans soucis. En cas d'un internal error, il faut jeter un coup d'oeil dans /usr/local/www/redmine/log/* afin de voir où est l'erreur... (en général c'est des problèmes de droits...).

Lighttpd

Afin de rendre la chose propre et éviter que thin soit direct sur le net, un coup de lighttpd sera a installer.

La compilation est simple, soit laisser les options par défaut, soit les modifier :)

Fichier de conf (sans les commentaires, histoire de garder de la place) :

server.modules              = (
                                "mod_redirect",
                                "mod_access",
                                "mod_proxy",
                                "mod_accesslog" )

# [...] configuration du reste selon vos envies

server.document-root        = "/usr/local/www/data/"

$SERVER["socket"] == "0.0.0.0:443" {
##### SSL engine
ssl.engine                 = "enable"
ssl.pemfile                = "/usr/local/etc/CA/xxx.pem"
ssl.ca-file                = "/usr/local/etc/CA/ca-bundle.pem"
}
$SERVER["socket"] == ":80" {
  $HTTP["host"] =~ "redmine.oav.net$" {
    url.redirect = ( "^/(.*)" => "https://redmine.oav.net/$1" )
    server.name                 = "redmine.oav.net"
  }
}

$HTTP["host"] == "redmine.oav.net" {
        proxy.server = ( "" =>
                        (
                         ( "host" => "127.0.0.1",
                           "port" => 3000
                         )
                        )
                       )
}

Evidement le reste de la conf de lighttpd est a compléter selon vos envies.

SVN et ses amis...

Introduction

Dans le cas de redmine, on peux couple SVN avec la base d'authentification de redmine afin de n'avoir qu'un seul point d'accès.

Dans mon exemple j'ai voulu avoir accès au module SVN, _que_ via SSL. Subversion aimant apache 2.0 par defaut, il faut donc compiler apache avant SVN

Compilation de apache 2.2

Dans /usr/ports/www/apache22, compiler apache avec les options suivantes :

_OPTIONS_READ=apache-2.2.14_5
WITHOUT_APR_FROM_PORTS=true
WITH_THREADS=true
WITH_MYSQL=true
WITHOUT_PGSQL=true
WITH_SQLITE=true
WITH_IPV6=true
WITH_BDB=true
WITH_AUTH_BASIC=true
WITH_AUTH_DIGEST=true
WITH_AUTHN_FILE=true
WITH_AUTHN_DBD=true
WITH_AUTHN_DBM=true
WITH_AUTHN_ANON=true
WITH_AUTHN_DEFAULT=true
WITH_AUTHN_ALIAS=true
WITH_AUTHZ_HOST=true
WITH_AUTHZ_GROUPFILE=true
WITH_AUTHZ_USER=true
WITH_AUTHZ_DBM=true
WITH_AUTHZ_OWNER=true
WITH_AUTHZ_DEFAULT=true
WITH_CACHE=true
WITH_DISK_CACHE=true
WITH_FILE_CACHE=true
WITHOUT_MEM_CACHE=true
WITH_DAV=true
WITH_DAV_FS=true
WITHOUT_BUCKETEER=true
WITHOUT_CASE_FILTER=true
WITHOUT_CASE_FILTER_IN=true
WITHOUT_EXT_FILTER=true
WITHOUT_LOG_FORENSIC=true
WITHOUT_OPTIONAL_HOOK_EXPORT=true
WITHOUT_OPTIONAL_HOOK_IMPORT=true
WITHOUT_OPTIONAL_FN_IMPORT=true
WITHOUT_OPTIONAL_FN_EXPORT=true
WITHOUT_LDAP=true
WITHOUT_AUTHNZ_LDAP=true
WITH_ACTIONS=true
WITH_ALIAS=true
WITH_ASIS=true
WITH_AUTOINDEX=true
WITH_CERN_META=true
WITH_CGI=true
WITH_CHARSET_LITE=true
WITH_DBD=true
WITHOUT_DEFLATE=true
WITH_DIR=true
WITH_DUMPIO=true
WITH_ENV=true
WITH_EXPIRES=true
WITH_HEADERS=true
WITH_IMAGEMAP=true
WITH_INCLUDE=true
WITH_INFO=true
WITH_LOG_CONFIG=true
WITH_LOGIO=true
WITH_MIME=true
WITH_MIME_MAGIC=true
WITH_NEGOTIATION=true
WITH_REWRITE=true
WITH_SETENVIF=true
WITH_SPELING=true
WITH_STATUS=true
WITH_UNIQUE_ID=true
WITH_USERDIR=true
WITH_USERTRACK=true
WITH_VHOST_ALIAS=true
WITH_FILTER=true
WITH_VERSION=true
WITHOUT_PROXY=true
WITHOUT_PROXY_CONNECT=true
WITHOUT_PATCH_PROXY_CONNECT=true
WITHOUT_PROXY_FTP=true
WITHOUT_PROXY_HTTP=true
WITHOUT_PROXY_AJP=true
WITHOUT_PROXY_BALANCER=true
WITHOUT_PROXY_SCGI=true
WITH_SSL=true
WITHOUT_SUEXEC=true
WITHOUT_CGID=true

Compilation de mod_perl2

Dans ''/usr/ports/www/mod_perl2", compiler avec les options par defaut

Compilation de SVN

Dans /usr/ports/devel, compiler avec les options :

_OPTIONS_READ=subversion-1.6.6_1
WITH_MOD_DAV_SVN=true
WITH_APACHE2_APR=true
WITH_MOD_DONTDOTHAT=true
WITH_NEON=true
WITHOUT_SERF=true
WITHOUT_SASL=true
WITH_BDB=true
WITHOUT_ASVN=true
WITHOUT_MAINTAINER_DEBUG=true
WITHOUT_SVNSERVE_WRAPPER=true
WITHOUT_STATIC=true
WITHOUT_BOOK=true

Quelques modules perl a ajouter

  • p5-DBD-mysql : /usr/ports/database/p5-DBD-mysql
  • p5-Digest-SHA1 : /usr/ports/security/p5-Digest-SHA1

Configuration de redmine pour qu'il accepte l'autocreation des repository SVN

Par rapport a la doc de redmine, il faut donc autoriser ''Enable WS for repository management", qui se trouve dans le compte admin de Redmine dans :

Administration -> Settings -> Repository -> Enable WS for repository management

C'est la seconde case a cocher... j'ai un poil jamais vu cette case... peut-être que mes yeux auto-filtrent(tm)(r)(c) les trucs dont j'ai besoin :)

Créer le répertoire père pour svn et configurer l'autocreate de respository.

mkdir /svn
chown www:www /svn
cd /usr/local/www/redmine && /usr/local/bin/ruby extra/svn/reposman.rb --redmine 127.0.0.1:3000 --svn-dir /svn --owner www --url file:///svn --verbose

Vous pouvez mettre la dernière ligne en crontab ou dans un script shell, type /etc/daily.local par exemple. Normalement lors de l'exécution de la dernière ligne les repository sont automatiquement crées *et* ajouté dans les "dépôts" sur l'interface web...

Il ne reste plus qu'à mettre à dispo les repository en http.

Configuration du Sioux

Remarque

Je voulais mettre Apache derrière un lighttpd, mais il me semble que lighttpd 1.4.x manque quelques fonctions importantes pour le webdav ou sont un poil incomplètes en mod_proxy. Si vous avez des infos et/ou des modifications faites le moi parvenir.

Fichier ''httpd.conf'

Ne garder que les modules suivants et dans l'ordre (il y a peut être quelques modules superflux... merci de me l'indiquer !) :

ServerRoot "/usr/local"
Listen 8080 # port a la con pas utilisé !
#
LoadModule authn_file_module libexec/apache22/mod_authn_file.so
LoadModule authn_dbm_module libexec/apache22/mod_authn_dbm.so
LoadModule authn_anon_module libexec/apache22/mod_authn_anon.so
LoadModule authn_dbd_module libexec/apache22/mod_authn_dbd.so
LoadModule authn_default_module libexec/apache22/mod_authn_default.so
LoadModule authn_alias_module libexec/apache22/mod_authn_alias.so
LoadModule authz_host_module libexec/apache22/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache22/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache22/mod_authz_user.so
LoadModule authz_dbm_module libexec/apache22/mod_authz_dbm.so
LoadModule authz_owner_module libexec/apache22/mod_authz_owner.so
LoadModule authz_default_module libexec/apache22/mod_authz_default.so
LoadModule auth_basic_module libexec/apache22/mod_auth_basic.so
LoadModule auth_digest_module libexec/apache22/mod_auth_digest.so
LoadModule log_config_module libexec/apache22/mod_log_config.so
LoadModule logio_module libexec/apache22/mod_logio.so
LoadModule env_module libexec/apache22/mod_env.so
LoadModule mime_magic_module libexec/apache22/mod_mime_magic.so
LoadModule cern_meta_module libexec/apache22/mod_cern_meta.so
LoadModule headers_module libexec/apache22/mod_headers.so
LoadModule usertrack_module libexec/apache22/mod_usertrack.so
LoadModule unique_id_module libexec/apache22/mod_unique_id.so
LoadModule setenvif_module libexec/apache22/mod_setenvif.so
LoadModule ssl_module libexec/apache22/mod_ssl.so
LoadModule mime_module libexec/apache22/mod_mime.so
LoadModule asis_module libexec/apache22/mod_asis.so
LoadModule info_module libexec/apache22/mod_info.so
LoadModule rewrite_module libexec/apache22/mod_rewrite.so
LoadModule perl_module        libexec/apache22/mod_perl.so
LoadModule dav_module         libexec/apache22/mod_dav.so
LoadModule dav_svn_module     libexec/apache22/mod_dav_svn.so

plus loin dans le fichier :

# Server-pool management (MPM specific)
Include etc/apache22/extra/httpd-mpm.conf

#...
# Secure (SSL/TLS) connections
Include etc/apache22/extra/httpd-ssl.conf

dans le répertoire ''/usr/local/etc/apache22/extra :

cp httpd-mpm.conf httpd-mpm.conf.orig
cp httpd-ssl.con httpd-ssl.conf.orig

fichier httpd-mpm.conf

<IfModule mpm_prefork_module>
    StartServers          1
    MinSpareServers       1
    MaxSpareServers      10
    MaxClients          15
    MaxRequestsPerChild   10
</IfModule>

fichier httpd-ssl.conf

 more httpd-ssl.conf
Listen 1443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLMutex  "file:/var/run/ssl_mutex"

Créer le fichier /usr/local/etc/apache22/Include/svn.conf

C'est ce fichier qui faire la magie webdav / svn / redmine

PerlRequire /usr/local/etc/apache22/perl/startup.pl
<VirtualHost *:1443>
DocumentRoot "/var/empty"
ServerName svn.oav.net:443
ServerAdmin kiwi@oav.net
ErrorLog "/var/log/httpd-error.log"
TransferLog "/var/log/httpd-access.log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/usr/local/etc/CA/domain.crt"
SSLCertificateKeyFile "/usr/local/etc/CA/domain.key"
SSLCACertificateFile "/usr/local/etc/CA/ca-bundle.pem"
BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
PerlLoadModule Apache::Authn::Redmine
        <Location />
            DAV svn
            SVNParentPath /svn

            Order deny,allow
            Deny from all
            Satisfy any
            PerlAccessHandler Apache::Authn::Redmine::access_handler
            PerlAuthenHandler Apache::Authn::Redmine::authen_handler

            AuthType Basic
            Authname "SVN repository"
            Require valid-user
            RedmineDSN "DBI:mysql:database=redmine;host=sql-srv"
            RedmineDbUser "redmine-user"
            RedmineDbPass "redmine-pass"
            # Read only access
            <Limit GET PROPFIND OPTIONS REPORT>
              Require valid-user
              Allow from 111.222.222.333
              # Allow from ip...
              Allow from 127.0.0.1
              Satisfy any
            </Limit>
            # Write Access
            <LimitExcept GET PROPFIND OPTIONS REPORT>
              Require valid-user
            </LimitExcept>
        </Location>
</VirtualHost>

Creer la magie nécessaire a mod_perl

cd /usr/local/etc/apache22
mkdir -p perl/Apache/Authn
cd perl
cp /usr/local/www/redmine/extra/Redmine.pm Apache/Authn

Dans le fichier startup.pl :

use lib qw(/usr/local/etc/apache22/perl);

1;

Démarrez apache2.2 et vous avez votre repository.

TODO

  • Mail on commit
  • Quoi d'autres?

samedi, janvier 16 2010

Roselyne, on vous a bien dit que la pandémie était ... finie ?

Ah Bon ? Ah Bon ?

Non ? Bah il faut s'informer et ne plus envoyer les bons de vaccination hein ?

Tiens le mien est arrivé hier... (imprimé le 12/01/2010) et celui de ma femme ce matin (imprimé le 14/01/2010).

Bravo ! pour la gestion exemplaire de cette soit disant pandémie... avec... un coût sur nos impôts extra ordinaire !

Et après on s'étonne ? Si l'OpenSource est la ramasse pour l'IPv6, alors je parle pas du reste...

Introduction

Alors, tout content d'avoir eu mon /48 pour Kazar, j'essaye depuis facilement début janvier 2010 de trouver une solution qui peux router de l'IPv6 en natif....

Si il y a de la solution en terme d'OS clients, en terme de routage on a rien...

Panorama des solutions OpenSource

Linux

Bon la, je verrais, plus tard, je suis BSD et je truste pas le pinguin en terme de routage coeur...

OpenBSD

La c'est mon favoris, un deamon BGPd qui roxe, des choses propres, flashrd qui permet de faire tourner ça impeccablement, un deamon ospfd qui fait assez bien le travail... Mais ospf6d qui n'existe qu'en 4.6-current (là ça commence mal) et qui marche pas.

-> suivant !

FreeBSD

Bah ... NanoBSD c'est bien... donc allons y...

Après avoir galléré avec FreeBSD 8.0 pour faire du NanoBSD qui marche pas.... passons en 7.2 + quagga....

Et la.... dans le beau zebra

!
interface lo0
 description Loopback core-4
 ip address 193.43.214.3/32
 ipv6 address 2001:67c:ec::4/128
!

En pratique ça donne :

# ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5 
        inet6 ::1 prefixlen 128 
        inet 127.0.0.1 netmask 0xff000000 
        inet 193.43.214.3 netmask 0xffffffff 

Bah ? quoi ? il manque quelque chose ? Ouiiiii les addresses IPv6.... !!!

Et la oh miracle : bug 408 ouvert depuis 2007...

La je dis BRAVO le soit disant logiciel opensource en carton...

Conclusion..

On peux dire du mal du proprio, mais la c'est trop -> Juniper... Reste a trouver du cash.... ça c'est une autre chose...

mercredi, janvier 6 2010

Il est beau mon poisson !

Et bien l'association Kazar a enfin un prefixe IPv6... Jusqu'a la tout vas bien, le temps est beau et le soleil brille...

Un jour je fait

find / -name "ospf6d" -print

et rien ...

Bref nada...

Et voila : Bref => passage en OpenBSD 4.6-current...

Donc danger...

Après "backport" manuel, bref :

Jan  6 18:06:12 core-2 ospf6d[24456]: nbr_adj_timer: failed to form adjacency with 193.43.214.3
Jan  6 18:06:13 core-2 ospf6d[7804]: lsa_intra_a_pref_check: invalid LSA intra area prefix packet

Donc soit : - quagga - bird...

Plonk :(

jeudi, décembre 24 2009

Merci HP

Alors dans la série limitations a la con, je nomme HP les vainceurs :

sw-core-2(config)# vlan 666
Maximum number of VLANs (8) has already been reached

Comment ça 8 VLAN max ??

Après recherche dans les docs on as donc :

sw-core-2(config)# max-vlans 253
Command will take effect after saving configuration and reboot.

Bref... trop merci

mercredi, novembre 25 2009

s/Web/Minitel/ 2.0 ou le Firewall de France

Ca devais arriver avec ces lois avec des "i" a la fin... LOPSI vas passer début 2010...

Cet excellent article de Pierre Col, nous informe que notre Ministre de l'Intérieur (sic ?), qui n'est que l'ex ministre de l'immigration de notre cher président, a décidé que le Net est un danger perpétuel.

Qu'il se rassure, les vrais gens qui l'utilisent pour communiquer librement se verrons censuré comme hélas devient de plus en plus le cas comme les sociétés de gestion de réputation sur l'Internet le font déjà avec la jolie palme de la censure gérée par l'état (tiens ça vous rappelle pas un pays ça ?)... avec ses jolies dérives comme par exemple ce qui est arrivée a Wikipedia en Angleterre.

Que nos amis les politiques réfléchissent... C'est pas en prenant vos électeurs pour des gamins que le problème vas être réglé... Au pire cela risque que les gens que vous cherchez a combattre, passent en mode "underground" en utilisant des techniques de plus en plus difficile a cerner... Comme par exemple ce qui est en train de se passer pour Hadopi (1 ou 2)....

My 0,02€

lundi, septembre 21 2009

The Dark Force of Cisco

Ca se passe de commentaires :

#sh vers
Cisco IOS Software, Catalyst 4500 L3 Switch Software (cat4500e-ENTSERVICESK9-M), Version 12.2(46)SG, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2008 by Cisco Systems, Inc.
Compiled Fri 27-Jun-08 19:07 by prod_rel_team
Image text-base: 0x10000000, data-base: 0x124746C0

ROM: 12.2(44r)SG
Darkside Revision 0, Jawa Revision 11, Tatooine Revision 140, Forerunner Revision 1.74


iSCSI Target et (Open)Solaris

En attandant l'article quelques notes :

Comment modifier un Intel Pro 1000 en initiateur iSCSI

(MAJ), depuis OpenSolaris 2009.06, il y a un nouveau Target iSCSI qui est, parait-il, mieux. Il permet de faire de l'iSCSI over RDMA, ce qui doit un poil patatter (RDMA = infinband et au delà !).

To be continued.

jeudi, août 20 2009

Mac OS X et AddressBook

Mac OS X, utilise l'AddressBook pour plein de choses et se le partage entre applications :

  • Mail
  • iChat
  • Safari
  • AdiumX
  • ...

Le soucis c'est que des fois, le carnet d'adresses est un peu en état lamentable (et là, on dirais que le partenariat avec Microsoft il y a des années a frappé), et donc toutes les applis qui y accèdent se mettent a ramer comme c'est pas possible.

Le "workaround", consiste a :

  1. Créer 10 fiches dans votre carnet d'adresses (n'importe quoi, du moment qu'il y ait au moins une entrée dedans).
  2. Supprimer les fichiers ~/Library/Application Support/AddressBook/ABPerson.*, évidement une fois que toutes les applis accédant au carnet d'adresses sont arrêtées.

Le résultat, pour ma part est fulgurant...

lundi, juin 8 2009

Fail !

Ou le distributeur du Credit Agricole qui bugge...

(La photo est mauvaise.... mais on voit bien le fatal error :) CA Fail !

jeudi, avril 30 2009

Bouygues, iPhone et forfait iPhone...

Il y a quelques temps j'avais essayé le forfait Web & Mail version 1 chez Bouygues et j'avais été plus que déçus.

En effet, le système étais décevant, proxy pour recevoir les mails en pop3, pas d'imap et encore moins d'imap ssl...

Comme mon engagement s'arrêtais au début Avril, j'ai donc patienté quelques jours et j'ai donc un forfait iPhone .... maintenant que Bouygues peut commercialiser les iPhones.

Quelques news :

  1. l'imap SSL fonctionne donc on peux avoir enfin gmail et des messageries avec de l'imap
  2. le port 25 est toujours bloqué... mais 587 n'est pas proxyfié... donc on peux envoyer avec son serveur de mail vers gmail et les messageries normales...

Quelques infos utiles :

L'APN qui marche est "ebouygtel.com".

Au fur et a mesure que je teste le truc, je mettrais à jour mes impressions et découvertes.

Ports bloqués :

  • 2525 / TCP

Ports proxyfiés

  • 25 / TCP

Ports non bloqués ou proxyfiés

  • 587 / TCP (smtp-submit)
  • 993 / TCP (imaps)
  • 443 / TCP (https) - j'ai quand même un doute
  • 22 / TCP (ssh) - c'est récent.

jeudi, avril 16 2009

Linux dans ta Télé :)

Je viens de craquer pour une nouvelle télé Samsung LE40B651...

LE40B651

Le truc marrant c'est que sur le manuel il y a le texte GNU GPL... et quand on regarde plus près il y a... Linux inside :)

Le seul truc c'est comment faire manger a cet écran les ".srt" via DLNA..

A suivre...

dimanche, mars 8 2009

Migration DC1.2 -> 2.1

Bon... Puisque j'ai migré les fronteaux Kazar de PHP4 à PHP5... j'en ai profité pour upgrader Dotclear a la version 2.1.

J'ai un peu perdu quelques images, mais ma Timecapsule vas m'aider... :p

MAJ hop corrigé :)

jeudi, janvier 29 2009

JunOS Fun

J'ai quelques Juniper sous la main et il existe du fun dans le JunOS :

cli@jun> show version and haiku    
Hostname: jun
Model: m20
JUNOS Base OS boot 8.3R1.5
JUNOS Base OS Software Suite 8.3R1.5
JUNOS Kernel Software Suite 8.3R1.5
JUNOS Crypto Software Suite 8.3R1.5
JUNOS Packet Forwarding Engine Support (M/T Common) 8.3R1.5
JUNOS Packet Forwarding Engine Support (M20/M40) 8.3R1.5
JUNOS Online Documentation 8.3R1.5
JUNOS Routing Software Suite 8.3R1.5


        Juniper babies
        The next generation starts
        Gotta get more sleep

cli@jun>

Bon humour donc :p

mardi, décembre 9 2008

Enlevez Chrono a Post (ou evitez Chronopost)

Il y a 3 semaines j'ai acheté un objet aux US.... Envoyé par la poste Américaine en France... si ce n'est la peur de passer par la poste Française par son efficacité légendaire....

Bref avec un peu de peur, je payes, je demande le numéro de tracking de la post Américaine...

Ce qui donne ça :

Donc il est arrivé en France... super !

Après recherche, il s'avère que c'est Chronopost qui s'en occupe ....

J'apprends que j'ai déjà été livré et comme j'étais pas là (faut bien manger ....), le colis sera relivré... bien... J'attends 2 semaines et je recois un courier ... d'avis de souffrance...

Et une belle capture de la "souffrance" du colis (ou plutôt de l'excès de non livraison) :

Alors ce que je comprends pas...

  • L'addresse de livraisons est une boite
  • Nous (le département ou je travaille) recevons plusieurs tonnes de matériels par semaine (l'époque de livraison nous avons reçu... 4 palettes de matériel)
  • Chronopost a mes numéros de téléphones... jamais utilisés lors des livraisons (tiens Fedex et UPS ont un cerveau et en général, les livreurs les utilisent... pourquoi pas Chrono(sic)Poste ?)
  • La communication avec le numéro surtaxé 0825 801 801 et l'agence "locale" (sic 2) de Chronopost est aléatoire...
  • Visiblement les livreurs ont des problèmes car le colis est arrivé au PC sécurité de la boite une fois... et pas les suivantes... pourquoi ?

Bref quand je vois ces articles :

Ceci me faire confirmer que ChronoPost (ou la Poste en général) sont pas des partenaires valables ni fiables dans ce type de transaction...

Encore une jolie exception de notre patrimoine culturel Français....

lundi, avril 7 2008

Bouygues Web & Mail et l'iPhone

J'ai un iPhone... Mais je ne voulais pas aller chez Orange, c'est une question de principe :)

Alors Bouygues a sortit un "super" forfait nommé Web & Mail...

Déjà l'arnaque c'est qu'on avais que le Web pendant le premier mois... :(

Le mail est "arrivé" le 2 Avril (heureusement que c'était pas le 1er...) au bout d'un mois d'attente sans qu'on aie une réduction de principe sur le forfait, mais super limité :

  1. On peut faire que du POP3 sans crypto
  2. On peut faire que smtp sans crypto ni identification SMTP Auth

Sans compter les limites a la noix, par exemple mails envoyé max à 300Ko...., pas d'IMAP.. Bref un produit dingue de l'époque pré-stalinienne.

Bref, j'ai l'impression qu'on se fout de la tronche des consommateurs.

J'ai donc essayé de contourner ces limitations a la noix... et j'ai compris pourquoi Bouygues a eu tellement de mal a sortir ce pseudo-service.

Voyons un peu de débug, en mode Wifi

Connection en Imap sur le port 110 :

On voit parfaitement que tout est ok, le protocole IMAP est 100% respecté.

En SMTP :

Aucun problèmes, on tappe bien sur le bon serveur et le protocole est respecté :)


Test en EDGE

IMAP :

On voit parfaitement qu'on passe par un proxy POP3 "transparent" qui intercepte toutes le commandes envoyées et par conséquents vos logins et mot de passes, et évidement tout le contenus de vos mails.

En SMTP :

La c'est encore mieux, le serveur de mail original est entièrement "spoofé" par Bouygues, et envoie les mails au lieu et a la place du serveur officiel de votre boite mail.... Ce qui explique la limitation d'envoi de mail à 300Ko...

Conclusion

Non seulement Bouygues nous roule dans la farine, mais aussi nous espionne, sans compter le point pénible de ce forfait qui nous oblige a changer la configuration de mail sans arrêt quand on passe de Edge au Wifi, rends ce pseudo-forfait comme inutile et pas pratique du tout.
A croire que Orange c'est mieux...

samedi, novembre 17 2007

Beurre et argent du beurre ? (Ou sommes-nous tous des pirates ?)

Piratage, stockage de donnée, média et droits d'auteur.

Introduction

Depuis quelques temps, en France, on a tendance a vouloir considérer que tout "Internaute", consommateur de baladeur numérique, acheteur de téléphone portable, acheteur de carte flash, va l'utiliser pour mettre des fichiers téléchargés illégalement sur l'Internet.

Pour cela, il y a une commission dite d'Albis, décide arbitrairement les surtaxe a mettre sur tout support informatique afin de pouvoir payer les auteurs des téléchargements illégaux de leur oeuvres.

Si par principe, je comprends le principe, le fait de taxer tous les support numériques afin de récupérer les pertes des droits d'auteurs, je trouve que cela un effet néfaste non négligeable.

Support taxés

Je dois en oublier beaucoup... mais une petite liste (sans le coût des taxes)...

  • Cassettes video / Audio analogiques (est-ce encore d'actualité ?)
  • MiniDisk (les support des lecteurs Sony(r))
  • CD Enregistrables
  • DVD Enregistrables (simple ou double densité)
  • Cartes Flash (utilisées dans les mp3 et aussi dans les appareils photos)
  • Clés USB (simple ou mixtes baladeurs mp3)
  • Baladeurs numériques (a disque dur et a flash)
  • Disques dur externes (tout assemblés, pas ceux en pièces détachée)
  • Bientôt vos jolis téléphones portable multimédias tels que les iPhone par exemple...
  • ... d'autres (merci de me dire ce qu'il manque.... !) ?

Je me demande même s'il n'y a pas une taxe prévue aussi pour les ordinateurs portables ou de bureau... bref...

Admettons que j'achète un morceau de musique...

Sur iTunes par exemple... Je payes mon morceau 0,99€, j'ai donc payé l'auteur, car je considère qu'un artiste que j'aime doit être payé pour son travail... normal non ?

Bon j'aime bien ce morceau....

Alors je le mets sur :

  • Mon iPod : je paye encore une taxe de droits d'auteurs,
  • Mon téléphone portable : idem
  • J'ai aussi un iPhone : idem
  • Je fais une sauvegarde sur DVD-RW : idem
  • Et puis je fais une autre sauvegarde sur un disk externe : idem..

Donc en tout j'ai payé 5 fois des droits d'auteurs sur quelque chose que j'ai légalement acheté... Est-ce normal ?

Accepteriez-vous de payer 5 fois votre facture d'électricité complète, car vous pourriez la revendre a votre voisin ?

Effets pervers

Sauvegarde des données personnelles crées...

Je connais quelques graphistes et photographes qui ne sont pas du tout content.... En effet, pourquoi devraient-ils payer des taxes sur des droits d'auteurs de leur propres création ?

De plus, ils n'ont pas la possibilité de se faire rembourser cette taxe injuste et arbitraire.

Je suis une société et j'ai besoin d'espace ?

Idem pour les société, sont-elles des pirates ?

Non évidement car c'est interdit et les sociétés risquent beaucoup si un contrôle se fait. Alors qu'en est-il des remboursement des ces taxes ?

L'union européenne existe...

Alors pourquoi acheter en France alors que le marché commun existe ?

Des liens

Radars, filtrage et riposte ... ou comment être crédible vis a vis de ces taxes ?

Le régime de l'expression de la copie privée en droit français ... Merci a Lionel de Macbidouille qui a posté ce lien.

Aussi il y a : Le pire est-il à craindre pour le "peer to peer" ? sur les forums de Grenouille.com. Lecture intéressantes des diverses loi, problèmatiques soulevée par l'Internet "dérégulé" (le sera-t'il un jour comme en Chine ?)... etc..

(D'autres liens arriverons petit à petit)...

Conclusion

Comment éviter les piratage ? C'est une grande question, mais certaines majors (pour respect pour leurs artistes, il n'y aura pas de nom), n'ont pas su s'adapter aux nouvelles technologies et comme ce qu'il s'est passé dans l'histoire des ces grandes sociétés qui se sont crées par manque de flexibilité des lois de l'époque de leur pays d'origine, sont en train de voir leurs marges énormes se réduire et restent dans un modèle économique qui est désuet... et utilisent le lobying pour se donner une bonne conscience vis a vis de leur artistes...

Les artistes eux même trouvent des alternatives, comme par exemple, un groupe qui a proposé en téléchargement "pay as you want" de leur dernier album...

Est-ce que de taxer a mort tout ce qui traîne résoudra le problème ? Peut-être que payer des taxes pour les droits d'auteurs donnent aux utilisateurs l'envie de ne pas payer, car a force de prendre les gens pour des vaches a lait...

My 0,02€

Mises à jour

L’iPhone victime d’une ségrégation face à la taxe copie privée, ou comment taxer des téléphones portable sous prétexte qu'ils font aussi baladeur (il n'y a pas que l'iPhone, mais aussi... Sony, LG, ....). Autant aller les acheter en dehors de France !

vendredi, janvier 19 2007

Traffic shapping avec OpenBSD PF, ALTQ et OpenBGPd

Introduction

L'idée de ce projet vient du fait que mon Assciation Héberge un mirroir officiel des signatures de Clamav (http://clamav.kazar.net/), ce qui engendre des consommations réseau astronomiques.

Ayant mon AS, quelques full-view BGP et aussi... un point de peering avec le Panap (en autres), j'ai eu l'idée de faire du shapping intelligent afin de ne pas pénaliser les peering locaux et limiter les dégats en terme de facture pour le transit internationnal.

Logiciels nécessaires et utilisés

    Un OS supportant :
  • OpenBSD PF
  • Altq intégré dans PF
  • OpenBSD OpenBGPd : Dans ce cas il y a soit OpenBSD, soit FreeBSD 6.1+ (6.2 conseillé, le support de ALTQ avec PF n'existe pas sur FreeBSD 5.x).
    Il vous faut aussi :
  • PF
  • OpenBGPd
    et le plus important
  • Un routeur faisant du BGP avec les bonnes routes qui sont a locales (eg celles qui viennent d'un peering local). Ce routeur peut être software ou hardware, le principal c'est qu'il fasse du BGP.
Ne pas oublier aussi de savoir quel type de traffic vous allez shapper et limiter ... Ici ca sera du http sur une ip précise.

Préparation de PF

Configurez votre firewall PF comme d'usage, par exemple ma conf est :

ext_if="fxp1"   # Interface externe avec les ip publiques (jails,  etc...)
		# Cette interface a plusieurs IP : xxx.xxx.xxx.150 (main,
                 #                                  xxx.xxx.xxx.9  (mirroir clamav a shapper)
int_if="fxp0"   # Interface interne

# Table des ip d'admin de clamav
table <sshclamav> { 10.0.1.1, 192.168.0.0/27 }
# Table des IP prioritaires qui seront écrasées par openbgpd
table <bgp> { 172.31.0.0/24, 10.0.1.1 }

# Options: tune the behavior of pf, default values are given.
set timeout { interval 10, frag 30 }
set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
set timeout { icmp.first 20, icmp.error 10 }
set timeout { other.first 60, other.single 30, other.multiple 60 }
set timeout { adaptive.start 0, adaptive.end 0 }
set limit { states 10000, frags 5000 }
set loginterface fxp1
set optimization normal
set block-policy drop
set require-order yes
set fingerprints "/etc/pf.os"

set skip on fxp0
set skip on lo0

# Normalization: reassemble fragments and resolve or reduce traffic  
ambiguities.
scrub in all

## QUEUES - ALTQ rules
## J'ai que 100Mbps... :)
altq on $ext_if cbq bandwidth 100Mb queue { q_def, q_pri, q_misc,  q_web, q_dns, q_smtp }
queue q_def bandwidth 25Mb priority 1 cbq(borrow default red ecn)
queue q_misc bandwidth 5Mb priority 0 cbq(red ecn)
queue q_web bandwidth 40Mb priority 4 cbq(borrow)
queue q_dns bandwidth 3Mb priority 5 cbq(borrow)
queue q_smtp bandwidth 2Mb priority 6 cbq(borrow)
queue q_pri bandwidth 25Mb priority 7 cbq(borrow)

# Filtering: the implicit first two rules are
pass in all
pass out all

# block all incoming packets but allow ssh, pass all outgoing tcp and  
udp
# connections and keep state, logging blocked packets.
block in log on $ext_if all
# SSH admin de la babasse
pass  in  on $ext_if proto tcp from any to $ext_if port 2202 keep  
state queue q_pri

# SMTP
pass  in  on $ext_if proto tcp from any to $ext_if port 25 keep state  
queue q_smtp

# LDAP Services
pass  in  on $ext_if proto tcp from 172.31.0.0/27 to $ext_if port 389  
keep state queue q_pri

# MySQL Services
pass  in  on $ext_if proto tcp from 172.31.0.0/27 to $ext_if port  3306 keep state queue q_pri

# DNS cache
pass  in  on $ext_if proto { tcp, udp } from any to xxx.xxx.xxx.160  port 53 keep  state queue q_dns

# ICEcast
pass  in  on $ext_if proto tcp from any to xxx.xxx.xxx.150 port 80  keep state queue q_web
pass  in  on $ext_if proto tcp from any to xxx.xxx.xxx.150 port 8000  keep state queue q_web
pass  out on $ext_if proto tcp from xxx.xxx.xxx.150 port 80 to any  keep state queue q_web

# ping
pass  in  on $ext_if proto icmp from any to $ext_if

# SSH pour clamav (prioritaire et pas shappé)
pass in  on $ext_if proto tcp from <sshclamav> to xxx.xxx.xxx.9 port  22 keep state queue q_pri

# Queue mirroir Clamav
# On passe en "quick" ce qui est prioritaire :)
pass in  quick on $ext_if proto tcp from <bgp> to xxx.xxx.xxx.9 port  80 keep state queue q_web
pass out quick on $ext_if proto tcp from xxx.xxx.xxx.9 port 80 to  <bgp> keep state queue q_web
# Et le reste est dans la bonne queue qui va bien :p
pass in  on $ext_if proto tcp from any to xxx.xxx.xxx.9 port 80 keep  state queue q_misc
pass out on $ext_if proto tcp from xxx.xxx.xxx.9 port 80 to any keep  state queue q_misc

# Last rule
pass  out on $ext_if proto { tcp, udp, icmp } all keep state

Préparation de openbgpd

La conf est assez simple :

AS 65530

holdtime 180
holdtime min 3
fib-update no
listen on xxx.xxx.xxx.150


neighbor xxx.xxx.xxx.xxx {
         descr "routeurs"
         announce none
         remote-as 35189
}


# Ne pas accepter une route par défaut sinon le shapping sert a rien
deny quick from any prefix 0.0.0.0/0

# Garder que des subnet propres... par > 24.
# le routeur "routeurs" devra évidement annoncer les ip locales... sinon
# le shapping sera valable pour vous aussi.
allow from any prefixlen 8 - 24

# On balance vers PF
allow from any set pftable "bgp"

Lancement du bordel :)

D'abord lancer PF (attention au shoot in the foot), et voir que le service tourne...

Un pfctl -t bgp -T show permettra de voir les bonnes ips que vous avez mis par défaut.

Après un lancement de openbgpd (/usr/local/etc/rc.d/openbgpd start) permettra de voir si vous avez monté la session bgp correctement ou pas...
# bgpctl s
Neighbor             AS    MsgRcvd    MsgSent    OutQ  Up/Down  State/PrefixRcvd
routeurs             35189      15666       9783     0 6d19h02m   1514
Pour voir les routes annoncées a notre altq :
# bgpctl sh ip bgp

flags: * = Valid, > = Selected, I = via IBGP, A = Announced
origin: i = IGP, e = EGP, ? = Incomplete

flags destination         gateway          lpref   med aspath origin
*>    62.4.16.0/21        xxx.xxx.xxx.xxx    100     0 35189 13193 i
*>    62.8.0.0/19         xxx.xxx.xxx.xxx    100     0 35189 15557  3305 3305 i
....
permet de donner un exemple concret de routes whitelistées :) Après un pfctl -t bgp -T show doit vous donner la même chose...

Comment tester ?

Simple : balancer du traffic.

Problèmes connus :

Un /etc/rc.d/pfctl reload; vide la table bgp. Un bgpctl nei routeurs clear la recharge :)

En production...

Et bien ça fait 3 mois que je gère le mirroir de clamav avec cette méthode, ce m'as permis de calmer la facture de transit tout en permettant un traffic soutenus lors que l'équipe de clamav mets a jours ses signature et génére beaucoup de traffic.

Exemple la dernière mise a jour de main.cvd a généré sur cette machine plus 70Mbps de traffic en continu pendant 5 à 6 heures, avec moins de 5% CPU système utilisé sur PIII 1GHz avec 512Mo de RAM et plus de 1000 / 2000 FD connectés en moyenne.... Le serveur web est un thttpd .... :)

OpenBGP ne consomme pas trop de mémoire (moins de 128Mo suffisent pour les 200K routes actuelles) :

# bgpctl show rib memory
RDE memory statistics
       1515 IPv4 network entries using 48480B of memory
       3029 prefix entries using 96928B of memory
       2054 BGP path attribute entries using 156104B of memory
        471 BGP AS-PATH attribute entries using 13523B of memory,
            and holding 2054 references
         37 BGP attributes entries using 888B of memory
            and holding 277 references
         36 BGP attributes using 216B of memory
RIB using 316139B of memory

J'utilise aussi cette méthode pour shapper la bande passante du mirroir ftp.oav.net :)

Avec un peu de pfstat on peut voir les utilisations de différentes queues :


Contrib

Pour les patches, les erreurs de frappes, et du peering pour Kazar, écrivez moi sur les commentaires :)

License

Ce document est sous double license : GPL et Offrez moi un biere(tm) :)

mercredi, janvier 17 2007

Mais ? Je rêve ? Des moustiques a Paris au mois de Janvier ????

A mort les moustiques ! Il y a quelques semaines, j'ai ouvert vers 22h ou 23h une fenêtre afin d'aérer un peu.... Bref rien de plus que 10 minutes d'une fenêtre ouverte avec la lumière dans la pièce.

Rien de spécial, mais ce qui m'as fait halluciner c'est d'entre un moustique en plein mois de Janvier a Paris... Qui commencais a nous piquer ma chérie et moi...

Déjà que nous sommes depuis plus de deux ans obligés de mettre plein d'anti-moustiques a partir du mois d'avril jusqu'a mi novembre pour avoir un peu la paix, mais la en plein Janvier, faut pas abuser.

Qui donc s'amuse a élever des moustiques à coté de la Place Cambrone a Paris ? Ou c'est le réchauffement climatique.... alors dans ce cas la... il faut que j'installe des moustiquaires et une clim..... :/

jeudi, janvier 4 2007

Code vs Culture

En tombant par hazard sur une conférence de Lawrence Lessig sur les problèmes de nos nouveaux médias, logiciels et artistes vis a vis de leur profession, des licenses et de la loi. Il est clair nous sommes bien au milieu d'un changement de fonctionnement de notre société basé pour l'instant via du broadcasting au lieu des échanges entre êtres humains comme auparavant.

Bref 1 heure 20 à voir et a analyser : Code vs Culture (200Mo) (mirroré chez Kazar, ou le lien d'origine).

A plus et bonne année !

- page 1 de 3