Blogger pour rien dire!

jeudi, avril 10 2008

Squirrelmail sur rhel5 et selinux.

Aujourd'hui j'ai du configurer un petit serveur qui va s'occuper du site web et des courriel. J'ai donc installé un serveur linux très standard.

  • Installation minimal de CentOS 5
  • yum install httpd squirrelmail postfix system-switch-mail dovecot
  • system-switch-mail ( choisir postfix )
  • Copier le site web dans /var/www/html
  • restorecon -R /var/www/html
  • chkconfig httpd on
  • service httpd start
  • configurer postfix et dovecot pour utiliser le format Maildir
  • service postfix restart
  • chkconfig dovecot on
  • service dovecot start

Juste qu'ici rien de sorcier pour un habitué .. mais lorsqu'on va sur se webmail et qu'on essaie de se connecter on a un 'Permission denied' du a selinux qui empèche apache de faire des connections pop/imap. Bref pour résoudre ce problème quoi de plus instinctif que la commande suivante:

setsebool -P httpd_can_network_connect 1

Une fois la commande tapé attendre quelque secondes et réessayé. Bingo ça fonctionne... tout le monde est heureux. Pour les curieux vous pouvez taper la commande 'getsebool -a' afin d'afficher les possibilités.

lundi, février 11 2008

Oyé Oyé, mon blog accessible via IPv6!

Depuis quelque jours je pense presque juste à ipv6, ça n'en ai même rendu que ma vie sexuel en a pris un coup. Bref, je me suis créé un comte sur freenet6.net pour ne pas dire 2 comptes :) Un pour moi et un pour mon serveur web. J'ai mit un peu de temps pour faire fonctionner le tout mais une fois fait j'ai été réjouit de voir la tortue danser sur le site web: www.kame.net. Juste ce la en vaut le coup. Je vais expliquer les étapes que j'ai suivis pour le faire fonctionner sur mon MacOS X car sous linux je n'avais pas de NAT traversal à faire et je n'ai pas eu de problèmes avec lookupd. Bref, l'installer sur linux m'a pris un gros 10 minutes et sur MacOS X environ 3-4 heures éparpillé ici et là pour que tout fonctionner à merveille.

  1. Créer un compte sur www.freenet6.net.
  2. Télécharger le client sur le site de freenet6 pour la création du tunnel 6to4.
  3. Télécharger les drivers tun_tap pour mac os x.
  4. Installer ces 2 logiciel.
  5. Configurer lookupd pour qu'il résoudre des noms ipv6.

Je l'ai installé sur mac os x et sur une centos5. Sous mac osx il faut installer xcode afin de pouvoir compiler des logiciels.
Donc allons y avec le coté technique:

Installer gw6c

mkdir ipv6
cd ipv6
# on copie les 2 fichiers télécharger dans notre 
# nouveau dossier de travail
tar xvfz gw6c-5_1-RELEASE-src.tar.gz
cd tspc-advanced
make target=<darwin ou linux> all
make target=<darwin ou linux> installdir=/usr/local/gw6c install

Installer les drivers tun tap pour mac os x.

J'en ai pas eu besoin sur mon serveur linux car il est directement connecté à internet donc aucune problématique possibles de NAT.

Télécharger le driver:
http://www-user.rhrk.uni-kl.de/~nissler/tuntap/
tar xvfz tuntap_tiger_20060513.tar.gz
installer -pkg tuntap_installer.mpkg -target /

Configurer le client gw6c

cd /usr/local/gw6c/bin
vim gw6.conf

Changer les lignes suivent:
 - userid=votre compte freenet6 
 - passwd=votre mot de passe freenet6
 - server=broker.freenet6.net 
 - auth_method=any

./gw6c

Configurer lookupd

mkdir /etc/lookupd
echo 'AAAACutoff NO' >/etc/lookupd/global
killall -HUP lookupd

Démarrer automatiquement le tunnel Mac OS X.

Commande à mettre dans /etc/rc

(cd /usr/local/gw6c/bin ; ./gw6c )

Démarrer automatiquement le tunnel Linux (CentOS)

