Archive pour la catégorie 'Linux'

BitDefender for Linux

Wednesday 26 September 2007

A free antivirus, quite useful if you play dual boot with windows… Some links:

  • Home of BitDefender.
  • RPM download. This is a Makeself shell script. Extract and install by using
    sh ./BitDefender-scanner-7.5-4.linux-gcc3x.i586.rpm.run.
    BTW you can fetch the “real” RPM by tweaking the script:
    sh ./BitDefender-scanner-7.5-4.linux-gcc3x.i586.rpm.run --confirm --keep --nox11 --target NewDirectory.
    Then answer “n” when requested OK to execute: ./install.sh.
    This way in NewDirectory you will find the RPM file.
  • Request the Free license for BitDefender Antivirus Scanner for Unices.
  • Don’t forget to read the Documentation :)
  • Customize the configuration file:
    /etc/BitDefender-scanner/bdscan.conf.
  • Some contribs are described in:
    /opt/BitDefender-scanner/share/doc/examples.

Différences bashrc profile bash_profile bash_login [FR]

Thursday 7 December 2006

Lorsque bash est lancé comme shell de connexion interactif, ou comme shell non-interactif avec l’option –login, il lit et exécute tout d’abord les commandes se trouvant dans le fichier /etc/profile s’il existe. Après lecture de ce fichier, il recherche ~/.bash_profile, ~/.bash_login, et ~/.profile, dans cet ordre, et exécute les commandes se trouvant dans le premier fichier existant et accessible en lecture. L’option –noprofile peut être utilisée au démarrage du shell pour empêcher ce comportement.

Si bash est invoqué sous le nom sh, il essaye d’imiter le comportement de démarrage des versions historiques de sh autant que possible, tout en restant conforme aux spécifications POSIX. Lorsqu’il est invoqué comme shell de connexion interactif (ou non-interactif avec l’option –login), il essaye d’abord d’exécuter les commandes se trouvant dans /etc/profile et ~/.profile, dans cet ordre.

Quand un shell interactif démarre sans être un shell de connexion, bash lit et exécute les commandes se trouvant dans ~/.bashrc s’il existe. Ce comportement peut être inhibé à l’aide de l’option –norc. L’option –rcfile fichier forcera bash à exécuter les commandes dans fichier plutôt que dans ~/.bashrc.

Quand bash est démarré de manière non-interactive, pour lancer un script shell par exemple, il recherche la variable BASH_ENV dans l’environnement, développe son contenu si elle existe, et considère cette valeur comme le nom d’un fichier à lire et exécuter. Bash se comporte comme si la commande suivante se trouvait en début de script :
if [ -n “$BASH_ENV” ]; then . “$BASH_ENV”; fi
mais la valeur de la variable PATH n’est pas utilisée pour rechercher le fichier.

/etc/profile
Le fichier d’initialisation globale, exécutée par les shells de login.
/etc/bash.bashrc
The systemwide per-interactive-shell startup file
~/.bash_profile
Le fichier d’initialisation personnalisée, exécutée par les shells de login.
~/.bashrc
Le fichier de démarrage personnel, pour les shells interactifs.

Install and use ftpfs & sshfs

Thursday 7 December 2006

Several file managers now handle this internally, but it’s always interesting to also have it in CLI.
You need to have FUSE enabled in your kernel. To verify if you have this feature:

zgrep FUSE /proc/config.gz or grep FUSE /boot/config-`uname -r`

should give:

CONFIG_FUSE_FS=y

What follows is debian specific, adapt it to your distro: you have to find fuse-utils (which does sshfs, an ssh server mapping to a directory) and fuseftp for the ftp part.

apt-get install fuse-utils

add this to sources.list:

deb http://debian.jox.be ./
deb-src http://debian.jox.be ./

apt-get update
apt-get install fuseftp

mkdir -p /mnt/ftpfs/site1
chown -R root:fuse /mnt/ftpfs
chmod g+rx /mnt/ftpfs
chmod go+rwx /mnt/ftpfs/site1
addgroup deb_user fuse

$fuseftp /mnt/ftpfs/site1 myuser:mypass@ftp.site1.com:/web/

And now you have your ftp site on /mnt/ftpfs/site1.

