Mémo – Couteau suisse linux

htop : Un top mais en mieux (monitoring en temps réel coloré)

clamtk : Scanner les clés USB de vos utilisateurs Windows Clamtk

grep -E -v '^(#|$)' fic.conf : Décommenter un fichier de conf

trickle : Limite la bande passante d’une application!

cp /etc/apache2/apache2.conf{,.bak} Reviens a faire  cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak

tsocks : Faire passer le flux réseau dans un proxy socks netcat :

nc pour faire du client / serveur en bash

Perlbrew – Perl indépenant du système

PerlBrew permet d’installer une version de Perl indépendante de celle du système ce qui permet d(éviter les conflits entre les scripts maison et les paquets système.

Avec Perlbrew il est possible d’installer Perl dans le HOME d’un utilisateur ou dans un répertoire type /opt/perl5 (ce que nous avons choisie ici)

Note : cpan fonctionne normalement avec Perlbrew

Installation

Environnement

Par défaut Perlbrew s’installe dans $HOME/perl5, nous souhaitons l’installer dans /opt/perl5, il faut donc lui préciser un autre lieu :

 $ export PERLBREW_ROOT=/opt/perl5</pre>
$ cd /opt/perl5
$ curl -k -LO http://xrl.us/perlbrew
$ perl ./perlbrew install
$ rm ./perlbrew
$ /opt/perl5/bin/perlbrew init

Les commandes suivante vont modifier le PATH afin

 $ echo "export PERLBREW_ROOT=/opt/perl5" >> ~/.bashrc
$ echo "source /opt/perl5/etc/bashrc" | tee -a ~/.bashrc

Déconnectez-vous ou relancer la bash. Vous devriez avoir de nouvelles variables d’environnement :

 $ env | grep PATH
PATH=/opt/perl5/bin:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/bin:/opt/scala/cur/bin:/usr/local/mysql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/scala/cur/bin
PERLBREW_PATH=/opt/perl5/bin

Installation de perl

 $ perlbrew mirror
# Choisir par exemple : 78 : OVH
$ perlbrew -v install perl-5.14.2 -Dusethreads

Switch perl

Actuellement sur le système perl v5.8.8

 $ perl -v

This is perl, v5.8.8 built for x86_64-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
 GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
 this system using "man perl" or "perldoc perl".  If you have access to the
 Internet, point your browser at http://www.perl.org/, the Perl Home Page.

On switch sur l’install de perl 5.14.2

$ perlbrew switch perl-5.14.2
$ perl -v

This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux

Copyright 1987-2011, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
 GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
 this system using "man perl" or "perldoc perl".  If you have access to the
 Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Retour sur la version système :

 $ perlbrew off
perlbrew is turned off.
$ perl -v

This is perl, v5.8.8 built for x86_64-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
 GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
 this system using "man perl" or "perldoc perl".  If you have access to the
 Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Perl & le CPAN

Installation de CPAN

 $ perlbrew switch perl-5.14.2
$ cpan
# Answer all setup instructions
» o conf commit
» q

Utilisation CPAN

 $ cpanm --interactive -v App::cpanoutdated

Source

  • http://www.perlbrew.pl/
  • http://blog.fox.geek.nz/2010/09/installing-multiple-perls-with.html
  • http://nxadm.wordpress.com/2010/12/10/get-the-latest-perl-release-with-perlbrew/
  • http://www.perl.org/get.html
  • http://search.cpan.org/~gugod/App-perlbrew-0.39/bin/perlbrew#INSTALLATION

WakeOnLan sur internet

Activer le WOL et vérifier que la carte réseau le supporte

Le WOL doit être activé pour la carte réseau. Ce n’est pas toujours le cas pour des raisons évidentes de sécurité puisque n’importe qui pourrait démarrer un ordinateur en connaissant uniquement l’adresse mac. Cela s’effectue dans le BIOS de l’ordinateur à démarrer tout simplement.

Sous debian, pour voir si votre carte réseau supporte le WOL, exécuter la commande (en root):

aptitude install ethtool

ethtool eth0
Vous devez obtenir la ligne suivante : Supports Wake-on: g

Si vous obtenez la ligne suivante :

Wake-on: d
c’est que votre carte réseau n’est pas activée pour le WOL. Pour l’activer taper la commande :

ethtool -s eth0 wol g
Cependant, sous GNU/linux lors de l’extinction, le système désactive les interfaces réseaux. Pour supprimer cette sécurité (et c’en est une car elle évite que la machine puisse être réveillée par le réseau sans une intervention volontaire), un des moyens est d’écrire la dite ligne de commande :

ethtool -s eth0 wol g
dans le fichier /etc/rc.local avant la ligne :

exit 0

Sur la machine cliente

apt-get install wakeonlan
Sur un réseau local
wakeonlan 00:0D:9D:9B:BA:xx
A travers internet
wakeonlan -i 78.yyy.xxx.zzz 00:0D:9D:9B:BA:xx
78.yyy.xxx.zzz étant l’IP. Veuillez à avoir paramétrer votre pare-feu pour laisser passer port 9 (par défaut)

Installer Postgrey avec Postfix (Greylist) + postgreyreport

Postgrey permettra à votre serveur mail de lutter de manière radicale contre le Spam..

Son fonctionnement est simple, il refuse une première fois n’importe quel mail qui arrive et enregistre l’IP de l’hôte distant, les vrais serveurs mail gardent les messages en queue et tentent de les renvoyer quelques minutes plus tard.

C’est la que Postgrey acceptera le message, seulement si il est renvoyé : Les spammeurs ne renvoient que très rarement un même mail avec une même IP. Nous utiliseront donc une balcklist pour supprimer ceux qui aurait réussi à passer.

Le greylist se base sur le respect de la RFC 2821, page 4647

Lorsqu’un même serveur envois 5 mails et qu’ils sont valide, il enregistre automatiquement son IP en whitelist.

Installation :

aptitide install postgrey

Editer le fichier /etc/postfix/main.cf :

smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:60000

Pour avoir des rapports sur l’acivité de postrey taper :

cat /var/log/mail.log | postgreyreport --nosingle_line --check_sender=mx,a --separate_by_subnet=":==================\n

 

Brider la bande passante sous linux (Traffic Shaping)

Afin de brider la bande passante d’un serveur en giga (ici on la limité à 500mbps) utilisez ce script :

#!/bin/bash
#
#  tc uses the following units when passed as a parameter.
#  kbps: Kilobytes per second
#  mbps: Megabytes per second
#  kbit: Kilobits per second
#  mbit: Megabits per second
#  bps: Bytes per second
#       Amounts of data can be specified in:
#       kb or k: Kilobytes
#       mb or m: Megabytes
#       mbit: Megabits
#       kbit: Kilobits
#  To get the byte figure from bits, divide the number by 8 bit
#

#
# Name of the traffic control command.
TC=/sbin/tc

# The network interface we're planning on limiting bandwidth.
IF=eth0             # Interface

# Download limit (in mega bits)
#DNLD=1mbit          # DOWNLOAD Limit
DNLD=500mbps          # DOWNLOAD Limit

# Upload limit (in mega bits)
#UPLD=1mbit          # UPLOAD Limit
UPLD=500mbps          # UPLOAD Limit

# IP address of the machine we are controlling
IP=0.0.0.0    # Host IP
# Masque
MAS=0

# Filter options for limiting the intended interface.
U32=&quot;$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32&quot;

start() {

# We'll use Hierarchical Token Bucket (HTB) to shape bandwidth.
# For detailed configuration options, please consult Linux man
# page.

$TC qdisc add dev $IF root handle 1: htb default 30
$TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD
$TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD
$U32 match ip dst $IP/$MAS flowid 1:1
$U32 match ip src $IP/$MAS flowid 1:2

# The first line creates the root qdisc, and the next two lines
# create two child qdisc that are to be used to shape download
# and upload bandwidth.
#
# The 4th and 5th line creates the filter to match the interface.
# The 'dst' IP address is used to limit download speed, and the
# 'src' IP address is used to limit upload speed.

}

stop() {

# Stop the bandwidth shaping.
$TC qdisc del dev $IF root

}

restart() {

# Self-explanatory.
stop
sleep 1
start

}

show() {

# Display status of traffic control status.
$TC -s qdisc ls dev $IF

}

case &quot;$1&quot; in

start)