Commande à mettre dans /etc/rc.local

(cd /usr/local/gw6c/bin ; ./gw6c )

Vérifier si ipv6 n'est pas déactivé sur Firefox comme sur mon MacOS X

  1. tapper about:config dans la barre d'adresse
  2. Filtrer pour ipv6
  3. mettre la valeur de __network.dns.disableIPv6 à false.

Visiter des blog accessibles via IPv6

* http://www.pouf.org/
* http://signal.eu.org/
* http://roland.entierement.nu/

Bref j'en ai pas trouvé beaucoup, mais je mettre à jour si vous me contactez avec votre blog.

mardi, janvier 22 2008

Comment devenir millionnaire sur eBay

La recette est très simple, il suffit de trouver une abondance d'un article que peu de gens sont en mesure de se procurer, ensuite on se crée un joli compte sur eBay et c'est là que le plaisir commence. On prend une photo convaincante de nous qui présente l'objet en question. Ça ne sert plus à rien de dire que Elvis l'a jadis possédé ou touché, car la technique est dépassée depuis longtemps. Donc une fois notre photo prise, on va sur notre compte eBay et on décrit l'article. J'ai remarqué qu'en faisant des fautes d'orthographe dans le titre nos ventes augmentent d'environ 15% à 20%. Après, on s'assure de mentionner que notre article est unique en son genre, qu'une fois qu'on a connu la vie avec l'article en question, on ne peut plus s'en passer. Il est important de rassurer l'acheteur potentiel en lui disant que ça fonctionne vraiment. Une fois tout cela fait, il est primordial de démarrer la vente de l'article à 0,01$ et de ne pas charger un prix exorbitant en frais de manutention. 5$ est souvent plus que suffisant pour la majorité des articles à livrer.
Ah oui, j'oubliais presque, écrire en anglais pour attirer un plus grand auditoire.

Voici un exemple d'un de mes articles en vente sur eBay

lundi, janvier 21 2008

Accrocher cyrus-sasl2-ldapdb sur eDirectory

Ce soir j'ai cherché beaucoup pour faire fonctionner une petite option. Dans mon environnement de travail, nous forçons l'utilisation du chiffrement TLS lors de requêtes LDAP dès qu'un mot de passe doit être comparé. C'est une restriction de eDirectory que j'aime bien même quand ça me donne du fil à retordre :)

créer un fichier /etc/saslauthd.conf avec ceci comme contenu

ldap_servers: ldap://ldap.server.xyz
ldap_version: 3
ldap_search_base: o=ARBRE
ldap_scope: sub
ldap_filter: uid=%u
ldap_auth_method: bind
ldap_bind_dn: cn=BINDUSER,o=ARBRE
ldap_password: MOTDEPASSE
ldap_start_tls: yes

Sous Centos linux, il faut éditer /etc/sysconfig/saslauthd et indiquer qu'on veut utiliser LDAP et le fichier de configuration /etc/saslauthd.conf

SOCKETDIR=/var/run/saslauthd
MECH=ldap
FLAGS=-O /etc/saslauthd.conf

Sous FreeBSD il faut simplement spécifier ces informations dans notre fichier de config /etc/rc.conf

saslauthd_enable="YES"
saslauthd_flags="-a ldap -O /usr/local/etc/saslauthd.conf"

Bref avec cela il suffit de combiner avec un autre articles que j'ai écrit. Ii n'est pas complètement à jour, mais que je pourrai le mettre à jour si le besoin se fait sentir.

Envoyer du mail de n'importe où avec postfix TLS et SASL

dimanche, janvier 20 2008

ImageMagick une librarie trop utile

Petit commande rapide et pratique pour resizer des photos:

convert -resize 480x320 fichier.jpg nouveau.fichier.jpg

Avec un peu d'imagination et une boucle for
convert -identify fichier.jpg
il est très simple de scripter un petit quelque chose pour éditer massivement des photos.

mercredi, mars 21 2007

Comment installer Zend Optimizer sur un serveur avac cpannel

Documenté cela est assez rigolo car à part le fait que je ne m'en rappellerai plus dans 2 heures, c'est ridicule a installer.