As a side note, grsync is good for syncing two directories, so combined with the above trick, you can synchronise local dir with a ftp site, for updating your website for example.

Chrooting ssh

Thursday 7 December 2006

I have not fully tested the security (although the jail shows) and not tried with PAM , so call it introduction to chroot sshd. Some parts are specific to debian, refer to your distro for these (Everything has to be done as root):

Get the sshd server:

apt-get source openssh-server

Patch it, in my case I have 4.2p1:

wget http://chrootssh.sourceforge.net/download/osshChroot-4.2p1.diff

Apply patch:

patch -p1 osshChroot-4.2p1.diff

See the result:

debian:~/chroot_ssh# more openssh-4.2p1/version.h
/* $OpenBSD: version.h,v 1.45 2005/08/31 09:28:42 markus Exp $ */

#define SSH_VERSION     "OpenSSH_4.2-chrootssh"

Compile/Build:

apt-get build-dep openssh-server
cd openssh-4.2p1
CFLAGS="-O4 -march=i686" debian/rules binary-openssh-server

Install:

cd ..
dpkg -i openssh-server_4.2p1-6_i386.deb

Now set up the jail for new user bush, be sure to put the leading . (to tell openssh to put bush in jail):

adduser bush -d /home/bush/./

Set the comfortable jail:

mkdir /home/bush/bin
mkdir /home/bush/etc
mkdir /home/bush/lib

Copy bash to the jail:

cp /bin/bash /home/bush/bin

Look at dependencies of bash:

ldd /home/bush/bin/bash

Gives this:

linux-gate.so.1 => (0xffffe000)
libncurses.so.5 => /lib/libncurses.so.5 (0xb7e94000)
libdl.so.2 => /lib/tls/libdl.so.2 (0xb7e90000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7d58000)
/lib/ld-linux.so.2 (0xb7eef000)

Copy them in the jail:

cd /lib
cp ld-linux.so.2 libc.so.6 libdl.so.2 libncurses.so.5 /home/bush/lib

Transfer /etc/passwd line for new user to the jail:

grep bush /etc/passwd > /home/bush/etc/passwd

Try!!

/etc/init/ssh restart
ssh bush@localhost
Last login: Wed Feb 22 13:50:27 2006 from localhost.localdomain
-bash-3.1$pwd
/
-bash-3.1$

Créer et utiliser une partition cryptée [FR]

Thursday 7 December 2006

Les commandes d’installation sont spécifiques à Debian, à vous de les adapter pour votre distribution.

Prérequis:

1) Avoir un noyau au minimum 2.6.4 (2.6.10 pour plus de sécurité) configuré avec BLK_DEV_DM et DM_CRYPT. Ces options sont présentes par défaut dans les noyaux précompilé (pas de recompilation nécessaire)

Code:
│ Symbol: BLK_DEV_DM [=m] │
│ Prompt: Device mapper support │
│ Defined at drivers/md/Kconfig:186 │
│ Depends on: MD │
│ Location: │
│ -> Device Drivers │
│ -> Multi-device support (RAID and LVM) │
│ -> Multiple devices driver support (RAID and LVM) (MD [=y])
│ Symbol: DM_CRYPT [=m] │
│ Prompt: Crypt target support │
│ Defined at drivers/md/Kconfig:202 │
│ Depends on: BLK_DEV_DM && EXPERIMENTAL │
│ Location: │
│ -> Device Drivers │
│ -> Multi-device support (RAID and LVM) │
│ -> Multiple devices driver support (RAID and LVM) (MD [=y]) │
│ -> Device mapper support (BLK_DEV_DM [=m]) │
│ Selects: CRYPTO

2) Avoir une partition libre. Pour ma machine, c’est /dev/hda12

Il est intéressant de s’assurer de l’intégrité de secteurs sur cette partition et surtout de la remplir avec des données aléatoires (pour éviter certaines attaques).
2.a) Vérifier le disque et remplir avec des données aléatoires:

Code:
apt-get install e2fsprogs
/sbin/badblocks -s -w -t random -v /dev/hda12

Ou
2.b) Ne pas vérifier le disque, seulement remplir avec des données aléatoires:

Code:
dd if=/dev/urandom of=/dev/hda12

Installation des outils et scripts de démarrage:

1)

