Archive pour le ‘Ubuntu’ catégorie

Limiter les droits d’un utilisateur sur Debian/Ubuntu (lshell)

11 février 2010

Plop à tous ….

Lorsque l’on doit partager/administrer une machine, on a souvent peur que les individus fassent de belles boulettes sur la machine en question (surtout si l’accès est partagé entre plusieurs utilisateurs).

Une technique consisterait à faire un chroot via SSH (si ça vous tente ^^ mais c’est super long).

Ou passer par un truc du genre dans /etc/ssh/sshd_config :

  1. Subsystem sftp internal-sftp
  2. Match user nomUser
  3.          ChrootDirectory /home/nomUser
  4.          X11Forwarding no
  5.          AllowTcpForwarding no
  6.          ForceCommand internal-sftp

Qui bloque la plupart des commandes et n’autorise que le sftp …

Pour les admins flemmards, il existe une solution : lshell, on peut choper un .deb sur le site et une fois installé, il n’y a pas grand chose à faire :

Modifier le fichier /etc/lshell.conf (assez facile à comprendre), avec des paramètres du genre :
Pour les commandes autorisées :

  1. allowed         : ['ls','echo','cd','ll','svn','vi','rm']

Pour kiker l’utilisateur après un certain nombre d’erreurs :

  1. warning_counter : 2

dans ce cas, après 2 erreurs, la connection SSH est coupée.

On peut chrooter un utilisateur :

  1. path            : ['/var/www/']

Pour obliger un utilisateur à utiliser ce shell, il y a 2 cas :
On modifie un utilisateur :

  1. usermod –shell /usr/bin/lshell nomUser

On créer un utilisateur

  1. adduser nomUser –shell /usr/bin/lshell nomUser

Et voilà … connectez vous avec un utilisateur « lshellé » (pour ma part chrooté et limité aux commandes « allowed » plus haut) :

  1. You are in a limited shell.
  2. Type '?' or 'help' to get the list of allowed commands
  3. kikoo:~$
  4. kikoo:~$ ls
  5. index.php  license.txt  robots.txt  svnup.php  system
  6. kikoo:~$ cat /etc/ssh/sshd_config
  7. *** forbidden path -> "/etc/ssh/sshd_config"
  8. *** You have 0 joker(s) left, before getting kicked out.
  9. This incident has been reported.
  10. kikoo:~$ svn up
  11. À la révision 12.
  12. kikoo:~$ echo "LOL"
  13. LOL
  14. kikoo:~$ echo "LOL" > /etc/ssh/sshd_config
  15. *** forbidden synthax -> "echo "LOL" > /etc/ssh/sshd_config"
  16. - Kicked out -
  17. Connection to 1.3.3.7 closed.

Voilà … bonne administration ;)

Une Wii HD pour moins de 100€ avec Dolphin sur Ubuntu

23 janvier 2010

Plop à tous … aujourd’hui un article useless (comme tout mes articles …), mais c’est juste pour raviver la flamme de mon blog … aucun article depuis décembre :s.

Le tuto du jour est très simple, jouer à la Wii sur ubuntu avec la wiimote/nunchuck et tout le bataclan, le matos nécessaire :

  • Un PC assez puissant, avec une carte graphique puissante (de préférence Nvidia, ATI est mal supportée) sinon ce sera une simple Wii
  • Un adaptateur USB-Bluetooth à ~10€
  • Une sensor bar à infrarouge à ~11€
  • Une wiimote à ~40€
  • Un nunchuk (facultatif selon les jeux) à ~20€

Bien sûr, si vous avez déjà la wiimote et ses accessoires, l’addition est encore moins salée ;)
» En lire plus:Une Wii HD pour moins de 100€ avec Dolphin sur Ubuntu

Automatiser la récupération et la compilation du kernel et de son patch GrSec

31 octobre 2009

Plop à tous…

Petit truc de geek … un script pour automatiser la récupération du dernier kernel stable depuis le site kernel.org puis le dernier patch grsecurity à appliquer sur le kernel en question (qui sort généralement un jour après la release du kernel).
Sur ubuntu, il faut tout d’abord installer le paquet kernel-package :

sudo apt-get install kernel-package

