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) :
-
#!/usr/bin/perl
-
require HTTP::Request;
-
use LWP::UserAgent;
-
-
my $kernelUrl = recupKernel();
-
my $kernelVersion = recupKernelVersion($kernelUrl);
-
my $grsecUrl = recupGrSec($kernelVersion);
-
my $grsecName = recupGrSecName($grsecUrl);
-
if($kernelUrl && $grsecUrl)
-
{
-
print "Url du dernier kernel stable : $kernelUrl\n";
-
print "Version du kernel : $kernelVersion\n";
-
print "Url du dernier patch GrSec stable : $grsecUrl\n";
-
print "Nom du Patch : $grsecName\n";
-
print "Recuperation du kernel : \n";
-
my $rK = `wget $kernelUrl`;
-
-
print "Recuperation du patch : \n";
-
my $rG = `wget $grsecUrl`;
-
print "Extraction des données et compilation\n";
-
my $dT = `tar -xjf *.tar.bz2 && patch -p0 > $grsecName`;
-
}
-
-
sub recupKernel
-
{
-
my $req = HTTP::Request->new(GET => "http://kernel.org/");
-
my $ua = LWP::UserAgent->new;
-
$ua->agent("Firefox/4.0");
-
my $res = $ua->request($req);
-
if ($res->is_success) {
-
my $text = $res->content;
-
my $recherche = '<table id="brbtable([\n\t\r\W\w]*?)</table>';
-
$text =~ m/($recherche)/gm;
-
return recupHrefUrl($2);
-
}
-
return '';
-
}
-
sub recupHrefUrl
-
{
-
my $ret=$_[0];
-
my $recherche = 'href="([^"]*)';
-
$ret =~ m/($recherche)/gm;
-
return $2;
-
}
-
-
sub recupKernelVersion
-
{
-
my $ret=$_[0];
-
my $recherche = 'linux-([0-9]+.[0-9]+.[0-9]+.[0-9]+)';
-
$ret =~ m/($recherche)/gm;
-
return $2;
-
}
-
-
sub recupGrSecName
-
{
-
my $ret=$_[0];
-
my $recherche = '/(grsecurity.*.patch)';
-
$ret =~ m/($recherche)/gm;
-
return $2;
-
}
-
-
sub recupGrSec
-
{
-
my $kernelV = $_[0];
-
my $req = HTTP::Request->new(GET => "http://www.grsecurity.net/test.php");
-
my $ua = LWP::UserAgent->new;
-
$ua->agent("Firefox/4.0");
-
my $res = $ua->request($req);
-
if ($res->is_success) {
-
my $text = $res->content;
-
my $recherche = "href=\"(test/grsecurity-[.0-9]+-$kernelV-[0-9]+.patch)\"";
-
$text =~ m/($recherche)/gm;
-
return "http://www.grsecurity.net/$2";
-
}
-
return '';
-
}
Il suffit ensuite d’executer la commande suivante :
-
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 … ).