Code:
apt-get install cryptsetup
Citation:
cryptsetup: /.
cryptsetup: /etc
cryptsetup: /etc/default
cryptsetup: /etc/default/cryptdisks
cryptsetup: /etc/init.d
cryptsetup: /etc/init.d/cryptdisks-early
cryptsetup: /etc/init.d/cryptdisks
cryptsetup: /lib
cryptsetup: /lib/cryptsetup
cryptsetup: /lib/cryptsetup/checks
cryptsetup: /lib/cryptsetup/checks/ext2
cryptsetup: /lib/cryptsetup/checks/swap
cryptsetup: /lib/cryptsetup/checks/un_vol_id
cryptsetup: /lib/cryptsetup/checks/vol_id
cryptsetup: /lib/cryptsetup/checks/xfs
cryptsetup: /lib/cryptsetup/scripts
cryptsetup: /lib/cryptsetup/scripts/decrypt_gpg
cryptsetup: /lib/cryptsetup/scripts/decrypt_old_ssl
cryptsetup: /lib/cryptsetup/scripts/decrypt_ssl
cryptsetup: /lib/cryptsetup/cryptdisks.functions
cryptsetup: /sbin
cryptsetup: /sbin/cryptsetup
cryptsetup: /usr
cryptsetup: /usr/sbin
cryptsetup: /usr/sbin/luksformat
cryptsetup: /usr/share
cryptsetup: /usr/share/initramfs-tools
cryptsetup: /usr/share/initramfs-tools/hooks
cryptsetup: /usr/share/initramfs-tools/hooks/cryptroot
cryptsetup: /usr/share/initramfs-tools/scripts
cryptsetup: /usr/share/initramfs-tools/scripts/local-top
cryptsetup: /usr/share/initramfs-tools/scripts/local-top/cryptroot
cryptsetup: /usr/share/initramfs-tools/conf.d
cryptsetup: /usr/share/lintian
cryptsetup: /usr/share/lintian/overrides
cryptsetup: /usr/share/lintian/overrides/cryptsetup
cryptsetup: /usr/share/man
cryptsetup: /usr/share/man/man5
cryptsetup: /usr/share/man/man5/crypttab.5.gz
cryptsetup: /usr/share/man/man8
cryptsetup: /usr/share/man/man8/cryptsetup.8.gz
cryptsetup: /usr/share/man/man8/luksformat.8.gz
cryptsetup: /usr/share/locale
cryptsetup: /usr/share/locale/de
cryptsetup: /usr/share/locale/de/LC_MESSAGES
cryptsetup: /usr/share/locale/de/LC_MESSAGES/cryptsetup-luks.mo
cryptsetup: /usr/share/doc
cryptsetup: /usr/share/doc/cryptsetup
cryptsetup: /usr/share/doc/cryptsetup/NEWS.Debian.gz
cryptsetup: /usr/share/doc/cryptsetup/changelog.gz
cryptsetup: /usr/share/doc/cryptsetup/AUTHORS
cryptsetup: /usr/share/doc/cryptsetup/README.html
cryptsetup: /usr/share/doc/cryptsetup/CryptoRoot.HowTo
cryptsetup: /usr/share/doc/cryptsetup/CryptoSwap.HowTo
cryptsetup: /usr/share/doc/cryptsetup/usbcrypto.mkinitrd
cryptsetup: /usr/share/doc/cryptsetup/usbcrypto.root
cryptsetup: /usr/share/doc/cryptsetup/README.initramfs
cryptsetup: /usr/share/doc/cryptsetup/README.Debian
cryptsetup: /usr/share/doc/cryptsetup/TODO.Debian
cryptsetup: /usr/share/doc/cryptsetup/copyright
cryptsetup: /usr/share/doc/cryptsetup/examples
cryptsetup: /usr/share/doc/cryptsetup/examples/gen-ssl-key
cryptsetup: /usr/share/doc/cryptsetup/examples/gen-old-ssl-key
cryptsetup: /usr/share/doc/cryptsetup/changelog.Debian.gz
cryptsetup: /usr/share/doc/cryptsetup/usbcrypto.hotplug.gz
cryptsetup: /usr/lib
cryptsetup: /usr/lib/libcryptsetup.so.0.0.0
cryptsetup: /usr/lib/libcryptsetup.la
cryptsetup: /usr/include
cryptsetup: /usr/include/libcryptsetup.h
cryptsetup: /usr/lib/libcryptsetup.so.0
cryptsetup: /usr/lib/libcryptsetup.so
Code:
apt-get install dmsetup
Citation:
dmsetup: /.
dmsetup: /sbin
dmsetup: /sbin/dmsetup
dmsetup: /usr
dmsetup: /usr/share
dmsetup: /usr/share/man
dmsetup: /usr/share/man/man8
dmsetup: /usr/share/man/man8/dmsetup.8.gz
dmsetup: /usr/share/doc/dmsetup
dmsetup: /usr/share/doc/dmsetup/INTRO
dmsetup: /usr/share/doc/dmsetup/copyright
dmsetup: /usr/share/doc/dmsetup/changelog.Debian.gz
dmsetup: /usr/share/doc/dmsetup/changelog.gz