echo -n &quot;Starting bandwidth shaping: &quot;
start
echo &quot;done&quot;
;;

stop)

echo -n &quot;Stopping bandwidth shaping: &quot;
stop
echo &quot;done&quot;
;;

restart)

echo -n &quot;Restarting bandwidth shaping: &quot;
restart
echo &quot;done&quot;
;;

show)

echo &quot;Bandwidth shaping status for $IF:&quot;
show
echo &quot;&quot;
;;

*)

pwd=$(pwd)
echo &quot;Usage: tc.bash {start|stop|restart|show}&quot;
;;

esac

exit 0

Embellir ses scripts bash (avec de la couleur)

La commande “tput” permet de gérer l’adressage du curseur et les séquences de contrôle du terminal. Vous pourrez notamment faire une mise en page d’un script interactif

#### Initialisation des variables ####

#+ Mode normal
RESETCOLOR="$(tput sgr0)"
# "Surligné" (bold)
SURLIGNE=$(tput smso)
# "Non-Surligné" (offbold)
NONSURLIGNE=$(tput rmso)

# Couleurs (gras)
#+ Rouge
ROUGE="$(tput bold ; tput setaf 1)"
#+ Vert
VERT="$(tput bold ; tput setaf 2)"
#+ Jaune
JAUNE="$(tput bold ; tput setaf 3)"
#+ Bleu
BLEU="$(tput bold ; tput setaf 4)"
#+ Cyan
CYAN="$(tput bold ; tput setaf 6)"

