Nouveau forum : https://forum.slackware-fr.eu.org/

Annonce

29/01/2017 : Ce forum est dsormais en lecture seule. Merci d'utiliser le nouveau forum.

13/12/2014 : Inscriptions dsactives pour un moment en raison d'une recrudescence d'inscriptions plus que douteuses.

#1 28-07-2010 22:16:09

g4tsu
Membre
Date d'inscription: 26-07-2010
Messages: 22

[SlackBuild] Rkhunter

Bonjour,

Encore moi smile
Bon ce coup-ci, je me suis attaqu rkhunter. J'avoue que j'ai un peu galr car l'installation est faite avec un vieux script bash donc voil...
J'ai donc fait le paquet en plaant les fichiers aux bons endroits, il n'y a pas de compilation, juste un dplacement de fichiers effectuer.
J'affiche donc mon SB en vous demandant ce que vous en pensez, si je devrais changer ma faon de le construire, etc...

Code:

#!/bin/bash
# by: g4tsu - http://www.slackware-fr.org <vion.nico@gmail.com>
#
# Build script for Slackware - Based on Generic SlackBuild
#
# Latest Software sourcecode is available at:
# http://www.rootkit.nl/projects/rootkit_hunter.html
#
# Depends: /
# Suggest: /

# Variables Obligatoires
NAMESRC=${NAMESRC:-rkhunter}
VERSION=${VERSION:-1.3.6}  
EXT=${EXT:-tar.gz} 
NAMEPKG=${NAMEPKG:-rkhunter}
PKGEXT=${PKGEXT:-tgz}
BUILD=${BUILD:-1sfo} 
 
# Variables de construction
TMP=${TMP:-/tmp}  
OUT=${OUT:-$TMP/build}  
TARGET=${TARGET:-$ARCH} 
WGET=${WGET:-http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.3.6/rkhunter-1.3.6.tar.gz?use_mirror=netcologne&ts=1280339820} 
SUM=${SUM:-rkhunter-1.3.6.tar.gz.sha1}
DOC=${DOC:-ACKNOWLEDGMENTS LICENSE FAQ CHANGELOG README*}
if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) export ARCH=i486 ;;
    arm*) export ARCH=arm ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
       *) export ARCH=$( uname -m ) ;;
  esac
fi

set -e  
umask 022  
 

# Le SlackBuild verifie que vous ne le lancez pas en root.
if [ "$(id -u)" = "0" ]; then
  echo "You shouldn't run this SlackBuild as ROOT !"
  sleep 10
fi

# Telechargement des sources si ces-dernieres ne sont pas presentes.
if [ ! -r $NAMESRC-$VERSION.$EXT ]; then
  wget -vc $WGET -O $NAMESRC-$VERSION.$EXT.part
  mv $NAMESRC-$VERSION.$EXT.part $NAMESRC-$VERSION.$EXT
fi

# Verification de la somme sha1
if [ -n $SUM ]; then
 #echo "$SUM  $NAMESRC-$VERSION.$EXT" > $NAMESRC-$VERSION.$EXT.sha1
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
elif [ -f $NAMESRC-$VERSION.$EXT.sha1 ]; then
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
fi

# Variables temporaires
CWD=$(pwd)
PKG=$TMP/build/$NAMEPKG
NAME=$(tar ft $NAMESRC-$VERSION.$EXT | head -n 1 | awk -F/ '{ print $1 }')

# Verification du repertoire.
if [ ! -d $TMP ]; then
  echo "$TMP doesn't exist or is not a directory !"
  exit 1
fi

cd $TMP
echo "Building $NAMESRC-$VERSION.$EXT..."
tar xf $CWD/$NAMESRC-$VERSION.$EXT
cd $NAME

# Creation de l'arborescence rkhunter

mkdir -p $PKG/etc/
mkdir -p $PKG/var/lib/rkhunter/db
mkdir -p $PKG/var/lib/rkhunter/tmp
mkdir -p $PKG/usr/lib/rkhunter/scripts
mkdir -p $PKG/usr/sbin/
mkdir -p $PKG/usr/share/doc/$NAMEPKG-$VERSION
mkdir -p $PKG/usr/share/man/man8/
mkdir -p $PKG/usr/doc/$NAMEPKG-$VERSION

# La conf dans /etc
cp -a $TMP/$NAME/files/rkhunter.conf $PKG/etc/

# La BDD dans /var/lib/rkhunter
cp -a $TMP/$NAME/files/backdoorports.dat $PKG/var/lib/rkhunter/db/
cp -a $TMP/$NAME/files/mirrors.dat $PKG/var/lib/rkhunter/db/
cp -a $TMP/$NAME/files/programs_bad.dat $PKG/var/lib/rkhunter/db/
cp -a $TMP/$NAME/files/suspscan.dat $PKG/var/lib/rkhunter/db/
cp -rfa $TMP/$NAME/files/i18n $PKG/var/lib/rkhunter/db/