1 ssh sur le serveur, ensuite su - root
2 /scripts/installzendopt
3 répondre aux questions.

Respire et prendre une bonne bière ainsi que facturer 100$ à son client.

lundi, août 14 2006

Cacher la version de différent services et applications web.

Il vous es surement déjà venu à l'idée de cacher la version de certain de vos services, ce changer son finger print se faire passer pour quelqu'un d'autre. Un semblent de spoofing ... :) Lors de cet article, j'essaierai de garder un brin de sérieux. Chaque chose à sa place ... donc voila ..

Afin que les robots aient un peu plus de difficulté à nous cibler comme étant vulnérable à une quelconque faille de sécurité, changer la version affiché peut réduire, de façon négligeable, le nombre d'attaques recu. Notez que ceci ne vous rendra pas votre système plus sécuritaire mais plutôt un cran plus anormal que les autres donc il est possibles que certain robots se décourage à ce moment étant donné le fait que certains d'entre eux regardent que le "banner" affiché lors de la connections. Notez bien que d'autre robots essaient des attaques complètement à l'aveugle. J'ai souvent des tentatives pour IIS et pourtant à ce que je sache il n'existe pas encore de version sur FreeBSD ou Linux. Je dois donc me rabattre sur rien de moins que Apache.

La mise en garde étant terminé, amusons nous avec certain logiciel populaire.

Apache ... à vous de choisir ce que vous affichez :)

Pour ma part, rien de mois que Prod :) et c'est déjà assez de spécifier le logiciel qu'on utilise :)

# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
#ServerTokens Full
ServerTokens Prod

PHP

Comme apache et php font bon ménage ... php5 et apache2 ont des problèmes de fourchettes amoureuse intime et ils devraient régler cela au plus christ! Ceci étant dit, poursuivront... avec le but de cet article, soit cachons sa version!
Voici comment faire en sorte que php ne s'affiche pas comme " X-Powered-By: `echo phpversion();` ".

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
expose_php = Off

Postfix

Très très simple, si on balaye rapidement le fichier de configuration /etc/postfix/main.cf on peut le trouver sans problèmes.

# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.

smtpd_banner = $myhostname ESMTP

ssh

Vous devez recompiler votre serveur ssh et cela peux engendrer des problèmes de compatibilité avec les autres clients. Pour les téméraires, il va faloir modifier ce qu'il y a dans le fichier version.h.

à suivre ...

jeudi, juin 29 2006

Fini les trouble d'encodage UTF-8 ou ISO-8859-1

A mon grand plaisir, je cours nu dans les rues de Québec en criant EURÊKA!

Quand on a des problèmes d'accents juste sur certain serveurs ou mêmes certain fichier sur un serveur on a un problème sporadique ciblé. Dans le passé j'avais cru bon de changer mon fichier /etc/sysconfig/i18n pour que je sois en iso-8859-1 au lieu d'être en utf-8 mais cela faisait en sorte que tout les applications dans kde me causait problème ailleurs. Hier j'ai essayé de changer l'encodage dans vim sur le serveur pour lui faire afficher correctement, mais rien ne voulait fonctionner pourtant je voyais que les gidi changeais de pattern. Ce matin j'ai réalisé que dans konsole 3.5 on peux changer le encoding pour juste un shell! Quel joie c'est exactement ce que je cherchais depuis environ 1 an et demi! Tout mes problèmes d'encodage utf-8/iso-8859-1 sont maintenant terminé! Juste qu'au prochain coup .. Je trouvais ce problème très découragent de ne pas avoir de solution a ce problème simpliste.

samedi, juin 10 2006

Sélectionner un tuple de facon aléatoire dans une table SQL

Pourquoi chaque serveur SQL à une façon différence de faire le même travail? En cherchant comment sélectionner une entrée au hasard d'une de mes tables sql, je me suis rendu compte que ce fameux " Structured Query Language " diffère beaucoup entre les différence saveurs.

