par2 (Parity Archive Volume Set), vérifier et réparer des archives avec les fichiers .PAR2

Les archives binaires sur Usenet sont complétés par des fichiers de controles qui permettent de recréer une archive corrompue, ce sont les fichiers par2. Le principe est similaire aux technologies RAID, il est possible, à l’aide d’ensemble de fichiers de parité de vérifier l’intégrité de chacun des segments de l’archive, et de les réparer si certains sont corrompus.

Sous Windows QuickPar permet reconstituer le fichier original d’une archive manquante ou abîmée. Le pendant sous Ununtu est par2

1. Avec les dépots universe et multiverse

sudo apt-get install par2

2. Nautilus-script
#!/bin/sh
par2repair -q « $1 » | zenity –text-info –title « PAR2 » –width=500 –height=500

Sources : camboui sur forum.ubuntu-fr.org

3. Réparer une archive


Filed under: Ubuntu — Étiquettes : , , , — admin @ 17 septembre 2006 13 h 38 min

Script de génération automatique de galeries PhpWebGallery

PhpWebGallery est une trés bonne application web PHP (sous licence GPL), qui permet de créer facilement une galerie de photos en ligne. Elle est proposée en standard dans les modules des pages perso de FREE. le hic c’est que la génération de galerie n’est pas automatique et la nomenclature des fichiers est trés précise. Sous Windows on a phpMyVignettes mais rien en GUI sous Linux (à ma connaissance). après quelques recherches j’ai trouvé pas mal de scripts qui réalisent ça mais rien que me colle vraiment, alors j’en ai adapté plusieurs pour avoir un résultat perso :

Script PhpWebGallery_create_v2.0.sh => Génération automatique de galeries au format PhpWebGallery (génération répertoire, miniatures, photos pwg_high, …), à intégrer dans les nautilus script (s’applique aux fichiers selectionnés, ne les modifie pas ), nécessite le paquet Imagemagick et zenity

pwg_script.png

Maj : 17/07/2007

Demande du nom de la galerie
Crée les dossier $GALERY_NAME , $GALERY_NAME/THUMB_DIR et $GALERY_NAME/REAL_DIR dans le dossier courant
Traite les images originales et les copie dans le dossier $GALERY_NAME/THUMB_DIR, 3 choix possibles
Aucun, déplacement de l’original
Augmente la compression en gardant la résolution originale
Réduit la résolution originale sans compression à $REAL_L et $REAL_H
Création des images affichées dans la galerie (à 800×600, variable PICT_L et PICT_H) dans le dossier $GALERY_NAME
Création des miniatures (à 128×96, variable THUMB_L et THUMB_H) dans le dossier $GALERY_NAME/THUMB_DIR