Puis récupérer le script suivant (nommé chez moi recupKernel.pl dans la commande qui suivra) :

  1. #!/usr/bin/perl
  2. require HTTP::Request;
  3. use LWP::UserAgent;
  4.  
  5. my $kernelUrl = recupKernel();
  6. my $kernelVersion = recupKernelVersion($kernelUrl);
  7. my $grsecUrl = recupGrSec($kernelVersion);
  8. my $grsecName = recupGrSecName($grsecUrl);
  9. if($kernelUrl && $grsecUrl)
  10. {
  11.  print "Url du dernier kernel stable : $kernelUrl\n";
  12.  print "Version du kernel : $kernelVersion\n";
  13.  print "Url du dernier patch GrSec stable : $grsecUrl\n";
  14.  print "Nom du Patch : $grsecName\n";
  15.  print "Recuperation du kernel : \n";
  16.  my $rK = `wget $kernelUrl`;
  17.  
  18.  print "Recuperation du patch : \n";
  19.  my $rG = `wget $grsecUrl`;
  20.  print "Extraction des données et compilation\n";
  21.  my $dT = `tar -xjf *.tar.bz2 && patch -p0 > $grsecName`;
  22. }
  23.  
  24. sub recupKernel
  25. {
  26.  my $req = HTTP::Request->new(GET => "http://kernel.org/");
  27.  my $ua = LWP::UserAgent->new;
  28.  $ua->agent("Firefox/4.0");
  29.  my $res = $ua->request($req);
  30.  if ($res->is_success) {
  31.   my $text = $res->content;
  32.   my $recherche = '<table id="brbtable([\n\t\r\W\w]*?)</table>';
  33.   $text =~ m/($recherche)/gm;
  34.   return recupHrefUrl($2);
  35.  }
  36.  return '';
  37. }
  38. sub recupHrefUrl
  39. {
  40.  my $ret=$_[0];
  41.  my $recherche = 'href="([^"]*)';
  42.  $ret =~ m/($recherche)/gm;
  43.  return $2;
  44. }
  45.  
  46. sub recupKernelVersion
  47. {
  48.  my $ret=$_[0];
  49.  my $recherche = 'linux-([0-9]+.[0-9]+.[0-9]+.[0-9]+)';
  50.  $ret =~ m/($recherche)/gm;
  51.  return $2;
  52. }
  53.  
  54. sub recupGrSecName
  55. {
  56.  my $ret=$_[0];
  57.  my $recherche = '/(grsecurity.*.patch)';
  58.  $ret =~ m/($recherche)/gm;
  59.  return $2;
  60. }
  61.  
  62. sub recupGrSec
  63. {
  64.  my $kernelV = $_[0];
  65.  my $req = HTTP::Request->new(GET => "http://www.grsecurity.net/test.php");
  66.  my $ua = LWP::UserAgent->new;
  67.  $ua->agent("Firefox/4.0");
  68.  my $res = $ua->request($req);
  69.  if ($res->is_success) {
  70.   my $text = $res->content;
  71.   my $recherche = "href=\"(test/grsecurity-[.0-9]+-$kernelV-[0-9]+.patch)\"";
  72.   $text =~ m/($recherche)/gm;
  73.   return "http://www.grsecurity.net/$2";
  74.  }
  75.  return '';
  76. }

Il suffit ensuite d’executer la commande suivante :

  1. perl recupKernel.pl && cd linux-* && make menuconfig && make-kpkg clean && make-kpkg –initrd –append-to-version "LoupZeur-grsec" kernel_image

Ce qui générera un fichier .deb qu’il faudra installer par un bon vieux dpkg -i.

PS: Lors de l’execution de la commande make menuconfig, une fenetre « bleu » apparaitra, il faudra selectionner la menu « security », puis grsecurity et choisir le niveau de sécurité « HIGH ».

PS2: Il faut aussi bien entendu selectionner ou deselectionner tout les modules inutiles (genre usb, support agp et … ).

Installer la dernière version de firefox et firebug

10 septembre 2009

Bonsoir …

En lisant cette article, je suppose que vous utilisez au minimum Debian voir pire … Ubuntu, et que vous n’avez pas peur de mettre en périle votre vie numérique …
Je rappel juste que l’exécution de certaine commandes exécutées dans cet article peuvent être dangereuse ou pas … ça dépend de vous ;) Dans tout les cas, c’est votre responsabilité!! (Ze disclaimheure 2 ouf!!!)

Vous êtes suicidaire, vous adorez le risque et aimez vivre dangereusement, alors cette astuce est fait pour vous :