C'est pourquoi j'ai concu ce petit aide mémoire que j'ai trouvé ici et la sur le l'Internet. Donc pour en revenir au vif du sujet, comment sélectionner une entrée aléatoire d'une table sql, ou si vous préférer en bon français fetcher un tuple au random dans ma DB comme certain disent.

#MySQL:

SELECT column FROM table
ORDER BY RAND()
LIMIT 1

#PostgreSQL:

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

#Microsoft SQL Server:

SELECT TOP 1 column FROM table
ORDER BY NEWID()

#IBM DB2

SELECT column FROM table
ORDER BY RAND()
FETCH FIRST 1 ROWS ONLY


#Oracle:

SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1

Écrivez moi si vous avez d'autres méthode comme pour les autres bases de données open source tel que: FireBird, sqlite, etc.

vendredi, mars 17 2006

Apache ne repart plus que faire.

Pas de panique, aller voir les logs tail -f /var/log/apache/error_log et suivez votre instinct! Criez à l'aide, courrez dans tout les sens plaquer tout le monde dans votre bureau, votre patron vous avez le droit de le re-plaquer aussi souvent que vous en avez envie. Suite à cet exercice de concentration essentiel à la résolution d'un nouveau problème, fouillez un peu et vous trouverai :)

[Fri Mar 17 20:29:58 2006] [crit] (28)Aucun espace disponible sur le périphérique: mod_rewrite: could not create rewrite_log_lock

Voici une petite empilade de commandes incluant un perl one liner qui rock à fond la caisse!

ipcs -s | grep apache | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'

N'était pas très familier avec la programmation système, j'avais aucune idée de qu'est-ce qu'un tableau de sémaphores, j'ignorais complètement l'existence de cela et par le fait même, la commande ipcs -s. Suite à la résolution de ce problème, je me suis documenté, mais je ne saurais vous expliquer dans les détails donc pour le moment, cette commande me suffit.

références: http://www.goldfisch.at/knowledge/224

Désactiver la cache de squid

L'autre jour j'ai du désactiver la cache d'un serveur mandataire squid et j'ai du me rabattre sur les FAQ ... heureusement pour moi la procédure était très simple, comme un utilisateur windows dirait " en 2 ou 3 cliques ça fonctionne ... " moi c'est plutôt ajouter 2 lignes de configuration dans squid.conf.

acl Local src 192.168.0.0/24
no_cache deny Local

En somme, quand vous voulez simplement répertorier les url où les gens naviguent sans vraiment vouloir accélérer l'accès aux sites les plus visités. désactiver la cache de squid peut grandement améliorer les performances. J'ai remarqué que plus la cache est petite voir une centaine de méga octets, pire est le rendement. Squid doit constamment déterminer si un document est mieux d'être dans la cache ou bien s'il doit le télécharger la prochaine fois ... étant donné qu'il a peu d'espace réservé pour la sauvegarde des documents il doit se questionner très souvent, ce qui fait en sorte que squid passe plus de temps à déterminer si un document doit rester dans la cache ou bien lever les pattes!

Si vous avez déjà fait des test de performance sur un serveur mandataire squid, faites par de vos commentaires, tout le monde pourra en profiter.

php Notice à la con.

Aujourd'hui j'ai été obligé de faire en sorte que les logs d'un de mes clients ne se remplissent pas trop. En fait il voulait supprimer tout les messages de PHP Notice. Personnellement je ne crois pas que c'est une bonne stratégie, mais selon le budget établie et l'importance que ces messages ont, j'en ai conclu que de tout simplement désactiver les messages ferait en sorte que mon client soit plus heureux dans son bonheur. Ces messages nous avisent qu'on essaie d'utiliser le contenu d'une variable non déclarée. C'est pas la fin du monde, mais ce n'est pas une bonne pratique de programmation et ça ne fait pas du code très propre...

Voici un extrait de php.ini

; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)

J'ai donc changer la ligne de configuration qui dit: error_reporting = E_ALL pour error_reporting = E_ALL & ~E_NOTICE J'ai aussi vidé les excédents de logs pas utile ( > error_log ) ainsi que repartit notre super ami de tout les jours, le serveur apache!

vendredi, mars 10 2006

