vendredi 9 février 2007

Installation d'un miroir Debian Etch

Installation d'une Etch depuis un cdrom netinst.
Lancement de l'installation par « installgui » pour avoir un environnement graphique
Pas de paquet installer par défaut (décocher « Bureau graphique » et « Système de base »).
Toute l'installation sur un disque dur avec « / », « swap » et « /home ». Le tout en ext3.
Nom de la machine « mirroir », domaine « votredomaine ».
Le réseau est configuré en dhcp.
A la fin de l'installation classique, les paquets suivants ont été rajoutés :
apt-get install ssh : installation du serveur ssh pour prise de main à distance
apt-get install links2 : pour avoir un navigateur internet en mode texte et éventuellement en mode
graphique en lui passant le paramètre « -g ».
apt-get install apache2 : installation du serveur web apache2 pour pouvoir distribuer les paquetages par le protocole http.
Installation à proprement parler du miroir.
On va faire un utilisateur dédié à cette tache:
apt-get install debmirroir : logiciel qui permet de faire les mirroirs écrit en perl
groupadd mirroir : ajout d'un groupe « mirroir »
useradd -g mirroir -c « Mirroir Debian » mirroir : ajout d'un utilisateur « mirroir » avec un
commentaire « Mirroir Debian » et comme groupe principal « mirroir »
mkdir -p /home/mirroir/debian : création du répertoire de l'utilisateur « mirroir » et d'un sous -répertoire « debian » qui va contenir le mirroir
chown -R mirroir:mirroir /home/mirroir/ : changement des droits sur le répertoire « /home/mirroir »
A ce moment là, il faudrait ajouter une clé pgp pour la vérification des paquets. Aprés plusieurs
essais, pas de solutions (installation du paquetages debian-keyrings, téléchargement direct de clé sur internet => la signature au moment du lancement de debmirror n'est pas vérifié).
Solution adopté: pas de vérification de la clé gpg à l'installation du mirroir par debmirroir (moins
sécurisé mais ca fonctionne car le test d'une installation d'une etch depuis le mirroir fonctionne !)
La commande pour la création du mirroir est donc la suivante :
su mirroir -c « debmirror -v /home/mirroir/debian --progress --nosource --host=ftp.fr.debian.org --root=/debian --dist=etch --section=main,main/debian-installer,contrib,non-free --arch=i386 --passive --cleanup --ignore-release-gpg »
La commande est à saisir sur une seule ligne. Cela va lancer le téléchargement d'environ 16Go de
données donc soyez patient!! Le téléchargement peut être interrompu en appuyant sur ctrl-C puis
repris en lancant la même commande.
En gros, on ne télécharge pas les sources, le téléchargement se fait depuis ftp.fr.debian.org , la
distribution choisie est « etch » (sarge pour la future-ex stable), les sections standards (main, contrib et non-free), l'architecture (i386 ou amd64 ou ia64). De toute facon lire la page man de debmirror : man debmirror et éventuellement mettre en place son fichier de conf dans /etc/debmirror.conf.
Tous les renseignements complémentaires dans /usr/share/doc/debmirror. Une fois le mirroir fait. Il faut modifier un fichier de configuration d'apache:
nano /etc/apache2/sites-available/default
et rajouter la section suivante à la fin du fichier de conf (avant la ligne Alias /debian « /home/mirroir/debian »)
Options Indexes Multiviews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from all

Il faut créer un lien symbolique entre etch et testing. Certainement à changer en un lien etch vers stable quand celle-ci sera déclaré stable:
cd /home/mirroir/debian/dists/
ln -s etch testing
Relancez apache par : /etc/init.d/apache2 force-reload
Vérifiez que ca fonctionne avec : links2 http://localhost/debian/ ou alors encore mieux depuis un poste sur le réseau avec firefox en pointant sur http://addr_ip_mirroir/debian/ Attention cette configuration est trop permisive. Il faut changer « Allow from all » par « Allow from addr_ip_reseau_etab ». Pour mettre à jour le mirroir, mettre dans un script shell, la commande debmirroir précédente et la lancer régulièrement avec cron avec une commande du style:
/root/bin/mirroir.etch > /var/log/mirroir/etch.log 2>&1 : si le fichier batch s'appelle «mirroir.etch », le fichier de log sera alors créer dans /var/log/mirroir/etc.log
C'est fini pour le serveur.
Pour que le client s'installe et fasse ces mises à jour depuis ce mirroir, il faut au moment de l'installation lors du choix de la source des paquets prendre l'option « personnaliser » puis ensuite taper l'adresse ip du serveur mirroir. Ne pas toucher au reste.
Après l'install il faudra tout de même modifier le fichier /etc/apt/sources.list en modifiant la ligne etch main en etch main contrib non-free puis faire un apt-get update puis apt-get upgrade.