#!/bin/bash
############################################################################################
# Taltan – http://www.taltan.fr #
############################################################################################
# Script PhpWebGallery_create_v2.0.sh #
# Licence : GNU / GPL #
############################################################################################
# Inspiré du script Rep2Thumb.sh de Gothico #
# http://forum.phpwebgallery.net/viewtopic.php?id=5522 #
# Inspiré du script gallery.sh de wiloo #
# http://forum.phpwebgallery.net/viewtopic.php?pid=37829 #
############################################################################################
# Script de création de galerie pour PhpWebGallery #
# A intégrer dans les nautilus script (applicable aux fichiers selectionnés) #
# Création de miniatures #
# Création de photos redimensionnées #
############################################################################################
# Dépendances #
############################################################################################
# – Nécessite le paquet imagemagick : http://doc.ubuntu-fr.org/imagemagick #
# – Nécessite le paquet zenity #
# => sudo apt-get install imagemagick zenity #
############################################################################################
# 02/09/06 – v1.0 – Création #
# 17/09/07 – v2.0 – Ajout différents tests avant exécution #
# – Ajout de l’interface zenity #
############################################################################################
########################################################################
## CONFIGURATION ##
########################################################################
# vérifie si imagemagick est installé
which convert 2>/dev/null
if [ $? != 0 ]
then
zenity –error –title= »Erreur » –text= »La paquet Imagemagick n’est pas installé »
fi
#teste si au moins 1 fichier est selectioné
if [ $# -eq 0 ]; then
zenity –error –title= »Erreur » –text= »Selectionner au moins 1 fichier »
exit 1
fi
# Chemin complet de la galerie à créer
GALLERY_PATH= »`pwd` »
##
# Nom de la galerie
while [ ! « $GALERY_NAME » ] # Réafficher la fenetre tant que l’utilisateur n’a pas fait de choix
do
GALERY_NAME=`zenity –title « Nom de la galerie » –entry –text « Entrer le nom de la galerie »`
if [ $? != 0 ]; then
exit 1
fi
[ $? -ne 0 ] && exit 2 # Annulation
done
# Nom du répertoire à créer pour les miniatures
# (« thumbnail » par défaut dans phpwebgallery)
THUMB_DIR= »thumbnail »
# Nom du répertoire à créer pour les images tailles réelles
# (« pwg_high » par défaut dans phpwebgallery)
REAL_DIR= »pwg_high »
# Préfixe des miniatures
THUMB_PREFIX= »TN- »
## L pour Largeur
## H pour Hauteur
# Taille des photos miniatures
THUMB_L= »128″
THUMB_H= »96″
# Taille des photos à afficher dans phpwebgallery
PICT_L= »800″
PICT_H= »600″
# Taille des photos images tailles réelles dans REAL_DIR
REAL_L= »1280″
REAL_H= »1024″
# Garder les données EXIF ou non
# Avec EXIF => «  »
# Sans EXIF => « -strip »
EXIF= » »
# Choix du traitement pour l’image en taille réelle

while [ ! « $TRAIT_REAL_CHOICE » ] # Réafficher la fenetre tant que l’utilisateur n’a pas fait de choix
do
TRAIT_REAL_CHOICE=`zenity –list –width=500 –height=200 \
–title= »Choisissez le type de traitement pour l’image en taille réelle » \
–column= »N° » –column= »Description » \
a « Aucun, déplacement de l’original » \
b « Augmente la compression en gardant la résolution originale » \
c « Réduit la résolution originale sans compression »`
###### Choix -> Sortie boucle ######
if [ $? != 0 ]; then
exit 1
fi
[ $? -ne 0 ] && exit 2 # Annulation
done

if [ $TRAIT_REAL_CHOICE == « a » ] # Déplacement de l’original dans le répertoire configuré pour les mages tailles réelles
then
trait_real ()
{
cp « $parametre » « $GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre »
}
fi
if [ $TRAIT_REAL_CHOICE == « b » ] # Augmente la compression en gardant la résolution originale
then
trait_real ()
{
convert -density 72 $EXIF « $GALLERY_PATH/$parametre » « $GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre »
}
fi
if [ $TRAIT_REAL_CHOICE == « c » ] # Réduit la résolition originale sans compression
then
trait_real ()
{
convert $EXIF -resize $REAL_SIZE « $GALLERY_PATH/$parametre » « $GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre »
}
fi
########################################################################
## TRAITEMENT DES IMAGES ##
########################################################################
# Création des miniatures dans le répertoire configuré
mkdir « $GALLERY_PATH/$GALERY_NAME »
mkdir « $GALLERY_PATH/$GALERY_NAME/$THUMB_DIR »
mkdir « $GALLERY_PATH/$GALERY_NAME/$REAL_DIR »
numParam=1
erreur=0
nb_param= »$# »
for parametre in « $@ »;
do
# Orientation de la photo
L= »`identify « $parametre » | cut -d\ -f3 | cut -dx -f1` »
H= »`identify « $parametre » | cut -d\ -f3 | cut -dx -f2` »
if [ $L -gt $H ]
then
THUMB_SIZE= »${THUMB_L}x${THUMB_H} »
PICT_SIZE= »${PICT_L}x${PICT_H} »
REAL_SIZE= »${REAL_L}x${REAL_H} »
else
THUMB_SIZE= »${THUMB_H}x${THUMB_L} »
PICT_SIZE= »${PICT_H}x${PICT_L} »
REAL_SIZE= »${REAL_H}x${REAL_L} »
fi
echo « ${numParam}. Traitement de $parametre : …. OK  »
# traitement pour l’image en taille réelle
trait_real $parametre
# Création des images affichées dans la galerie
convert -density 72 $EXIF -resize $PICT_SIZE « $GALLERY_PATH/$GALERY_NAME/$REAL_DIR/$parametre » « $GALLERY_PATH/$GALERY_NAME/$parametre »;
# Création des miniatures dans le répertoire configuré pour les miniature
convert -thumbnail $THUMB_SIZE -density 72 « $GALLERY_PATH/$GALERY_NAME/$parametre » « $GALLERY_PATH/$GALERY_NAME/$THUMB_DIR/$THUMB_PREFIX$parametre »;

let $[numParam += 1]
if [ $numParam -gt « $# » ] ; then
echo « —————————————– »
echo « Fin de traitement : $# fichiers  »
echo « —————————————– »
echo « OK, vous pouvez fermer ! »
fi
done | zenity –text-info –title « PhpWebGallery_create » –width=500 –height=500

NB : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien 😉


Filed under: Linux — Étiquettes : , , , — admin @ 2 septembre 2006 22 h 06 min

Conversion de fichiers audio

« Combien de fois je me suis retrouvé avec des fichiers musicaux illisibles sur mon baladeur MP3, à me demander quel soft utiliser pour pour les convertir. Alors oui, il y a l’artillerie lourde des applications GUI (Graphic User Interface) avec moult clics et suivant, suivant, …, alors qu’une simple ligne de commande peut résoudre cette problématique. Ci dessous quelques exemples (non exhaustif) des ces possibilités :

Convertir OGG –> MP3

MP3 à 128kbs, les .mp3 sont stockés dans un répertoire à part (mp3), nécessite les outils ogg (vorbis-tools) et le codec lame

$ sudo apt-get install lame vorbis-tools
$ cd "le répertoire qui contient les fichiers ogg"
$ mkdir mp3; for i in *.ogg; do new_name=`echo "$i" | sed s/.ogg/.mp3/g`; ogg123 -d wav -f - "$i" | lame -h - >
 mp3/"$new_name"; done

Convertir MP3 –> OGG

Les .ogg sont stockés dans un répertoire à part (ogg), nécessite les outils ogg (vorbis-tools) et le MPEG layer 1/2/3 audio player (mpg123)

$ sudo apt-get install mpg123 vorbis-tools
$ cd "le répertoire qui contient les fichiers ogg"
$ mkdir ogg; for i in *.mp3; do new_name=`echo "$i" | sed s/.mp3/.ogg/g`; mpg123 -b 10000 -s "$i" | sox -t raw
 -r 44100 -s -w -c2 - ogg/temp.wav; oggenc ogg/temp.wav -o ogg/"$new_name"; done; rm -f ogg/temp.wav

Convertir MPC –> WAV

Les .wav sont stockés dans un répertoire à part (wav), nécessite le codec lame et le décodeur mppdec

$ cd "le répertoire qui contient les fichiers mpc"
$ mkdir wav; for i in *.mpc; do new_name=`echo "$i" | sed s/.mpc/.wav/g`; mppdec-static "$i" wav/"$new_name"; done

Convertir WAV –> MP3

Ici MP3 à 160kbs, les .mp3 sont stockés dans un répertoire à part (mp3), nécessite le codec LAME

$ cd "le répertoire qui contient les fichiers wav"
$ mkdir mp3; for i in *.wav; do new_name=`echo "$i" | sed s/.wav/.mp3/g`; lame --abr 160 "$i" "new_name" ; done

Convertir WAV –> OGG

Ici OGG à average bitrate » de 202 kb/s environ, les .ogg sont stockés dans un répertoire à part (ogg), nécessite les outils ogg (vorbis-tools), plus d’info sur le Petit Linux

$ cd "le répertoire qui contient les fichiers wav"
$ for i in *.wav; do oggenc -q 6 $i ; done

Convertir WMA –> MP3

MP3 à 192kbs, les .mp3 sont stockés dans un répertoire à part (mp3), nécessite mplayer et le codec lame

$ sudo apt-get install lame mplayer
$ cd "le répertoire qui contient les fichiers wma"
$ mkdir mp3 ;for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader "$i" && lame
-m j -h --vbr-new -b 192 
audiodump.wav -o "`basename "$i" .wma`.mp3"; done; rm -f audiodump.wav ; mv *.mp3 mp3/

Couper un fichier MP3

Ici MP3 à 128kbs, nécessite le codec LAME, la première commande génére un fichier temporaire audiodump.wav à supprimer par la suite ici coupe le MP3 à partir de 27 mins 50 sec du début pendant 09 min 48 s

$ cd "le répertoire qui contient le fichier à couper"
$ mplayer -vc null -vo null -ao pcm -ss 00:27:50 -endpos 00:09:48 mon_fichier.mp3 ; lame --abr 128 audiodump.wav
 mon_fichier_coupé.mp3

Liens : http://giminik.developpez.com/articles/debian-gnu-linux/gravure-audio-ligne-commande
« Fin de citation
source: blog.taltan.bkp


Filed under: Linux — Étiquettes : , , — admin @ 27 juin 2006 12 h 16 min

Script de sauvegarde des fichiers DotClear

« J’ai effectué ma première mise à jour DotClear aujourd’hui, le passage de la version 1.2.4 à 1.2.5. La mise à jour se fait d’ailleurs simplement en installant un plugin de mise à jour vers DotClear 1.2.5. Avant toutes mises à jour il faut sauvegarder ses pages et sa base. Voila donc une ébauche de script qui permet d’automatiser la sauvegarde des fichiers DotClear, en résumé :

Sauvegarde des dossiers conf, share, images, themes et ecrire/tools
Créer une archive de la forme 2006_06_09_14:14:10_DC.tar.gz
Utilise wget et l’accès FTP de l’hébergeur (ici FREE)

#!/bin/bash
###############################################################################
# NOM: /etc/scripts/dc_backup.sh
# COMMENTAIRE : script de sauvegarde distant des fichier dotclear
# Sauvegarde des dossiers conf, share, images, themes et ecrire/tools
# Utilise wget et l’accès FTP de l’hébergeur (ici FREE)
###############################################################################
# 09/06/2006 # Maj 09/06/2006
###############################################################################
# Variables
###############################################################################
ftp_url= »ftpperso.free.fr » # URL du serveur FTP
ftp_user= »utilsateur » # Utilisateur FTP
ftp_pass= »mot de passe » # Mot de passe
save_dir= »conf share images themes ecrire/tools » # Dossiers à sauvegarder
gz_file_path= »/home/user/bkp » # emplacement du fichier backup

cd /tmp
for i in $save_dir
do
wget -r -np ftp://$ftp_user:$ftp_pass@$ftp_url/$i/*
done
tar -cvzf $gz_file_path/`date « +%Y_%m_%d_%H:%M:%S »`_DC.tar.gz $ftp_url
rm -rf /tmp/$ftp_url

 » fin de citation
source: blog.taltan.bkp


Filed under: Dotclear — Étiquettes : , , , , — admin @ 9 juin 2006 13 h 34 min

Netfilter scripts de configuration iptables

« Voila 3 scripts qui permettent de réaliser un firewall minimaliste mais efficace testé sous Debian et Ubuntu (transposable sur tout autre distrib basé sur Debian ou non d’ailleurs avec des petites modifications). Le script d’initialisation des tables iptables sont largement inspirés de ceux trouvés ici http://olivieraj.free.fr/fr/linux/programme/netfilter_cfg/

Ces scripts sont prévus pour une machine personnelle sur la quelle peut tourner les services http, ftp et ssh accessible depuis l’internet, la machine en question est derrière une freebox v4 en mode routeur et le DHCP est activé (fixé sur adresse MAC)

Maj 12/08/2006

/etc/scripts/iptables_init.sh

Script d’initialisation des tables iptables, à placer dans le dossier /etc/scripts. Les variables globales sont à rensengner selon l’environnement
#!/bin/sh -norc
###############################################################################
# NOM: /etc/scripts/iptables_init.sh
# COMMENTAIRE : Utilisation du suivi de connexion (ip_conntrack)
###############################################################################
###############################################################################
# Variables globales
###############################################################################
echo  » + ============== INITIALISATION DES TABLES NETFILTER =============== »
# Parametrage du reseau local (LAN = Local Area Network)
DHCP=1 ; # 1:DHCP actif / 0:DHCP inactif pour l’attribution d’IP local
VMWARE=1 ; # 1:VmWare actif / 0:VmWare inactif
VMWARE_ETH1=vmnet1 ; # Interface reseau virtuelle VmWare 1
VMWARE_LAN_NET1=192.168.218.0/24; # Reseau interne VmWare 1
VMWARE_IP1=192.168.218.1 ; # IP Interface reseau virtuelle VmWare 1
VMWARE_BCAST1=192.168.218.255 ; # Adresse de broadcast Interface reseau virtuelle VmWare 1
VMWARE_ETH2=vmnet8 ; # Interface reseau virtuelle VmWare 2
VMWARE_LAN_NET2=172.16.120.0/24 ; # Reseau interne VmWare 2
VMWARE_IP2=172.16.120.1 ; # IP Interface reseau virtuelle VmWare 2
VMWARE_BCAST2=172.16.120.255 ; # Adresse de broadcast Interface reseau virtuelle VmWare 2
LAN_ETH=eth0 ; # Interface reseau interne
LAN_IP=192.168.0.1 ; # Adresse reseau interne
LAN_NETWORK=192.168.0.0/24 ; # Reseau interne
LAN_BROADCAST=192.168.0.255 ; # Adresse de broadcast interne
MULE_TCP_PORT=8270 ; # Port TCP utilise par *mule
MULE_UDP_PORT=8271 ; # Port UDP utilise par *mule
FTP_SRV=0 ; # Serveur FTP local 1:actif / 0:inactif
FTP_SRV_PORT=21 ; # Port d’ecoute du serveur FTP local
SSH_SRV=0 ; # Serveur SSH local 1:actif / 0:inactif
SSH_PORT=22 ; # Port d’ecoute du serveur SSH local
WEB_SRV=0 ; # Serveur WEB local 1:actif / 0:inactif
WEB_PORT=80 ; # Port d’ecoute du serveur SWEB local
###############################################################################
### Initialisation des tables
###############################################################################
# Initialise la table Filter (par defaut tout les echanges sont refuses)
echo  » + Initialisation de la table Filter »
iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# Initialise la table NAT (par defaut tout les echanges sont actives)
echo  » + Initialisation de la table NAT »
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

# Initialise la table Mangle (par defaut tout les echanges sont actives)
echo  » + Initialisation de la table MANGLE »
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT

# Desactivation du NAT (fonction routeur)
echo  » + Desactivation du NAT »
echo 0 > /proc/sys/net/ipv4/ip_forward

###############################################################################
### Creation des regles de filtrages
###############################################################################
# Autorise l’interface loopback à dialoguer avec elle-meme
echo  » + Regles du localhost »
iptables -t filter -A OUTPUT -o lo -p all -j ACCEPT
iptables -t filter -A INPUT -i lo -p all -j ACCEPT

# Autorise les connexions avec le reseau LAN connecte à l’interface $LAN_ETH
echo  » + Regles du reseau local ($LAN_ETH – $LAN_IP – $LAN_NETWORK) »
# Connexions firewall <-> reseau
iptables -t filter -A OUTPUT -o $LAN_ETH -s $LAN_IP -d $LAN_NETWORK -m state –state ! INVALID -j ACCEPT
iptables -t filter -A INPUT -i $LAN_ETH -s $LAN_NETWORK -d $LAN_IP -m state –state ! INVALID -j ACCEPT

# Connexions firewall <-> broadcast reseau
iptables -t filter -A OUTPUT -o $LAN_ETH -s $LAN_IP -d $LAN_BROADCAST -m state –state ! INVALID -j ACCEPT
iptables -t filter -A INPUT -i $LAN_ETH -s $LAN_NETWORK -d $LAN_BROADCAST -m state –state ! INVALID -j ACCEPT

# Autorise l’attribution d’IP par DHCP
if [ « $DHCP » == « 1 » ]; then
echo  » + DHCP actif »
iptables -A INPUT -i $LAN_ETH -s 0.0.0.0 -d 255.255.255.255 \
-p udp –sport bootpc –dport bootps -m state –state NEW,ESTABLISHED -j ACCEPT
else
echo  » + DHCP desactive »
fi

# Autorise le dialogue avec les interfaces virtuelles VmWare
if [ « $VMWARE » == « 1 » ]; then
echo  » + VmWare actif »
echo  » + Regles du reseau local ($VMWARE_ETH1 – $VMWARE_IP1 – $VMWARE_LAN_NET1) »
# Connexions firewall <-> reseau VMWARE_LAN_NET1
iptables -t filter -A OUTPUT -o $VMWARE_ETH1 -s $VMWARE_IP1 -d $VMWARE_LAN_NET1 -m state –state ! INVALID -j ACCEPT
iptables -t filter -A INPUT -i $VMWARE_ETH1 -s $VMWARE_LAN_NET1 -d $VMWARE_IP1 -m state –state ! INVALID -j ACCEPT
# Connexions firewall <-> broadcast reseau VMWARE_LAN_NET1
iptables -t filter -A OUTPUT -o $VMWARE_ETH1 -s $VMWARE_IP1 -d $VMWARE_BCAST1 -m state –state ! INVALID -j ACCEPT
iptables -t filter -A INPUT -i $VMWARE_ETH1 -s $VMWARE_LAN_NET1 -d $VMWARE_BCAST1 -m state –state ! INVALID -j ACCEPT
echo  » + Regles du reseau local ($VMWARE_ETH2 – $VMWARE_IP2 – $VMWARE_LAN_NET2) »
# Connexions firewall <-> reseau VMWARE_LAN_NET2
iptables -t filter -A OUTPUT -o $VMWARE_ETH2 -s $VMWARE_IP2 -d $VMWARE_BCAST2 -m state –state ! INVALID -j ACCEPT
iptables -t filter -A INPUT -i $VMWARE_ETH2 -s $VMWARE_LAN_NET2 -d $VMWARE_BCAST2 -m state –state ! INVALID -j ACCEPT
# Connexions firewall <-> broadcast reseau VMWARE_LAN_NET2
iptables -t filter -A OUTPUT -o $VMWARE_ETH2 -s $VMWARE_IP2 -d $VMWARE_LAN_NET2 -m state –state ! INVALID -j ACCEPT
iptables -t filter -A INPUT -i $VMWARE_ETH2 -s $VMWARE_LAN_NET2 -d $VMWARE_IP2 -m state –state ! INVALID -j ACCEPT
else
echo  » + VmWare desactive »
fi

# Autorise l’acces au serveur FTP local depuis l’internet
if [ « $FTP_SRV » == « 1 » ]; then
echo  » + Serveur FTP actif »
iptables -A INPUT -i $LAN_ETH -d $LAN_IP -p tcp –dport $FTP_SRV_PORT -m state –state ! INVALID -j ACCEPT
iptables -A OUTPUT -o $LAN_ETH -s $LAN_IP -p tcp –sport $FTP_SRV_PORT -m state –state ESTABLISHED,RELATED -j ACCEPT
else
echo  » + Serveur FTP desactive »
fi

# Autorise l’acces au serveur SSH local depuis l’internet
if [ « $SSH_SRV » == « 1 » ]; then
echo  » + Serveur SSH actif »
iptables -A INPUT -i $LAN_ETH -d $LAN_IP -p tcp –dport $SSH_PORT -m state –state ! INVALID -j ACCEPT
iptables -A OUTPUT -o $LAN_ETH -s $LAN_IP -p tcp –sport $SSH_PORT -m state –state ESTABLISHED,RELATED -j ACCEPT
else
echo  » + Serveur SSH desactive »
fi

# Autorise l’acces au serveur SWEB local depuis l’internet
if [ « $WEB_SRV » == « 1 » ]; then
echo  » + Serveur WEB actif »
iptables -A INPUT -i $LAN_ETH -d $LAN_IP -p tcp –dport $WEB_PORT -m state –state ! INVALID -j ACCEPT
iptables -A OUTPUT -o $LAN_ETH -s $LAN_IP -p tcp –sport $WEB_PORT -m state –state ESTABLISHED,RELATED -j ACCEPT
else
echo  » + Serveur WEB desactive »
fi

###############################################################################
# Regles de connexion à Internet
# Seul les connexions initialises par la machine sont autorisees
# C’est le suivit de connexion
###############################################################################

# Chargement des modules pour le suivi de connexion
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
echo  » + Regles pour Internet (Initie par soft locale –> ALL_IP:ALL_PORT) »
iptables -A OUTPUT -o $LAN_ETH -s $LAN_IP -d 0.0.0.0/0 -p all -m state –state ! INVALID -j ACCEPT
iptables -A INPUT -i $LAN_ETH -s 0.0.0.0/0 -d $LAN_IP -p all -m state –state RELATED,ESTABLISHED -j ACCEPT

# Overture des ports d’aMule
echo  » + Regles pour la mule (Port TCP=$MULE_TCP_PORT / Port UDP=$MULE_UDP_PORT) »

iptables -A INPUT -i $LAN_ETH -p tcp -d $LAN_IP –dport $MULE_TCP_PORT -m state –state ! INVALID -j ACCEPT
iptables -A INPUT -i $LAN_ETH -p udp -d $LAN_IP –dport $MULE_UDP_PORT -m state –state ! INVALID -j ACCEPT

# Regles pour le Multiposte FREE
echo  » + Regles pour le Multiposte FREE »
iptables -A INPUT -i $LAN_ETH -p udp -s 212.27.38.253 –dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -o $LAN_ETH -p udp -d 212.27.38.253 –sport 1024:65535 -j ACCEPT

# Log des paquets rejetes dans /var/log/messages
echo  » + Regles log des paquets rejetes ([IN/FO/OU_PKTS_DROP]==>) »
iptables -A INPUT -j LOG –log-prefix= »[IN_PKTS_DROP]==>  »
iptables -A FORWARD -j LOG –log-prefix= »[FO_PKTS_DROP]==>  »
iptables -A OUTPUT -j LOG –log-prefix= »[OU_PKTS_DROP]==>  »

echo  » + ======================== SCRIPT TERMINE! ========================= »
echo  » + Afficher la configuration de la table filter : ‘iptables -L -n -v' »
echo  » + Ou ‘iptables -L -n -v -t nat ou mangle’ pour les autres tables »
echo  » + ================================================================== »

Voila le resultat de lexécution du script

$ /etc/scripts/iptables_init.sh

Starting FIREWALL…
+ ============== INITIALISATION DES TABLES NETFILTER ===============
+ Initialisation de la table Filter
+ Initialisation de la table NAT
+ Initialisation de la table MANGLE
+ Desactivation du NAT
+ Regles du localhost
+ Regles du reseau local (eth0 – 192.168.0.1 – 192.168.0.0/24)
+ DHCP actif
+ VmWare actif
+ Regles du reseau local (vmnet1 – 192.168.218.1 – 192.168.218.0/24)
+ Regles du reseau local (vmnet8 – 172.16.120.1 – 172.16.120.0/24)
+ Serveur FTP desactive
+ Serveur SSH desactive
+ Serveur WEB desactive
+ Regles pour Internet (Initie par soft locale –> ALL_IP:ALL_PORT)
+ Regles pour la mule (Port TCP=8270 / Port UDP=8271)
+ Regles pour le Multiposte FREE
+ Regles log des paquets rejetes ([IN/FO/OU_PKTS_DROP]==>)
+ ======================== SCRIPT TERMINE! =========================
+ Afficher la configuration de la table filter : ‘iptables -L -n -v’
+ Ou ‘iptables -L -n -v -t nat ou mangle’ pour les autres tables
+ ==================================================================
0

/etc/script/iptables_stat.sh

Script, à placer dans le dossier /etc/scripts, qui affiche des stats d’utilisation de iptables, download et upload global , flux droppé
#!/bin/sh
###############################################################################
# NOM: /etc/scripts/iptables_stat.sh
# COMMENTAIRE : Statistiques d’utilisation de iptables
###############################################################################
###############################################################################
# Variables globales
###############################################################################
LAN_ETH=ETH0 ; # Interface réseau interne
LAN_IP=192.168.0.1 ; # Adresse réseau interne
LAN_NETWORK=192.168.0.0/24 ; # Réseau interne
###############################################################################
clear
echo ‘============ STATISTIQUES FLUX RESEAU ============’
###############################################################################
# Variables globales
###############################################################################
echo
echo ‘====> Flux Ok (bytes)’
echo
echo  » – [DOWNLOAD] $LAN_ETH <-- INTERNET :"`iptables -L -n -v | grep "0.0.0.0/0 $LAN_IP state RELATED,ESTABLISHED" | cut -c6-12` echo " - [UPLOAD] $LAN_ETH --> INTERNET : »`iptables -L -n -v | grep « $LAN_IP 0.0.0.0/0 state NEW,RELATED,ESTABLISHED,UNTRACKED » | cut -c6-12`
echo  » – [DOWNLOAD] $LAN_ETH <-- LAN :"`iptables -L -n -v | grep "$LAN_NETWORK $LAN_IP" | cut -c6-12` echo " - [UPLOAD] $LAN_ETH --> LAN : »`iptables -L -n -v | grep « $LAN_IP $LAN_NETWORK » | cut -c6-12`
echo
echo ‘====> Flux global Dropé’

echo
echo  » – [DOWNLOAD] $LAN_ETH <-- LAN : pakets ="`iptables -L -n -v | grep IN_PKTS_DROP | cut -c0-6` echo " octets ="`iptables -L -n -v | grep IN_PKTS_DROP | cut -c6-12` echo " - [UPLOAD] $LAN_ETH --> LAN : pakets = »`iptables -L -n -v | grep OU_PKTS_DROP | cut -c0-6`
echo  » octets = »`iptables -L -n -v | grep OU_PKTS_DROP | cut -c6-12`
echo
echo ‘==================================================’

Voila le résultat

$ /etc/scripts/iptables_stat.sh

============ STATISTIQUES FLUX RESEAU ============

====> Flux Ok (bytes)

– [DOWNLOAD] ETH0 <-- INTERNET : 34M - [UPLOAD] ETH0 --> INTERNET : 2330K
– [DOWNLOAD] ETH0 <-- LAN : 0 - [UPLOAD] ETH0 --> LAN : 10980

====> Flux global Dropé

– [DOWNLOAD] ETH0 <-- LAN : pakets = 0 octets = 0 - [UPLOAD]] ETH0 --> LAN : pakets = 93
octets = 12600

==================================================

/etc/init.d/firewall

Script d’initialisation du firewall, rêgles iptable, au démarage de la machine. Utilisation possible start|stop|restart|status|panic|stats

start : no comment
stop : no comment
restart : no comment
status : affiche les rêgles iptables actives
panic : bloque tous par défaut et log les paquets droppé dans /var/log/messages
stats : lance le script iptables_stat.sh

#!/bin/sh
# Start/stop the FIREWALL.

case « $1 » in
start) echo « Starting FIREWALL… »
/etc/scripts/iptables_init.sh
echo $?
;;
stop) echo « Stopping FIREWALL… »
echo  » + Initialisation de la table FILTER »
/sbin/iptables -t filter -F
/sbin/iptables -t filter -X
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
echo  » + Initialisation de la table NAT »
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
echo  » + Initialisation de la table MANGLE »
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
echo $?
;;
restart)
$0 stop