Repartir postfix car je ne me rappelle jamais comment faire sous freebsd ...

C'est pourtant très simple et je suis certain que c'est juste une mauvaise habitude que je me suis infligé depuis les 3 dernières années en travaillant beaucoup trop avec les systèmes RedHat :)

/usr/local/sbin/postfix reload

Avec une procédure aussi complexe je n'arrive pas a croire que je me suis posé et reposé la question à savoir comment reloader la foutu configuration de ce service! Maintenant je pourrai rechercher dans mon blog et le retrouver en 2, maximum 3 cliques ...

dimanche, février 5 2006

Envoyer du mail de n'importe ou avec postfix tls et sasl

De nos jours étant donné qu'on vit à l'age du SPAM! on est confronté à changer son hôte de relais SMTP ( serveur SMTP sortant) à chaque endroit ou l'on va. Pour la plupart des gens ce n'est pas un problème car l'ordinateur reste à la maison. Pour un geek ce n'est pas un problème critique, car comme tout le monde le sait, un geek à toujours plus d'un tour dans son sac. Le réel problème se pose quand on a des gens autour de nous qui sont sur la route ( et surtout ceux qui ont notre numéro de téléphone! ) car à ce moment précis, dès que l'internaude incompétent moyen sur la route à le moindre problème à envoyer un courriel le téléphone sonne. À chaque fois c'est la même histoire... Depuis quelques temps j'ai décidé de me simplifier la vie. Je vais leur offrir ce que j'appelle SMTP comme ça aurait toujours du être.

Pour en arriver là, il nous faut une boite à outil magique. En voici les éléments essentiels :

  • FreeBDS ou Linux
  • Postfix
  • Cyrus SASL 2
  • TLS/SSL
  • Environ 30 minutes de votre temps

Voici ce qu'il faut faire pour configurer sont serveur de courrier afin qu'il fasse office d'hôte de relais SMTP de façon sécuritaire et authentifié. De cette façon vous ne deviendrai pas un relais ouvert ( open relay ) et vous pourrai envoyer de courrier de presque n'importe.

1. Installer Postfix avec le support pour SASL, TLS. Avec les ports de FreeBSD, en faisant make on a un menu qui nous apparait et on peut cocher les options que l'on veux. Sur RedHat Enterprise Linux, je crois que le support est activé par défaut :)

2. Installer cyrus SASL2

cd /usr/ports/security/cyrus-sasl2
make all install clean
cd ../cyrus-sasl2-saslauthd
make all install clean

3. Configure SASL2 et déactiver NTLM pour s'éviter des problèmes avec Outlook Express

cd /usr/local/lib/sasl2
echo "pwcheck_method: saslauthd" > smtpd.conf
mkdir deactivated
mv *ntlm* deactivated

4. Générer le certificat SSL

mkdir /usr/local/etc/postfix/ssl
cd /usr/local/etc/postfix/ssl
openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650

5. Configurer Postfix /usr/local/etc/postfix/main.cf

# Config pour SASL
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =

smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

* Notez que les options 
smtpd_sender_restrictions et smtpd_recipient_restrictions 
peuvent être différente selon votre configuration et vos besoins.


# Configuration pour TLS
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

6. Activer saslauthd au démarrage ( ajouter ces lignes a /etc/rc.conf )

# Enable saslauthd
saslauthd_enable="YES"
saslauthd_flags="-a getpwent"

* Notez que FreeBSD utilise saslauthd_flags="-a pam" par défaut, mais en lisant dans le man page on voit que PAM est supporté que sur Linux et Solaris ... Bizarre!

7. Démarer le service saslauthd

/usr/local/etc/rc.d/saslauthd.sh start

Suite à cela, j'ai du ajuster certain paramètres dans ma configuration de MailScanner car SpamAssassin déterminait à l'aide des RBL ( real time blacklist ) que les courriel étaient en provenance d'une place d'adresses résidentielle. Ce qui augmente les chances que le courriel soit perçu comme un SPAM!

Avec une procédure comme celle ci on a plus de raisons d'utiliser le serveur SMTP traditionnel des divers fournisseurs d'accès Internet.