2) Ici j’utilise LUKS qui définit un standard pour le chiffrement de système de fichier. Vous pouvez très bien faire votre propre cuisine mais je n’ai pas trouvé d’intérêt (Luksformat fait appel à cryptsetup que vous pouvez utilisez directement pour utiliser d’autre methode de cryptage, etc..)

On formate la partition hda12 avec dedans un système de fichier ext2:

Code:
luksformat -t ext2 /dev/hda12

Il vous demande plusieurs fois le mot de passe.
Essayez de vous en rappeler Wink

3) Créer le point de montage

Code:
mkdir /mnt/cdisk1

Et rajouter cette ligne pour que dm puisse faire l’association entre /dev/mapper/cdisk1 et /mnt/cdisk1:

/etc/fstab a écrit:
/dev/mapper/cdisk1 /mnt/cdisk1 ext2 noauto,defaults 0 0

4) Automatiser le montage et décryptage au boot:
/etc/init.d/cryptdisks lit le fichier /etc/crypttab et monte les partitions en demandant le passe au boot.

Créez ce fichier:

/etc/crypttab a écrit:
#
# Encrypted ext2 disk with interactive password, retry 5 times if the check fails
cdisk1 /dev/hda12 none luks,timeout=10# Encrypted luks disk with a openssl-encrypted keyfile, replace with USB Stick
#cdisk4 /dev/hda2 /mnt/hda3/keyfile luks,ssl

Ici il y a notre ligne, on utilise luks et ses options par défaut.
L’autre exemple permet de stocker la clef, cryptée avec SSL, sur une clef usb (qu’il faudra donc monter avant, voir le parametre CRYPTDISKS_MOUNT dans /etc/default/cryptdisks).

5) Si vous avez un /proc/crypto avec les priorités standard, vous avez alors votre partition cryptée en AES, le mot de passe est hashé en SHA256, blindé contre une attaque par dictionnaire.

6) Vous pouvez acceder à cette partition a partir de windows grace à: http://www.freeotfe.org/ (non GPL mais sources fournies).
Dans ce cas, il faut probablement ne pas fixer l’option -t ext2 dans l’étape 2 si bien que la partition décryptée sera au format vfat, accessible sans problème sous windows.
Je n’ai pas essayé je n’ai pas encore trouvé d’utilité à Windows Smile

Dans le répertoire doc, vous trouverez une multitude de possibilités de cryptage: cryptage du swap, cryptage de /, cryptage complet d’une clef usb, déplacement de la clef secrete cryptée sur une clef usb ,…

framebuffer for grub

Tuesday 14 November 2006

When setting up grub you can specify the framebuffer configuration (vga= parameter) as an option in grub (and then you’ll see the famous tux logo).

Example of /boot/grub/menu.lst:

title Fedora Core (2.6.18-1.2849.fc6)
root (hd0,1)
kernel /vmlinuz-2.6.18-1.2849.fc6 ro root=LABEL=/ rhgb quiet resume2=swap:/dev/hda7 vga=0x317
initrd /initrd-2.6.18-1.2849.fc6.img

Now the value for vga parameter can be set, based on this table:

____| 640x480  800x600  1024x768
----+---------------------------
256 |  0x301    0x303    0x305
32k |  0x310    0x313    0x316
64k |  0x311    0x314    0x317
16M |  0x312    0x315    0x318