$0 start
;;
status)
/sbin/iptables -L -n -v
;;
panic)
echo « Starting PANIC FIREWALL !!!… »
/sbin/iptables -t filter -F
/sbin/iptables -t filter -X
/sbin/iptables -t filter -P INPUT DROP
/sbin/iptables -t filter -P FORWARD DROP
/sbin/iptables -t filter -P OUTPUT DROP
/sbin/iptables -A INPUT -j LOG –log-prefix= »[IN_PKTS_PANIC_DROP]==>  »
/sbin/iptables -A FORWARD -j LOG –log-prefix= »[FO_PKTS_PANIC_DROP]==>  »
/sbin/iptables -A OUTPUT -j LOG –log-prefix= »[OU_PKTS_PANIC_DROP]==>  »
echo $?
;;
stats)
/etc/scripts/iptables_stat.sh
;;
*) echo « Usage: /etc/init.d/firewall start|stop|restart|status|panic|stats »
exit 1
;;
esac
exit 0

Sous Ubuntu pour exécuter le firewall au démarrrage du système il faut faire un lien symbolique vers le srcipt dans le dossier /etc/rc2.d, sans oublier de les rendre exécutable

$ sudo chmod +x /etc/scripts/firewall
$ sudo chmod +x /etc/scripts/iptables_stat.sh
$ sudo chmod +x /etc/scripts/iptables_init.sh
$ sudo ln -s /etc/scripts/firewall /etc/rc2.d/S88firewall
$ ll /etc/rc2.d/S99firewall

lrwxrwxrwx 1 root root 19 2006-05-25 00:57 S88firewall -> ../scripts/firewall
 » Fin de citation
source: taltan.blog.bkp


Filed under: Ubuntu — Étiquettes : , , , — admin @ 8 juin 2006 20 h 01 min