Postfix TLS SASL2

jeudi, février 2 2006

Diantre, comment vider la cache de Squid!

Si vous êtes comme moi et que vous voulez pour aucune raison pertinente vider la cache de squid, voici comment y arriver. En fait moi j'ai eu l'idée de faire cela suite à ce code de retour : TCP_SWAPFAIL_MISS dans /var/log/squid/access.log cela signifie que squid croyait avoir le document en cache mais ce n'est pas le cas. À ce moment précis on peut commencer à croire que squid est corrompu! Pour s'en assurer on jette un coup d'œil dans /var/log/squid/cache.log et on y retrouve les lignes suivante:

2006/02/02 14:40:56| WARNING: Disk space over limit: 137920 KB > 102400 KB 2006/02/02 14:41:08| WARNING: Disk space over limit: 131988 KB > 102400 KB 2006/02/02 14:41:19| WARNING: Disk space over limit: 126908 KB > 102400 KB 2006/02/02 14:41:30| WARNING: Disk space over limit: 115212 KB > 102400 KB 2006/02/02 14:41:41| WARNING: Disk space over limit: 107024 KB > 102400 KB

Donc pour réparer le tout c'est très simple.

Éteindre gentillement le service squid à l'aide de son script de démarrage. Dans certain cas ou l'on décide d'exercer notre pouvoir d'impatient on peut aussi tuer les processus directement à l'aide de la commande kill `ps ax | grep squid | awk '{print $1}'` cd /var/spool/ mkdir JUNK mv squid/* JUNK squid -z Redémarrer Squid à l'aide de son script de démarrage. rm -rf JUNK & ( esperluette est la car ça peut être long tout dépendant de la taille de votre cache! )

Redirection 301 pour ameliorer son PageRank

Rien de compliqué pour aujourd'hui, une simple recette qui fait en sorte que nos url sont toujours bien écrit peu importe ce que l'utilisateur a tapé. Dernièrement, je me suis rendu compte qu'en visitent certain sites avaient un PageRank différent tout dépendant s'ils avaient les trois doible vé étaient dans l'url ou non. J'ai fait ça garce au toolbar de google. Le petit icon de PageRank affiche une belle petite ligne verte de longueur variable, plus elle est longue meilleur est le PageRank de ce site. Donc si on a une bonne différence sur notre site web, pour quoi ne pas le rediriger automatiquement!

Voici comment forcer les www dans le url :

RewriteEngine On RewriteCond %{HTTP_HOST} !^www.blog.eglis.com\.com$ RewriteRule (.*) http://www.blog.eglis.com/$1 R=301,L

Voici comment éliminer les www dans le url :

RewriteEngine On RewriteCond %{HTTP_HOST} !^blog.eglis.com\.com$ RewriteRule (.*) http://blog.eglis.com/$1 R=301,L

Bon courage, mod_rewrite c'est toujours un peu étrange à configurer mais il offre tellement de possibilités qu'il deviens un outil indispensable. Donc ce qui est importent c'est de faire un vrai redirect 301 pour dire que c'est une redirection définitive. Il parait que ça peut aider. Quelqu'un a des articles sur cela ?

mercredi, novembre 16 2005

Bloquer le protocol MSN

Ca faisait longtemps que je cherchait un autre moyen de bloquer le trafic msn sur un réseau, j'avais découvert une technique il y a de cela au delà d'un an mais depuis la venu de msn 7 beta, je me suis retrouvé sans solution juste qu'a aujourd'hui. J'étais très malheureux.

Pour vous mettre en contexte, msn c'est une vermine. Un programme qui n'accepte pas de se faire bloquer son port 1863 alors dans ces cas la il retombe sur le port 80 qui lui est connu sous le nom de http. En fait pour ceux qui ne sont pas très technique c'est le même port et protocole utilisé que ce que votre navigateur web utilise. On appelle cela du http tunneling. Très pratique d'en capsuler des données de cette manière car peu de gateway analyse les données juste qu'a ce niveau. Ce qui arrive c'est que le firewall, à la première vue crois que c'est quelqu'un qui navigue nonchalament sur l'internet, donc ce n'est pas un comportement anormal et tout passe sans problèmes. Cependant il y a plusieurs façon de déceler cela. On peut utiliser un logiciel comme snort pour le détecter ou bien on peut faire comme ce que je fais pour le bloquer.