#### Fin initialisation variables ####

# Effacement du terminal
clear

# Adressage du curseur ligne 0 colonne 2
tput cup 0 2
echo "Entrez les informations demandées dans le champ ayant le curseur."
# Adressage du curseur ligne 1 colonne 2
tput cup 1 2
echo "Appuyez sur Entrée pour passer au champ suivant."
# Adressage du curseur ligne 3 colonne 20
tput cup 3 30
echo "${SURLIGNE}Questions/Réponses${NONSURLIGNE}"

# Pré-affichage des champs
tput cup 5 5
echo -e "Nom : \c"
tput cup 7 5
echo -e "Prénom : \c"
tput cup 9 5
echo -e "Age : \c"

# Facultatif
# Pré-affichage des données
tput cup 12 2
echo -e "Votre nom est : "
tput cup 13 2
echo -e "Votre prénom est : "
tput cup 14 2
echo -e "Vous avez  ans. "

#### Interaction du script ####
# Adressage du curseur ligne 5 colonne 5
tput cup 5 5
echo -e "Nom : \c"
read nom
# Adressage du curseur ligne 7 colonne 5
tput cup 7 5
echo -e "Prénom : \c"
read prenom
# Adressage du curseur ligne 9 colonne 5
tput cup 9 5
echo -e "Age : \c"
read age

#### Affichage des réponses ####
# Adressage du curseur ligne 12 colonne 2
tput cup 12 2
echo -e "${VERT}Votre nom est : ${RESETCOLOR}"${ROUGE}$nom${RESETCOLOR}
# Adressage du curseur ligne 13 colonne 2
tput cup 13 2
echo -e "${VERT}Votre prénom est : ${RESETCOLOR}"${CYAN}$prenom${RESETCOLOR}
# Adressage du curseur ligne 14 colonne 2
tput cup 14 2
echo -e "${VERT}Vous avez ${JAUNE}$age ${VERT}ans. ${RESETCOLOR}"
# Adressage du curseur ligne 20 colonne 0
tput cup 20 0