# On genere la 'base'
cat /etc/group > $PKG/var/lib/rkhunter/tmp/group
cat /etc/passwd > $PKG/var/lib/rkhunter/tmp/passwd

# Le binaire dans /usr/sbin
cp -a $TMP/$NAME/files/rkhunter $PKG/usr/sbin/

# Pour la DOC
for i in $DOC
do
    cp -a $TMP/$NAME/files/$i $PKG/usr/doc/$NAMEPKG-$VERSION
    cp -a $TMP/$NAME/files/$i $PKG/usr/share/$NAMEPKG-$VERSION
done

# Le man
cp -a $TMP/$NAME/files/rkhunter.8 $PKG/usr/share/man/man8/rkhunter.8

# Les libs
for i in check_modules.pl  filehashmd5.pl  filehashsha.pl  filehashsha1.pl  readlink.sh  stat.pl
do
    cp -a $TMP/$NAME/files/$i $PKG/usr/lib/rkhunter/scripts
done

# Modification du fichier de conf pour le bon fonctionnement
echo -e "
INSTALLDIR=/usr
DBDIR=/var/lib/rkhunter/db
SCRIPTDIR=/usr/lib/rkhunter/scripts
TMPDIR=/var/lib/rkhunter/tmp
USER_FILEPROP_FILES_DIRS=/etc/rkhunter.conf
" >> $PKG/etc/rkhunter.conf

# Verification de la presence du doinst.sh
if [ -r $CWD/doinst.sh ]; then
  cat $CWD/doinst.sh > $PKG/install/doinst.sh
fi


# Optimisation avant creation du package
find $PKG -type f | xargs file | grep "LSB executable" | cut -f 1 -d : | xargs \
  strip --strip-unneeded 2> /dev/null || echo "No binaries to strip"
find $PKG -type f | xargs file | grep "shared object" | cut -f 1 -d : | xargs \
  strip --strip-unneeded 2> /dev/null || echo "No shared objects to strip"
find $PKG -type f | xargs file | grep "current ar archive" | cut -f 1 -d : | \
  xargs strip -g 2> /dev/null || echo "No archives to strip"

# Creation du paquet
# rm -rf $CWD/$NAMESRC-$VERSION.$EXT
cd $PKG
mkdir -p $OUT
PACKAGING="
chown root:root . -R
/sbin/makepkg -l y -c n $OUT/$NAMEPKG-$VERSION-$ARCH-$BUILD.$PKGEXT
rm -rf $PKG
rm -rf $TMP/$NAME
"
if [ "$(which fakeroot 2> /dev/null)" ]; then
  echo "$PACKAGING" | fakeroot
else
  su -c "$PACKAGING"
fi

Merci @+ wink

Hors ligne

 

#2 31-07-2010 21:15:14

Tsomi
Membre trs actif
Date d'inscription: 09-08-2006
Messages: 684

Re: [SlackBuild] Rkhunter

Hello,

En vrac :
1) Quand tu fais "mkdir -p $PKG/etc/", le slash final n'est pas obligatoire. Mais l c'est purement cosmtique, donc tu fais comme tu veux smile .
2) La partie suivante :

Code:

cat /etc/group > $PKG/var/lib/rkhunter/tmp/group
cat /etc/passwd > $PKG/var/lib/rkhunter/tmp/passwd

... me parait trange, mais je connais pas du tout rkhunter. Ce n'est pas possible de faire un lien symbolique au lieu de faire une copie des fichiers prsents sur le systme ? D'ailleurs, je vois qu'il y a un tmp dans le nom du dossier, et je me demande donc si a a sa place dans un paquet.
3) La man page doit aller dans /usr/man, pas /usr/share/man (Slackware ne respecte pas le FHS), et elle doit tre compresse avec gzip. Bref, quelque chose comme a :

Code:

cat $TMP/$NAME/files/rkhunter.8 | gzip -9c > $PKG/usr/man/man8/rkhunter.8.gz

4) rkhunter a l'air d'tre un ensemble de scripts shell / perl, non ? Si c'est le cas, alors il vaudrait mieux passer la variable ARCH la valeur "noarch", puisqu'il n'y a pas de binaire.

Voil voil...

Dernire modification par Tsomi (31-07-2010 21:16:53)

Hors ligne

 

#3 31-07-2010 23:50:45

g4tsu
Membre
Date d'inscription: 26-07-2010
Messages: 22

Re: [SlackBuild] Rkhunter

Lo smile