Ma technique est très simple, il s'agit de bloquer tout le trafic sortant de votre réseau en destination du port 1863, ce qui est le port officiel de msn messenger. Donc sans rancune, on bloque son port de communication sachant qu'il va utiliser son fameux plan B, qui consiste a communiquer via un tunnel http. Rendu la, le fun comment, Si on veux analyser le contenu http, on peut le faire facilement via un serveur proxy. Moi j'utilise squid car il est très fiable, flexible et il est gratuit. Avec squid, on peux prendre des décisions et bloquer ou accepter de relayer des requêtes web selon tout plein de critères comme, adresse source, de destination, user agent ( ah oui on peux décider de bloquer Internet Explorer d'un réseau pour forcer les gens a une bonne pratique et d'utiliser Firefox ) mais ça c'est une autre histoire. Donc moi ce que je fais c'est que je me créé une ACL sur le mime-type utilisé pour la communication. Donc le but de l'opération est de détecter s'il y a du trafic http contenant le mime-type application/x-msn-messenger. Pour s'assurer que tout le monde utilise le serveur proxy sur le réseau il suffit de créer une règle de Prerouting dans la table NAT d'iptables pour créer un Transparent Proxy et faire en sorte que les gens passent par ce serveur proxy sans avoir à le configurer. Il y a aussi une petite configuration à faire au niveau de squid.conf que je n'ai pas inscrit ici car cet article ne traite pas le Transparent Proxy.

Firewall /sbin/iptables -I FORWARD -s 192.168.x.y/24 -p tcp -m tcp --dport 1863 -j DROP

  1. Squid.conf
   # Règles pour le mime-type "application/x-msn-messenger" 
   acl reqmsn req_mime_type -i ^application/x-msn-messenger
   acl repmsn rep_mime_type -i ^application/x-msn-messenger
   acl permis src 192.168.x.y/16
   # Section http_access
   http_access deny permis reqmsn
   http_access allow permis
   # Section http_reply_access
   http_reply_access deny permis repmsn
   http_reply_access allow permis

Avec cela, on est prèt pour voir quel autre passe passe les gens de bureau vont trouver pour passer à travers cela. Rapidement comme ça, je pense à un SOCK proxy mais heureusement c'est très facile à ne pas autoriser l'utilisation de ce type de proxy. Il y a des moyens très simple, peut-être un autre fois je vous en ferai part.

samedi, octobre 15 2005

Récupération de mot de passe MySQL

Comment s'emparer d'un serveur MySQL quand on a le root sur un serveur, cette technique est communément appelée " Password Recovery " et pour mysql c'est très simple et rapide. En quelques petites étapes on a réorganisé cela.

Solution pour freebsd:

  1. Modifier /etc/rc.conf et ajouter mysql_enable="YES" et mysql_args="--skip-grants-table"
  2. Repartir mysql avec /usr/local/etc/rc.d/mysql-server.sh restart
  3. Se connecter à mysql mysql -u root
  4. Mettre un nouveau mot de passe UPDATE mysql.user SET Password=PASSWORD('Nouveau Mot De Passe') WHERE User='root';
  5. quit
  6. Repartir mysql avec /usr/local/etc/rc.d/mysql-server.sh restart

Solution pour redhat linux:

  1. service mysqld stop
  2. mysqld_safe skip-grant-tables user=root &
  3. Se connecter à mysql mysql -u root
  4. Mettre un nouveau mot de passe UPDATE mysql.user SET Password=PASSWORD('Nouveau Mot De Passe') WHERE User='root';
  5. quit
  6. Repartir mysql avec service mysqld restart

Le tour est joué, c'est si facile d'obtenir le root d'une base de donnée mysql quand on est le king big boss du serveur soit root ou son équivalent sur un serveur :)