Pont wifi avec une borne WRT54GL v5 sous DDWRT23 SP1

Si l'on souhaite convertir sa borne wifi en simple relais dhcp sans fil au réseau il suffit simplement d'effectuer un petit réglage sur le firmware
1 -taper 192.168.1.1 (par défaut) dans l'url de votre navigateur
2 -dans l'onglet setup cliquez sur disable pour le serveur dhcp de la borne
3 -On sauvegarde et voila c'est terminé, on dispose maintenant d'un pont wifi qui relais le réseau et grace au DDWRT vous pouvez mettre du Wpa2 pour augmenter la sécurité (pensez également à régler Xmit power dans l'onglet Wireless puis Advanced Settings, aparamment le réglage idéal serait la valeur 84, cependant vous pouvez baisser la puissance de votre signal afin de le limiter à votre domaine).

jeudi 8 février 2007

Flashage d'une Borne WRT54G v5 (non Linux) avec le Firmware DDWRT v23 SP2

TUTORIAL UPPGRADE FIRMWARE DDWRT v23 SP2 POUR BORNE v5


Ne fonctionne que sous IE

Pour le WRT54G v5 et v6 SEULEMENT :

Si la procédure ne marche pas pour l'upgrade du premier fichier (connection réinitialisée) pensez à effectuer un reset complet de l'appareil (réglages usine) par l'interface web ou par le biais du bouton reset au dos de l'appareil.

1. Téléchargement

vxworks_prep_v03.zip

et l’extraire.

2. Téléchargement

vxworks_killer_v03.zip

et l’extraire,

Téléchargez aussi le Firmware DD-WRT Micro Uniquement ! dd-wrt.v23_sp1_micro.zip

(seul la version générique nous intéresse)

On utilisera le client TFTP de windows

On se connecte en filaire avec une adresse ip fixe 192.168.1.1

On rentre ensuite dans l'interface web de notre borne puis dans la section Administration

On selectionne ensuite Upgrade Firmware

On prend sur notre machine : vxworks_prep_v03.bin extrait précédemment .

ensuite on lance l’upgrade.

Une fois fini une page blanche s’affiche on ne touche a rien !!!

On debranche puis rebranche l’alimentation du Linksys WRT54G V5 ou V6 . (Il reboote et attends)

On ouvre ensuite IE à l'adresse http://192.168.1.1 une nouvelle fois.

On obtient juste un formulaire select... ( On est en phase 2 !)

On selectionne maintenant sur notre disque dur la version 2 du vxworks : vxworks_killer_v03.bin

Et on applique le flash, on patiente pendant la procedure.

Une fois fini une page s’ouvre et affiche "SUCCESS"

On debranche et rebranche une nouvelle fois l'alimentation.

Notre borne se met simplement a clignoter (power led) et est pret pour le firmware N°=3 (Phase 3 de la procedure)

Il faut maintenant verifier le ping du routeur car selon le vxwork_killer il peut avoir

deux ip différentes 192.168.1.1 ou 192.168.1.245.

Procédure de vérification :

Ouvrez une console DOS et tapez : ping 192.168.1.1 ou ping 192.168.1.245

Celui qui répond des deux est celui qui y est :)

Dans la console DOS maintenant on se dirige vers le dossier ou on à téléchargé

la version dd-wrt.v23_micro_generic.bin.

Ensuite on tape :

TFTP -i 192.168.1.1 PUT /chemindudossier/dd-wrt.v23_micro_generic.bin

Sélectionnez la version micro pour celui que vous avez WRT54G ou GS

Cette procédure s’applique aux deux versions de WRT54G...

La procédure de mise à jour du firmware commence,c’est presque fini ! à la fin le routeur reboote tout seul.

On se dirige de nouveau sur http://192.168.1.1 où l'on retrouve l’interface DD-WRT SP1/SP2 (selon ceux que l'on à choisis) Micro Générique (Linux inside !)

Là c’est fini et réussi du premier coup.

Si par erreur l’interface n’apparait pas, on appui deux a trois secondes sur le bouton

reset a l’arrière du routeur en attendant qu’il reboote ( ça peut arriver )

Ne pas debranchez apres l’upload TFTP et ne faire un reset que si l’interface

http://192.168.1.1 n’apparait pas lorsque le firmware dd-wrt.v23_micro_generic.bin

a été totalement fini d’uploader et que le routeur à rebooté tout seul.

mardi 23 janvier 2007