Pour la remarque n
1 : Ok je changerai smile
2 : Quand on installe via les sources, il fait une copie des fichiers. J'ai fait un cat car c'est fait comme ca (il me semble), on peut faire un cp aussi. Pas de liens symbolique car le soft est utilis en root et si, tout hasard, il fait des operations sur ces fichiers-l et qu'ils les corromps...
Pour le dossier tmp, il a sa place dans le paquet. En tout cas, lorsqu'on installe partir des sources, ce rpertoire et ces fichiers sont crs.

Remarque gnrale : J'ai essay de rester le plus prs possible des sources.

3 : Ok, erreur de ma part sad . Je modifierai et compresserai le man.
4 : Oui, c'est du perl/bash. Je passerai la variable noarch. (En fait la "compilation" est juste un placement de ces fichiers au bons endroits.)

Merci pour ton retour, j'essaierai d'appliquer les modifications rapidement. smile

Dernire modification par g4tsu (31-07-2010 23:51:41)

Hors ligne

 

#4 01-08-2010 13:11:26

g4tsu
Membre
Date d'inscription: 26-07-2010
Messages: 22

Re: [SlackBuild] Rkhunter

Modification ci-dessous :

Rem : seul le point 2 n'a pas t modifi.

Code:

#!/bin/bash
# by: g4tsu - http://www.slackware-fr.org <vion.nico@gmail.com>
#
# Build script for Slackware - Based on Generic SlackBuild
#
# Latest Software sourcecode is available at:
# http://www.rootkit.nl/projects/rootkit_hunter.html
#
# Depends: /
# Suggest: /

# Variables Obligatoires
NAMESRC=${NAMESRC:-rkhunter}
VERSION=${VERSION:-1.3.6}  
EXT=${EXT:-tar.gz} 
NAMEPKG=${NAMEPKG:-rkhunter}
PKGEXT=${PKGEXT:-tgz}
BUILD=${BUILD:-1sfo} 
 
# Variables de construction
TMP=${TMP:-/tmp}  
OUT=${OUT:-$TMP/build}  
TARGET=${TARGET:-$ARCH} 
WGET=${WGET:-http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.3.6/rkhunter-1.3.6.tar.gz?use_mirror=netcologne&ts=1280339820} 
SUM=${SUM:-rkhunter-1.3.6.tar.gz.sha1}
DOC=${DOC:-ACKNOWLEDGMENTS LICENSE FAQ CHANGELOG README*}
# Pas de binaire dans le paquet, uniquement des scripts perl et shell
ARCH="noarch"


set -e  
umask 022  
 

# Le SlackBuild verifie que vous ne le lancez pas en root.
if [ "$(id -u)" = "0" ]; then
  echo "You shouldn't run this SlackBuild as ROOT !"
  sleep 10
fi

# Telechargement des sources si ces-dernieres ne sont pas presentes.
if [ ! -r $NAMESRC-$VERSION.$EXT ]; then
  wget -vc $WGET -O $NAMESRC-$VERSION.$EXT.part
  mv $NAMESRC-$VERSION.$EXT.part $NAMESRC-$VERSION.$EXT
fi

# Verification de la somme sha1
if [ -n $SUM ]; then
 #echo "$SUM  $NAMESRC-$VERSION.$EXT" > $NAMESRC-$VERSION.$EXT.sha1
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
elif [ -f $NAMESRC-$VERSION.$EXT.sha1 ]; then
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
fi

# Variables temporaires
CWD=$(pwd)
PKG=$TMP/build/$NAMEPKG
NAME=$(tar ft $NAMESRC-$VERSION.$EXT | head -n 1 | awk -F/ '{ print $1 }')

# Verification du repertoire.
if [ ! -d $TMP ]; then
  echo "$TMP doesn't exist or is not a directory !"
  exit 1
fi

cd $TMP
echo "Building $NAMESRC-$VERSION.$EXT..."
tar xf $CWD/$NAMESRC-$VERSION.$EXT
cd $NAME

# Creation de l'arborescence rkhunter

mkdir -p $PKG/etc
mkdir -p $PKG/var/lib/rkhunter/db
mkdir -p $PKG/var/lib/rkhunter/tmp
mkdir -p $PKG/usr/lib/rkhunter/scripts
mkdir -p $PKG/usr/sbin
mkdir -p $PKG/usr/share/doc/$NAMEPKG-$VERSION
mkdir -p $PKG/usr/man/man8
mkdir -p $PKG/usr/doc/$NAMEPKG-$VERSION

# La conf dans /etc
cp -a $TMP/$NAME/files/rkhunter.conf $PKG/etc/

# La BDD dans /var/lib/rkhunter
cp -a $TMP/$NAME/files/backdoorports.dat $PKG/var/lib/rkhunter/db/
cp -a $TMP/$NAME/files/mirrors.dat $PKG/var/lib/rkhunter/db/
cp -a $TMP/$NAME/files/programs_bad.dat $PKG/var/lib/rkhunter/db/
cp -a $TMP/$NAME/files/suspscan.dat $PKG/var/lib/rkhunter/db/
cp -rfa $TMP/$NAME/files/i18n $PKG/var/lib/rkhunter/db/