Pour utiliser la version pre-alpha-en-etat-anté-embryonnaire de firefox 3.7 (qui porte le doux nom de « Mine Field » … Champ de mine !?), il vous suffit simplement d’installer le dépôt suivant (pour Jaunty) :

echo "deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu jaunty main" >> /etc/apt/sources.list
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com EF4186FE247510BE
sudo apt-get install firefox-3.7

Il s’agit, comme vous l’aurez surement remarqué, d’un dépôt entretenue par un bot qui créé des paquets depuis le svn (d’où les noms à la star wars du genre hg20090910r32360). Donc si vous avez plusieurs update de firefox par jour … c’est normal!!! xD.

Et pis là comme tout développeur web, on tente d’installer l’addon indispensable : Firebug et … horreur, elle n’existe pas!!!

Alors bon ben comme des crados on peut remédier au problème façon L337 H4X0R du 17ème siècle :

cp -r ~/.mozilla/firefox/*/extensions/firebug@software.joehewitt.com/ ~/.mozilla/firefox-3.7/*/extensions/firebug@software.joehewitt.com/
sed -i "s/3.5/3.7/g" ~/.mozilla/firefox-3.7/*/extensions/firebug@software.joehewitt.com/install.rdf

Ou continuer sur la technique du geek suicidaire et installer … la version svn de firebug !! Ben ouai on est des noobs ou on l’est pas!!! ;)

svn checkout http://fbug.googlecode.com/svn/branches/firebug1.5/ ~/fbug
cd ~/fbug
zip -r firebug-svn.xpi *
firefox-3.7 firebug-svn.xpi
cd .. && rm -rf fbug/

Et vous voilà avec un firefox plus rapide que le 3.5 (plus instable parait-il, mais ça n’a pas planté pour moi …), et avec la nouvelle version de firebug … plus rapide elle-aussi. (Faut encore que j’arrive à faire fonctionner firephp ^^ c’est pas gagné).

Bonne nuit ;)

Vivre dangeureusement sur ubuntu ou pas (visudo)

2 août 2009

Bijour à vous …

Attention, l’execution de ces commandes peut se révéler dangeureuses voir suicidaire suivant vos connaissances dans le domaine.

Aujourd’hui un truc à la Jean-Kevin, suite à la lecture d’un shellcode de milw0rm (je m’occupe comme je peux :P ) : la suppression du mot de passe au sudo sur Ubuntu (ou tout OS prenant embarquant le sudoku).

pour modifier la chose, une commande :

sudo visudo

Qui retourne ceci :

# /etc/sudoers
  1. #
  2. # This file MUST be edited with the 'visudo' command as root.
  3. #
  4. # See the man page for details on how to write a sudoers file.
  5. #
  6.  
  7. Defaults        env_reset
  8.  
  9. # Host alias specification
  10.  
  11. # User alias specification
  12.  
  13. # Cmnd alias specification
  14.  
  15. # User privilege specification
  16. root    ALL=(ALL) ALL
  17.  
  18. # Uncomment to allow members of group sudo to not need a password
  19. # (Note that later entries override this, so you might need to move
  20. # it further down)
  21. # %sudo ALL=NOPASSWD: ALL
  22.  
  23. # Members of the admin group may gain root privileges
  24. %admin ALL=(ALL) ALL

Rapide explication :
les noms des utilisateurs s’écrivent directement, les groupes doivent être préfixé d’un %.
L’ajout de nouvelle règles se fait à la FIN du fichier.

Quelques règles sympa :
Suppression de la demande de mot de passe pour l’utilisateur kikoo :

kikoo ALL=(ALL) NOPASSWD: ALL

Ok, c’est un peu gros (si on est le seul à utiliser la machine, ça peut aller, mais faut bien faire gaffe au commande que l’on execute, car l’execution est DIRECTE, plus de demande de mot de passe).

Donc on peut affiner les règles :
Suppression de la demande de mot de passe lors de l’execution d’une commande specifiée :

%root ALL=NOPASSWD: /usr/bin/whoami

Et hop, un coup de sudo whoami renvoi root sans demander de mot de passe.
ça peut être utile pour le système de mise à jour d’ubuntu, ce qui donne :

%root ALL=NOPASSWD: /usr/bin/update-manager

On peut aussi faire des trucs assez sympa selon (le lien)
La suppression de l’accès à un interpreteur de commande pour certain utilisateur en mode root (genre interdire à sa petite-copine l’utilisation d’un terminal en mode root ^^).

Cmnd_Alias TOTAL=/bin/bash, /bin/sh
  1. kikoo ALL=(ALL) ALL, !TOTAL

Ce qui donne :
kikoo@WillOwnDaWorld:~$ sudo bash
[sudo] password for kikoo:
Sorry, user kikoo is not allowed to execute ‘/bin/bash’ as root on WillOwnDaWorld.
kikoo@WillOwnDaWorld:~$

Et hop, amusez-vous bien ;)

Serveur VPN en Point-to-Point avec pépétépédé ??

28 juillet 2009

Bonsoir …

Excusez-moi pour le titre … j’étais pas inspiré :p, il s’agit en fait du daemon pptpd et non de la question « pépé t’est pd ? ».
Donc voilà, avec Hadopi, on ne présente plus les VPNs mais bon … leurs utilités sont multiples :

  • Accéder à des réseaux privés d’entreprise (pour faire du télétravail, …)
  • Obtenir une autre ip (fixe ou non) pour faire des choses orthodoxes ou pas
  • Authentifier/Chiffrer des connexions
  • … ?

Pour l’installer … très simple :

apt-get install pptpd

Ensuite, un peu de configuration s’impose, il faut ouvrir le fichier /etc/pptpd.conf :
et décommentez :

#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245

Ou si votre réseau local utilise déjà l’adresse en question, changer les adresses du réseau pour un truc du genre :

localip 10.0.0.1
remoteip 10.0.0.234-238,10.0.0.245

Une fois le service démarré, il faut ouvrir le port 1723 du firewall et autoriser le protocole GRE (et pas GRRRRR!), on peut aussi rajouter le forwarding et le postrouting pour accéder au net, ce qui donne pour moi :

/sbin/iptables -A INPUT -p tcp -i eth0 --dport 1723 -j ACCEPT
/sbin/iptables -A INPUT -p gre -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j SNAT --to mon.ip.a.moi
echo 1 > /proc/sys/net/ipv4/ip_forward

Vous pouvez ensuite modifier les options du serveur :
Personnellement je vous conseil au moins de changer les DNS, et de changer le système d’authentification/chiffrement, via l’ajout des lignes suivantes à la fin du fichier : /etc/ppp/options

ms-dns 10.0.0.1
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128

Et maintenant, les comptes d’accès dans le fichier /etc/ppp/chap-secrets, le format est le suivant :

# client        server  secret                  IP addresses
login            pptpd   password              *

Vous pouvez remplacer * par une ip local, si vous voulez donner une IP fixe à un utilisateur et bien sûr, il faut changer login par votre login et password et votre mot de passe.

Reste plus qu’à redémarrer la chose : /etc/init.d/pptpd restart

Et maintenant, un client pour tester :

apt-get install network-manager-pptp

Puis :
config1
modif
Une fois le VPN en place une magnifique icone ce met en place :
vpnok
Et voilà vous pouvez pinger votre machine (on prend son pied comme on peux hein ;) ) sur l’adresse 10.0.0.1 (pour moi).

Grésillement du driver em28xx et kernel 2.6.28 sur ubuntu 9.04

26 juillet 2009

Bijour à vous …

Sous ce superbe titre qui dégage une douce odeur de romantisme … ou pas, encore un click’n'go façon terminal Unix, pour supprimer le grésillement du driver par défaut fournit avec ubuntu 9.04

wget http://www.steventoth.net/linux/xc5000/HVR-12×0-14×0-17×0_1_25_25271_WHQL.zip
  1. unzip -j HVR-12×0-14×0-17×0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys
  2. wget http://linuxtv.org/hg/v4l-dvb/file/tip/linux/Documentation/video4linux/extract_xc3028.pl
  3. perl extract_xc3028.pl
  4. sudo mv xc3028-v27.fw /lib/firmware/
  5. sudo reboot

Et normalement, vous pourrez regarder la tv analogique sans décalage ou grésillement …

Ubuntu beta …

4 avril 2009

Bijour …

Un rapide retour sur la bêta d’ubuntu que j’utilise fièrement depuis 1 semaine (sans bugs ni crashs), cette fois-ci, ils l’ont pas mal réussi (la dernière était plus chaotique ;) et encore j’étais passé en bêta 2 semaines avant la RC ^^).

Coté nouveautés je vais pas les lister, tous le monde les connaîent

Pour ma part, deux choses qui ne fonctionnaient pas sous 8.10 fonctionnent désormais sur la 9.04, à savoir :

  • La WebCam (une BisoCam 2.0 en USB !!!) reconnu d’office et qui marche sans broncher, si c’est pas la classe
  • L’hibernation qui plantait ma atheros au redémarrage (avec une petite modification : echo ‘SUSPEND_MODULES= »ath_pci »‘>>/etc/pm/config.d/madwifi).

Donc voilà, plus de modules et plus de compatibilité, comme à chaque release, c’est sympa.

Sinon, un truc sympa pour ceux qui utilisent windows : Ubuntu Portable

Autre liens intéressants

[HADOPI] Un truc auxquels certains n’avaient pas pensé : les abonnés ayant une IP dynamique (c’est écrit noir sur blanc ^^ faut avoir la même IP pendant les 6 mois :p)

[HADOPI toujours] Bluetouff qui qui joue les rebelles ^^ ici et (même si tous le monde connait ces techniques, en les mettant en liens un peu partout, on arrivera peut-être à faire tomber hadopi ;) )

LA bourde de la semaine … trop forte Albanel (pas capable d’avoir son C2I)

Enfin … le poisson d’avril que j’ai bien aimé ^^ dans la lignée du poisson d’avril 2007 du même blog …

Créer un CD pour booter sur une clé usb

22 février 2009

Rebijour …
Encore un truc super inutile (j’essaie de battre mon record ;) ), le boot but étant de booter sur un CD (sur une vieille bouse qui ne sait pas démarrer sur USB par exemple (c’est d’ailleurs le seul cas où ça me semble utile ;) )). Sinon, pour que la chose soit utile, je vous montrerais la manip à faire pour créer un CD de boot pour un BT4 sur clé USB.

Tout d’abord (à exécuter sous linux bien entendu) :

mkdir -p isobootusb/boot/grub && cp /usr/lib/grub/i386-pc/stage2_eltorito isobootusb/boot/grub

ensuite, il faut créer un fichier nommé menu.lst dans le dossier isobootusb/boot/grub qui contient :

default 0
timeout 5
title BT4 CD Boot
root (cd)
kernel /boot/vmlinuz ramdisk_size=6666 root=/dev/ram0 initrd=initrd.gz rw verbose quiet
initrd /boot/initrd.gz

Puis on copie les fichiers initrd.gz et vmlinuz du dossier boot de l’iso (ou de l’usb de BT4) dans le dossier isobootusb/boot
et on execute la sympatique commande qui créera l’iso tant convoité :

cd isobootusb && mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso ./

Et un superbe fichier iso de 7 à 50 mo apparaitra (c’est petit :p) reste plus qu’a tester avec virtualbox, ou à graver (sur un disque RW ^^).
Pour les débutants, le mieux est de tester tout de suite l’iso avec virtualbox (plus rapide, et si y’a un bug, il suffit de regen l’iso et de relancer la machine virtuelle) :
Tout d’abord, on choisit le périphérique usb surlequel on veut booter :

usb-boot1

Ensuite, on charge le bon iso :

usb-boot2

Et on démarre la machine virtuelle, si tout marche bien on tombe la-dessus :

usb-boot-final

A noter, que si l’on connait les codes à utiliser pour charger direct les bonnes locales, on pourrait réussir à se connecter direct en Fr avec le clavier en AZERTY, mais comme je les connait pas …

Synchroniser le calendrier Evolution et Google Agenda

22 février 2009

Bijour à vous … voici l’astuce inutile du jour ;)

« Dernièrement » (depuis quelque temps déjà, mais c’est que maintenant que j’ai testé ^^), Évolution a apporté la possibilité de synchroniser son calendrier avec le calendrier en ligne de google … mais c’était seulement un accès en lecture via un fichier xml (iCalc), grâce à la version actuellement  sur intrepid (2.24), il est possible d’avoir un accès en écriture sur le calendrier de google !!
Comment on fait ??
1. On ouvre evolution
2. Fichier -> nouveau -> calendrier
3. Ensuite : (une fois le login entré, il faut cliquer sur « récupération de la liste » pour avoir accès aux différents calendriers).
creer-calendrier

(A part si vous utilisez google pour gérer votre domaine, il vous faudra mettre votre adresse gmail …)

Et voilà … vous n’aurez plus qu’à créer de nouvelles tâches depuis Evolution pour qu’elles soient synchronisées avec Google Calendar.

Comme ça plus besoin de passer par gcaldaemon ou scheduleworld, pour synchroniser tout ça.