Script samba création de compte à partir d'un fichier texte

Script fait dans le cadre de mes études permettant la création de comptes personnalisés avec repertoire pour un serveur samba à partir d'un simple fichier texte de la forme :
login nomuser password groupeuser

Script samba
(à éxecuter en tant que root dans un terminal , taper ./nomdevotrescript pour l'éxecuter)
#!/bin/bash

cat personnes | while true ; do
read ligne
if [ "$ligne" == "" ] ; then
exit 0
fi

set -- $ligne
echo "login:"$1 "nomcomplet:"$2 "password:"$3 "groupe:"$4
user="$1"
echo "$user"
groupadd $4
useradd -m $user -g $4 -s /bin/bash
echo "$user:$3"|chpasswd
done

cat personnes | while true ; do
read ligne
if [ "$ligne" == "" ] ; then
exit 0
fi

set -- $ligne
echo "login:"$1 "nomcomplet:"$2 "password:"$3 "groupe:"$4
user="$1"
echo "$user"
echo -e "$3\n$3" | (smbpasswd -a -s $user)
chown $user:$4 /home/$user
chmod 711 /home/$user


touch /home/$user/lisezmoi.txt
echo "Bienvenue $user sur le serveur samba , vous pouvez dès à présent utiliser votre répertoire afin de stocker vos données personnelles
//en cas de perte de vos identifiants veuillez contacter l'administrateur du réseau//
Vos identifiants personnels **login $user** **password $3** **nom complet $2** **groupe $4**" > /home/$user/lisermoi.txt
chmod 711 /home/$user/lisezmoi.txt


echo "[$user]
comment = $2
path = /home/$user
read only = No
create mask = 0711
directory mask = 0711" >> /etc/samba/smb.conf


done

lundi 22 janvier 2007

Installation de chillispot 0.99 + freeradius + mysql sur une debian etch



Recquiert : -une installation de debian etch valide (pour ma part j'ai utilisé le format 180 mega , installation par le réseau , sans interface graphique , testé sur un PII 233 Mhz) et les paquets suivants : -apache apache-ssl phpmyadmin mysql-server freeradius freeradius-mysql iptables




Module TUN/TAP

Vous avez besoin du module tun.o (inclus dans les sources du kernel depuis les versions >= 2.4.7). Si vous ne l’avez pas, il faudra recompiler votre kernel (Network device support->Universal TUN/TAP device driver support pour un kernel 2.4.x) Debian ne crée pas le périphérique "tun" automatiquement. Taper les commandes suivantes


# mkdir /dev/net

# mknod /dev/net/tun c 10 200

# modprobe tun



Vérifier que le fichier /etc/modules.conf contient la ligne suivante : alias char-major-10-200 tun







dpkg -i chillispot_0.99-1_i386.deb

Copier le fichier cgi fourni dans le répertoire adéquat

cp /usr/share/doc/chillispot/hotspotlogin.cgi.gz /usr/lib/cgi-bin/

cd /usr/lib/cgi-bin

gunzip hotspotlogin.cgi.gz

chmod a+x hotspotlogin.cgi

(vous pourrez éditer ce fichier une fois chillispot fonctionnel afin de personnalisez l'installation)

Dans le fichier /usr/lib/cgi-bin/hotspotlogin.cgi, décommenter et modifier le paramètre suivant :

$uamsecret = "secretchilli" /* secret partagé entre le CGI hotspotlogin.cgi et le daemon chilli */


Dans le fichier /etc/chilli.conf, décommenter et modifier les paramètres suivants :


  1. net 192.168.1.0/24 ou laisser commenté pour utiliser la configuration par défaut192.168.182.0/24

  2. dns1 10.187.36.3 (le DNS de mon Fournisseur d’accès) ou laisser commenté pour utiliser la configuration par défaut (ie. les DNS spécifiés dans votre /etc/resolv.conf)

  3. radiuslisten 127.0.0.1 Décommenter sinon l’adresse 0.0.0.0 (NAS-IP-Address) apparaît dans les logs de freeradius

  4. radiusserver1 127.0.0.1 IP du serveur d’authentification

  5. Radiusradiusserver2 127.0.0.1 IP du serveur d’authentification Radius

  6. radiussecret secretradius secret partagé entre le serveur Radius et le daemon chilli

  7. radiusnasid portail NAS-ID : identifiant de votre chillispot

  8. radiuslocationid isocc=fr,cc=33,ac=87000,network=MonESSID

  9. dhcpif eth1 nom de l’interface reliée au point d’accès

  10. uamserver https://ipdevotreserveur/cgi-bin/hotspotlogin.cgi ou mettre https://192.168.182.1/cgi-bin/hotspotlogin.cgi si vous utilisez la configuration par défaut

  11. uamsecret secretchilli mettre le même secret que dans le fichier /usr/lib/cgi-bin/hotspotlogin.cgi

  12. uamlisten 192.168.1.1

  13. uamallowed localhost www.yahoo.fr

Règles du firewall:

# cp /usr/share/doc/chillispot/firewall.iptables /etc/chilli.iptables

# chmod u+x /etc/chilli.iptables


Vous devez avoir à l'intérieur :

EXTIF="eth0" /* interface reliée à Internet */

INTIF="eth1" /* interface reliée au point d'accès */


Si ce n’est pas déjà fait, activer le forwarding entre les interfaces réseau. Vérifier la ligne suivante existe dans le fichier /etc/network/options : ip_forward=yes

relancez ensuite les interfaces réseaux /etc/init.d/networking restart


Dans le fichier /etc/freeradius/clients.conf, modifier le paramètre suivant :
client 127.0.0.1 {

#secret = testing123

secret = secretradius /* mettre le meme secret partagé que dans le fichier /etc/chilli.conf */


modifier le fichier /etc/freeradius/sql.conf

server = "localhost" (ou x.x.x.x l'ip de votre serveur mysql)

login = "radius"

password = "xxxx"


mettre dans /etc/freeradius/radiusd.conf
authorize {
preprocess chap suffix eap #files sql
}

authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
eap
}

accounting {
detail radutmp sql
}
session {
sql
}


On s'occupe ensuite de notre base mysql

# echo "create database radius;" mysql -u root -p

# echo "grant all on radius.* to radius@'%' identified by 'motdepasse_sql'; flush privileges;" mysql -u root -p

# zcat /usr/share/doc/freeradius/examples/mysql.sql.gz mysql -u root -p radius


si vous rencontrez des problèmmes insérez le script manuellement


-- phpMyAdmin SQL Dump-- version 2.6.1-- http://www.phpmyadmin.net-- -- Serveur: localhost-- Généré le : Lundi 22 Janvier 2007 à 16:21-- Version du serveur: 4.1.9-- Version de PHP: 4.3.10-- -- Base de données: `radius`--
-- --------------------------------------------------------
-- -- Structure de la table `nas`--
CREATE TABLE `nas` ( `id` int(10) NOT NULL auto_increment, `nasname` varchar(128) NOT NULL default '', `shortname` varchar(32) default NULL, `type` varchar(30) default 'other', `ports` int(5) default NULL, `secret` varchar(60) NOT NULL default 'secret', `community` varchar(50) default NULL, `description` varchar(200) default 'RADIUS Client', PRIMARY KEY (`id`), KEY `nasname` (`nasname`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- -- Contenu de la table `nas`--
-- --------------------------------------------------------
-- -- Structure de la table `radacct`--
CREATE TABLE `radacct` ( `RadAcctId` bigint(21) NOT NULL auto_increment, `AcctSessionId` varchar(32) NOT NULL default '', `AcctUniqueId` varchar(32) NOT NULL default '', `UserName` varchar(64) NOT NULL default '', `Realm` varchar(64) default '', `NASIPAddress` varchar(15) NOT NULL default '', `NASPortId` int(12) default NULL, `NASPortType` varchar(32) default NULL, `AcctStartTime` datetime NOT NULL default '0000-00-00 00:00:00', `AcctStopTime` datetime NOT NULL default '0000-00-00 00:00:00', `AcctSessionTime` int(12) default NULL, `AcctAuthentic` varchar(32) default NULL, `ConnectInfo_start` varchar(32) default NULL, `ConnectInfo_stop` varchar(32) default NULL, `AcctInputOctets` bigint(12) default NULL, `AcctOutputOctets` bigint(12) default NULL, `CalledStationId` varchar(50) NOT NULL default '', `CallingStationId` varchar(50) NOT NULL default '', `AcctTerminateCause` varchar(32) NOT NULL default '', `ServiceType` varchar(32) default NULL, `FramedProtocol` varchar(32) default NULL, `FramedIPAddress` varchar(15) NOT NULL default '', `AcctStartDelay` int(12) default NULL, `AcctStopDelay` int(12) default NULL, PRIMARY KEY (`RadAcctId`), KEY `UserName` (`UserName`), KEY `FramedIPAddress` (`FramedIPAddress`), KEY `AcctSessionId` (`AcctSessionId`), KEY `AcctUniqueId` (`AcctUniqueId`), KEY `AcctStartTime` (`AcctStartTime`), KEY `AcctStopTime` (`AcctStopTime`), KEY `NASIPAddress` (`NASIPAddress`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- -- Contenu de la table `radacct`--
-- --------------------------------------------------------
-- -- Structure de la table `radcheck`--
CREATE TABLE `radcheck` ( `id` int(11) unsigned NOT NULL auto_increment, `UserName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '==', `Value` varchar(253) NOT NULL default '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
-- -- Contenu de la table `radcheck`--
INSERT INTO `radcheck` VALUES (1, 'tux', 'Password', '==', 'tuxy');
-- --------------------------------------------------------
-- -- Structure de la table `radgroupcheck`--
CREATE TABLE `radgroupcheck` ( `id` int(11) unsigned NOT NULL auto_increment, `GroupName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '==', `Value` varchar(253) NOT NULL default '', PRIMARY KEY (`id`), KEY `GroupName` (`GroupName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
-- -- Contenu de la table `radgroupcheck`--
INSERT INTO `radgroupcheck` VALUES (1, 'pingouin', 'Auth-Type', ':=', 'Local');
-- --------------------------------------------------------
-- -- Structure de la table `radgroupreply`--
CREATE TABLE `radgroupreply` ( `id` int(11) unsigned NOT NULL auto_increment, `GroupName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '=', `Value` varchar(253) NOT NULL default '', `prio` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `GroupName` (`GroupName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- -- Contenu de la table `radgroupreply`--
-- --------------------------------------------------------
-- -- Structure de la table `radpostauth`--
CREATE TABLE `radpostauth` ( `id` int(11) NOT NULL auto_increment, `user` varchar(64) NOT NULL default '', `pass` varchar(64) NOT NULL default '', `reply` varchar(32) NOT NULL default '', `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
-- -- Contenu de la table `radpostauth`--
-- --------------------------------------------------------
-- -- Structure de la table `radreply`--
CREATE TABLE `radreply` ( `id` int(11) unsigned NOT NULL auto_increment, `UserName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '=', `Value` varchar(253) NOT NULL default '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- -- Contenu de la table `radreply`--
-- --------------------------------------------------------
-- -- Structure de la table `usergroup`--
CREATE TABLE `usergroup` ( `id` int(11) unsigned NOT NULL auto_increment, `UserName` varchar(64) NOT NULL default '', `GroupName` varchar(64) NOT NULL default '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
-- -- Contenu de la table `usergroup`--
INSERT INTO `usergroup` VALUES (1, 'tux', 'pingouin');


Pour ajouter des utilisateur dans la base il faut ajouter un login + password dans la table radcheck de la base radius , un login plus le type d'authentification dans la table radgroupcheck et enfin un login associé à un nom de groupe dans la table usergroup

Vous pouvez vous référer au site officiel de chillispot pour l'ensemble des syntaxes supportés par chilli http://www.chillispot.org/features.html#mozTocId203873



Test pour l'authentification de freeradius


# /etc/init.d/freeradius stop


# freeradius -XXX -A <--mode débug de freeradius


[...]


Debug: Listening on authentication *:1812Debug:


Listening on accounting *:1813


Debug: Listening on proxy *:1814


Info: Ready to process requests.


dans une autre console on lance un radtest


# radtest tux tuxy 127.0.0.1 0 monsecret_nasradius


Sending Access-Request of id 95 to 127.0.0.1:1812


User-Name = "tux"


User-Password = "tuxy"


NAS-IP-Address = localhost


NAS-Port = 0


rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=95, length=20





Notre identification par rapport à mysql est donc fonctionnelle on peut dés à présent tester notre chillispot.





# /etc/init.d/freeradius stop (ctrl+c pour le mode débug)


# /etc/init.d/freeradius start


# ifconfig eth1 0.0.0.0


# /etc/init.d/chilli stop


# /etc/init.d/chilli start


# /etc/chilli.iptables

Vérifiez que la borne wifi à bien pris son adresse en dhcp puis connectez vous au réseau wifi avec votre poste, lancez une page web, si tout ce passe bien vous devriez être redirigé sur https://ipdevotreserveur/cgi-bin/hotspotlogin.cgi







Il vous reste maintenant à vous authentifier, si le radtest à été concluant l'authentification devrait réussir sans problèmme.





Un popup s'ouvre alors avec le temps de connection et la possibilité de se délogger tandis que la page que vous aviez ouverte est redirigé vers le site demandé.

Ce tutorial s'appui sur l'excellent tutorial de Thus0 / Petrus disponible à l'adresse suivante http://www.pervasive-network.org/SPIP/Installation-de-chillispot-sur-une qui ma permis de le tester sur une débian sarge avant de passer à la Etch