# On genere la 'base'
cat /etc/group > $PKG/var/lib/rkhunter/tmp/group
cat /etc/passwd > $PKG/var/lib/rkhunter/tmp/passwd

# Le binaire dans /usr/sbin
cp -a $TMP/$NAME/files/rkhunter $PKG/usr/sbin/

# Pour la DOC
for i in $DOC
do
        cp -a $TMP/$NAME/files/$i $PKG/usr/doc/$NAMEPKG-$VERSION
        cp -a $TMP/$NAME/files/$i $PKG/usr/share/$NAMEPKG-$VERSION
done

# Le man
cat $TMP/$NAME/files/rkhunter.8 | gzip -9c > $PKG/usr/man/man8/rkhunter.8.gz

# Les libs
for i in check_modules.pl  filehashmd5.pl  filehashsha.pl  filehashsha1.pl  readlink.sh  stat.pl
do
        cp -a $TMP/$NAME/files/$i $PKG/usr/lib/rkhunter/scripts
done

# Modification du fichier de conf pour le bon fonctionnement
echo -e "
INSTALLDIR=/usr
DBDIR=/var/lib/rkhunter/db
SCRIPTDIR=/usr/lib/rkhunter/scripts
TMPDIR=/var/lib/rkhunter/tmp
USER_FILEPROP_FILES_DIRS=/etc/rkhunter.conf
" >> $PKG/etc/rkhunter.conf

# Verification de la presence du doinst.sh
if [ -r $CWD/doinst.sh ]; then
  cat $CWD/doinst.sh > $PKG/install/doinst.sh
fi


# Optimisation avant creation du package
find $PKG -type f | xargs file | grep "LSB executable" | cut -f 1 -d : | xargs \
  strip --strip-unneeded 2> /dev/null || echo "No binaries to strip"
find $PKG -type f | xargs file | grep "shared object" | cut -f 1 -d : | xargs \
  strip --strip-unneeded 2> /dev/null || echo "No shared objects to strip"
find $PKG -type f | xargs file | grep "current ar archive" | cut -f 1 -d : | \
  xargs strip -g 2> /dev/null || echo "No archives to strip"

# Creation du paquet
# rm -rf $CWD/$NAMESRC-$VERSION.$EXT
cd $PKG
mkdir -p $OUT
PACKAGING="
chown root:root . -R
/sbin/makepkg -l y -c n $OUT/$NAMEPKG-$VERSION-$ARCH-$BUILD.$PKGEXT
rm -rf $PKG
rm -rf $TMP/$NAME
"
if [ "$(which fakeroot 2> /dev/null)" ]; then
  echo "$PACKAGING" | fakeroot
else
  su -c "$PACKAGING"
fi

Hors ligne

 

#5 03-08-2010 00:23:37

Tsomi
Membre trs actif
Date d'inscription: 09-08-2006
Messages: 684

Re: [SlackBuild] Rkhunter

a m'a l'air OK smile . Y compris pour le rpertoire /var/lib/rkhunter/tmp ; c'est un peu moyen pour les dveloppeurs de rkhunter d'imposer un rpertoire de ce nom dans le paquet final, mais la plupart des distributions procdent aussi de la sorte.

Le point 2, j'ai cherch un peu, et mme dans le fichier .spec (quivalent au SlackBuild chez Red Hat et drives), ils font bien une copie de /etc/passwd et /etc/group (mme s'ils font un cp -p pour prserver la date de dernire modif, etc.). Alors peut-tre que rkhunter met jour ces copies lorsque les fichiers dans /etc ont chang, ou alors peut-tre que le fait que ce soit une copie a un intrt, tant donn que ce soft est cens dtecter les rootkits.

Je ne sais pas trop, en tout cas tu avais fait le bon choix. Donc, au temps pour moi.

Hors ligne

 

#6 03-08-2010 10:00:57

g4tsu
Membre
Date d'inscription: 26-07-2010
Messages: 22

Re: [SlackBuild] Rkhunter

Ok,

En fait il y a dans rkhunter une option qui met jour la BDD. (-propud ou un truc du genre). Je pense que ces fichiers "font partie de la BDD".
En tout cas, si j'ai fait le bon choix et que l'on est d'accord, alors c'est cool smile

@+

Hors ligne

 

#7 03-08-2010 13:56:52

g4tsu
Membre
Date d'inscription: 26-07-2010
Messages: 22

Re: [SlackBuild] Rkhunter

Modification de la ligne $ARCH

Prsent sur mon svn en ro :

Code:

svn checkout svn://linuxspirit.fr/slackbuilds

Hors ligne