RIR CRC1 C6

Du shell au Script shell .. TD ASR ABD #Warmup

Maintenant que Leila et Stéphanie sont devenues les reines du #Bash

Entrainez-vous avec les exercices suivants . Devant certains exercices cous avez un petit cours à lire avant (pour certains en PDF)

Création d’un premier Script

On passe par la commande touch ou par un éditeur pour créer le script

touch monscript.sh ou nano monscript.sh

J’ai donné ici l’extension .sh à monscript. On le fait souvent par convention pour indiquer que c’est un script shell, mais ce n’est pas obligatoire. Certains scripts shell n’ont d’ailleurs pas d’extension du tout.Il pourrait s’appeler monscript

La première ligne du script commence par le “sha-bang.”Il sert à dire quel shell on va utiliser .il permet de charger le bon shell mais il n’est pas obligatoire..si il n’est pas présent le shell de l’utilisateur courant sera utilisé.

#!        <---Ca c'est le sha-bang
on aura donc en début de script bash:
#!/bin/bash

Par convention et bon sens on va ajouter des commentaires dans le script. Ce sont des lignes qui ne seront pas exécutées mais qui permettent d’expliquer ce que fait votre script.

Tous les commentaires commencent par un #

#!/bin/bash

# Affichage du répertoire courant
pwd

Ensuite il faut enregistrer le script et lui donner des droits d’execution. Avec la commande :

chmod +x monscript.sh

il passera donc en – rwx r-x r-x au niveau de la permission

Et enfin on l’exécute avec ./

./monscript.sh

Lire PDF commandes interne et externe

EXO Commandes internes et externes

  1. Connectez-vous avec votre nom de login et ouvrez une console
  2. Dites si echo est une commande interne ou externe
  3. Quel est le résultat des commandes suivantes:
  • help
  • help echo
  • help cd
  • help ls cd –help
  • ls –help

Que pouvez-vous en déduire ?

4. Quel est le type de données contenu dans les fichiers suivants ?

  • /bin/bash
  • /etc/init.d
  • /sbin/poweroff

LIRE PDF AFFICHAGE A L’ECRAN

 Exo Affichage à l’écran

1. Exécutez la commande echo qui permet d’afficher le texte suivant à l’écran :

Les RISR 2021 sont les meilleurs
oui, je le pense aussi

2. A l’aide de la commande echo, affichez la liste de caractères suivants:

& ~ # ( ) | \ ^@ $ * ! ;

3. Quel est le résultat affiché par les lignes de commandes suivantes:

echo pwd
echo `pwd`
echo "il ya `ls | wc -l` fichiers dans `pwd`"
echo "`whoami`, nous sommes le `date '+%d/%m/%y'`"
echo "$(whoami), nous sommes le $(date) "

Caractères spéciaux du shell

Caractèressh (Bourne)ksh 88bashSignification
espacetabulationsaut de ligneouiouiouiSéparateurs de mots sur la ligne de commande.
&ouiouiouiArrière-plan.
| < << > >>ouiouiouiTube et redirections.
>|nonouiouiÉcrasement d’un fichier (option noclobber).
(cmde1;cmde2){cmde1;cmde2}ouiouiouiRegroupement de commandes.
;ouiouiouiSéparateur de commandes.
* ? [ ]ouiouiouiExpressions pour noms de fichier et case.
* ? [ ]nonouiouiExpressions pour la commande de test [[…]].
?() +() *()!() @()nonouiouiExpressions pour noms de fichier [[ ]] et case.
$ et ${ }ouiouiouiValeur d’une variable.
`…`ouiouiouiSubstitution de commandes.
$()nonouiouiSubstitution de commandes.
’…’”…”\ouiouiouiCaractères de protection.
$(( ))nonouiouiSubstitution d’expression arithmétique.
cmde1 && cmde2cmde1 || cmde2ouiouiouiOpérateurs logiques du shell.
#ouiouiouiCommentaire.
~nonouiouiRépertoire d’accueil de l’utilisateur.

Lire PDF sur les redirections

Lire PDF tubes de communications

20150204_094112(1)
20150204_094125

Lire PDF Regroupement de commandes

Lire PDF Processus en arrière plan

L’environnement SHELL

EXO Pré-Requis

www.pdf24.org    Envoyer l'article en PDF   

Les bases de la programmation shell #Bigboss

Les Conditions  :le if (Si)

if [ test ] #####Si test de la variable
then        ######Alors 
        echo "C'est vrai"  ####Renvoi si c'est Vrai
 fi     #### Il délimite la fin du Si seulement si le Vrai est vérifié

 

ATTENTION au espaces a l’intérieur des crochets …

Petit test :

#!/bin/bash

nom="RAREC3"

if [ $nom = "RAREC3" ]
then
        echo "Les meilleurs sont les RARE C3!"
fi

Avec 2 variables

#!/bin/bash

nom1="RAREC3"
nom2="RAREC3"

if [ $nom1 = $nom2 ]
then
        echo "Vive les RARE !"
fi

Quand la condition n’est pas remplie on fait comme ceci :

if [ test ]                  ###SI
then                         ####Alors
        echo "C'est vrai"    
else                         ####Sinon
        echo "C'est faux"
fi
#!/bin/bash

nom="RAREC3"

if [ $nom = "RAREC3" ]
then
        echo "Vive les RAREC3!"
else
        echo "Dégages t'es pas un RAREC3 !"
fi

On peut charger la variable comme ca pour tester… :

#!/bin/bash

if [ $1 = "RAREC3" ]
then
        echo "Vive les RAREC3!"
else
        echo "Dégages t'es pas un RAREC3 !"
fi
./monscript RAREC3      ###### pour tester
./monscript autre chose    ###### la il fera le sinon

On peut ensuite faire comme ca :

#!/bin/bash

if [ $1 = "RAREC3" ]
then
        echo "Vive les RAREC3!"
elif [ $1 = "Tontonfred" ]
then
        echo "Hello Tontonfred"
elif [ $1 = "RAREC4" ]
then
        echo "Alors les nouveaux ca va ?"
else
        echo "Z'êtes pas du CESI bye!"
fi

Utilisons maintenant les TESTS

Il est possible d’effectuer trois types de tests différents en bash :

  • des tests sur des chaînes de caractères ;
  • des tests sur des nombres ;
  • des tests sur des fichiers.

Tests sur les Chaines de caractères:

Condition Signification
$chaine1 = $chaine2 Vérifie si les deux chaînes sont identiques. Notez que bash est sensible à la casse : « b » est donc différent de « B ».
Il est aussi possible d’écrire « == » pour les habitués du langage C.
$chaine1 != $chaine2 Vérifie si les deux chaînes sont différentes.
-z $chaine Vérifie si la chaîne est vide.
-n $chaine Vérifie si la chaîne est non vide.
#!/bin/bash

if [ -z $1 ]
then
        echo "Pas de paramètre"
else
        echo "Paramètre présent"
fi

Test sur les Nombres:

Condition Signification
$num1 -eq $num2 Vérifie si les nombres sont égaux (equal). À ne pas confondre avec le « = » qui, lui, compare deux chaînes de caractères.
$num1 -ne $num2 Vérifie si les nombres sont différents (non equal).
Encore une fois, ne confondez pas avec « != » qui est censé être utilisé sur des chaînes de caractères.
$num1 -lt $num2 Vérifie si num1 est inférieur ( < ) à num2 (lower than).
$num1 -le $num2 Vérifie si num1 est inférieur ou égal ( <= ) à num2 (lower or equal).
$num1 -gt $num2 Vérifie si num1 est supérieur ( > ) à num2 (greater than).
$num1 -ge $num2 Vérifie si num1 est supérieur ou égal ( >= ) à num2 (greater or equal).
#!/bin/bash

if [ $1 -ge 20 ]
then
        echo "Vous avez envoyé 20 ou plus"
else
        echo "Vous avez envoyé moins de 20"
fi

Test sur les fichiers:

-e $nomfichier Vérifie si le fichier existe.
-d $nomfichier Vérifie si le fichier est un répertoire. N’oubliez pas que sous Linux, tout est considéré comme un fichier, même un répertoire !
-f $nomfichier Vérifie si le fichier est un… fichier. Un vrai fichier cette fois, pas un dossier.
-L $nomfichier Vérifie si le fichier est un lien symbolique (raccourci).
-r $nomfichier Vérifie si le fichier est lisible (r).
-w $nomfichier Vérifie si le fichier est modifiable (w).
-x $nomfichier Vérifie si le fichier est exécutable (x).
$fichier1 -nt $fichier2 Vérifie si fichier1 est plus récent que fichier2 (newer than).
$fichier1 -ot $fichier2 Vérifie si fichier1 est plus vieux que fichier2 (older than).

#!/bin/bash

read -p 'Entrez un répertoire : ' repertoire

if [ -d $repertoire ]
then
        echo "Bien, vous avez compris ce que j'ai dit !"
else
        echo "Vous n'avez rien compris..."
fi

Recap plus infos complémentaires:

Tests sur les fichiers/répertoires

Voici une liste des tests possibles sur les fichiers et/ou répertoires :

  • “-e fichier” : vrai si le fichier/répertoire existe.
  • “-s fichier” : vrai si le fichier à une taille supérieure à 0.
  • “-r fichier” : vrai si le fichier/répertoire est accessible en lecture.
  • “-w fichier” : vrai si le fichier/répertoire est accessible en écriture.
  • “-x fichier” : vrai si le fichier est exécutable ou si le répertoire est accessible.
  • “-O fichier” : vrai si le fichier/répertoire appartient à l’utilisateur.
  • “-G fichier” : vrai si le fichier/répertoire appartient au groupe de l’utilisateur.
  • “-b nom” : vrai si nom représente un périphérique (pseudo-fichier) de type bloc (disques et partitions de disques généralement).
  • “-c nom” : vrai si nom représente un périphérique (pseudo-fichier) de type caractère (terminaux, modems et port parallèles par exemple).
  • “-d nom” : vrai si nom représente un répertoire.
  • “-f nom” : vrai si nom représente un fichier.
  • “-L nom” : vrai si nom représente un lien symbolique.
  • “-p nom” : vrai si nom représente un tube nommé.
  • “fichier1 -nt fichier2” : vrai si les deux fichiers existent et si fichier1 est plus récent que fichier2.
  • “fichier1 -ot fichier2” : vrai si les deux fichiers existent et si fichier1 est plus ancien que fichier2.
  • “fichier1 -ef fichier2” : vrai si les deux fichiers représentent un seul et même fichier.
Tests sur les entiers
  • “entier1 -eq entier2” : vrai si entier1 est égal à entier2.
  • “entier1 -ge entier2” : vrai si entier1 est supérieur ou égal à entier2.
  • “entier1 -gt entier2” : vrai si entier1 est strictement supérieur à entier2.
  • “entier1 -le entier2” : vrai si entier1 est inférieur ou égal à entier2.
  • “entier1 -lt entier2” : vrai si entier1 est strictement inférieur à entier2.
  • “entier1 -ne entier2” : vrai si entier1 est différent de entier2.
Tests sur les chaines de caractères

Les chaines doivent être entourées par des guillemets.

  • “-n “chaîne”” : vrai si la chaîne n’est pas vide.
  • “-z “chaîne”” : vrai si la chaîne est vide.
  • “”chaine1” = “chaine2″” : vrai si les deux chaînes sont identiques.
  • “”chaine1” != “chaine2″” : vrai si les deux chaînes sont différentes.
Les combinaisons de tests

Les combinaisons de tests sont utilisées quand on doit faire plusieurs tests simultanément, c’est à dire, quand on doit répondre à plusieurs conditions.

On utilise les opérateurs && et || comme dans les commandes composées. L’opérateur ! sert à inverser la condition.

  • SI test ALORS commandes FIN : exécute les commandes si test est VRAI
  • SI ! test ALORS commandes FIN : exécute les commandes si test est FAUX
  • SI test1 && test2 ALORS commandes FIN : exécute les commandes si test1 ET test2 sont vrais tous les deux
  • SI test1 -a test2 ALORS commandes FIN : pareil de précédemment, avec une autre notation
  • SI test1 && ! test2 ALORS commandes FIN : exécute les commandes si test1 est VRAI ET test2 est FAUX
  • SI test1 || test2 ALORS commandes FIN : exécute les commandes si test1 OU test2 sont VRAIS
  • SI test1 -o test2 ALORS commandes FIN : pareil de précédemment, avec une autre notation
  • SI ! { test1 || test2 } ALORS commandes FIN : exécute les commandes si NI test1 NI test2 sont VRAIS


 

EXERCICES

Le script demande une note ,et il renvoi ceci :

  • “Autiste” si la note est entre 16 et 20
  • “A” lorsqu’elle est entre 14 et 16
  • “B” si la note est entre 12 et 14
  • “C” si la note est entre 10 et 12
  • “D” si la note est inférieur à 10

 

Les variables utilisateur

Ce chapitre présente les fonctionnalités qui composent les bases de la programmation shell.

Le shell permet de définir ou redéfinir des variables qui conditionnent l’environnement de travail de l’utilisateur. Il est également possible de définir d’autres variables, dites variables utilisateur, qui vont permettre de stocker des informations qui seront nécessaires durant l’exécution d’un script.

1. Nommer une variable

Voici les règles à utiliser pour attribuer un nom à une variable :

  • le premier caractère fait partie de l’ensemble [a-zA-Z_] ;
  • les caractères suivants sont pris dans l’ensemble [a-zA-Z0-9_].

2. Définir une variable

Une variable est définie dès qu’elle est initialisée. Le contenu d’une variable est considéré par le shell comme une suite de caractères.

a. Affecter une chaîne de caractères à une variable

Exemples

$ var1=mot1
$ echo $var1
mot1
$
PUCE.png

Il ne faut pas mettre d’espace autour du symbole d’affectation : dans l’exemple suivant, le shell interprète var1 comme la commande à lancer, = et mot1 comme les deux arguments de la commande var1. Autrement dit, il n’interprète pas le signe = comme symbole d’affectation.

p128.png

b. Affecter une chaîne de caractères contenant au moins un espace

L’espace doit être protégé car c’est un caractère spécial du shell (séparateur de mots sur la ligne de commande).

Exemples

$ var2=’mot1 mot2 mot3’ #CORRECT
$ echo $var2
mot1 mot2 mot3
$ var2=mot1 mot2 mot3 #INCORRECT 
ksh: mot2:  not found
$

c. Variable indéfinie

Une variable qui n’a jamais été initialisée est vide.

PUCE.png

L’utilisation d’une variable vide n’est pas considérée comme une erreur en shell.

Exemple

$ echo $vide

$

d. Retirer la définition d’une variable

La commande interne unset permet de retirer la définition d’une variable.

Exemple

Définition d’une variable var :

$ var=12
$ echo $var
12

Elle apparaît dans la liste des variables définies au niveau du shell :

$ set | grep var
var=12

La définition de la variable est retirée :

$ unset var

La variable est indéfinie :

$ echo $var

$ set | grep var
$

e. Isoler le nom d’une variable

Il faut faire attention en concaténant le contenu d’une variable et d’une chaîne de caractères à ce que le shell interprète correctement le nom de la variable.

Exemple

Pour le shell, le caractère _ fait partie du nom de la première variable :

 

$ fic=resu
$ datejour=20110117
$ newfic=$fic_$datejour
$ echo $newfic
20110117

Pour le shell, la première variable se nomme fic_ (puisque le caractère souligné est autorisé à l’intérieur d’un nom de variable !). Celle-ci est donc substituée par sa valeur (donc vide !), puis concaténée avec le contenu de la variable datejour.

Pour faire comprendre au shell quels sont les caractères qui font partie du nom de la variable, il faut entourer le nom de cette dernière avec des {}.

Exemple

$ fic=resu
$ datejour=20110117
$ newfic=${fic}_$datejour
$ echo $newfic
resu_20110117

3. Substitution de variables

Le shell offre la possibilité d’attribuer une valeur par défaut aux variables non initialisées, ou au contraire, initialisées.

Expression ${variable:-valeur}

  • Si la variable n’est pas vide, l’expression est substituée par le contenu de celle-ci.
  • Si la variable est vide, l’expression est substituée par valeur.

Exemple

$ fic=/tmp/christie.log
$ echo "Le fichier traite sera: ${fic:-/tmp/default.log}"
Le fichier traite sera: /tmp/christie.log
$ unset fic
$ echo "Le fichier traite sera: ${fic:-/tmp/default.log}"
Le fichier traite sera: /tmp/default.log
$ echo $fic

$

Expression ${variable:=valeur}

  • Si la variable n’est pas vide, l’expression est substituée par $variable.
  • Si la variable est vide, variable est affectée avec valeur et l’expression est substituée par valeur.

Exemple

$ fic=/tmp/christie.log
$ echo "Le fichier traite sera: ${fic:=/tmp/default.log}"
Le fichier traite sera: /tmp/christie.log
$ echo $fic
/tmp/christie.log
$ unset fic
$ echo "Le fichier traite sera: ${fic:=/tmp/default.log}"
Le fichier traite sera: /tmp/default.log
$ echo $fic
/tmp/default.log
$

Expression ${variable:+valeur}

  • Si la variable n’est pas vide, l’expression est substituée par valeur.
  • Si la variable est vide, l’expression est substituée par $variable, donc vide.

Exemple

$ a=1
$ echo "Expression : ${a:+99}"
Expression : 99
$ unset a
$ echo "Expression : ${a:+99}"
Expression :
$

${variable:?message}

  • Si la variable n’est pas vide, l’expression est substituée par $variable.
  • Si la variable est vide, le shell affiche le nom de la variable suivie de la chaîne de caractères message.
PUCE.png

Si la variable est vide et que cette commande est placée dans un script shell, celui-ci affiche le message et se termine immédiatement.

Exemple

La variable var est vide :

$ echo $var

$ echo ${var:?"var non definie"}
bash: var: var non definie

Message par défaut :

$ echo ${var:?}
bash: var: parameter null or not set

Définition de la variable var :

$ var=definie
$ echo ${var:?"var non definie"}
definie
$






Sources :Eni .Site du Zéro

www.pdf24.org    Envoyer l'article en PDF   

Introduction à Apache et Sécurisation de votre accés Web #GMSI19 R

-- Download Introduction à Apache et Sécurisation de votre accés Web #GMSI19 R as PDF --

Pour notre TD : Attention (Adapter en fonction de la version du Debian)

Pour une version 9.X de Debian prendre la ISO du DVD1 pour avoir l’interface graphique de base afin de pouvoir paramétrer le navigateur et pouvoir traverser le proxy du Cesi.

Installer nano
apt-get install nano

Sources.list a modifier pour une 9.X
deb http://deb.debian.org/debian stretch main
deb-src http://deb.debian.org/debian stretch main

deb http://deb.debian.org/debian-security/ stretch/updates main
deb-src http://deb.debian.org/debian-security/ stretch/updates main

deb http://deb.debian.org/debian stretch-updates main
deb-src http://deb.debian.org/debian stretch-updates main
deb http://deb.debian.org/debian stretch main contrib non-free
deb-src http://deb.debian.org/debian stretch main contrib non-free

deb http://deb.debian.org/debian-security/ stretch/updates main contrib non-free
deb-src http://deb.debian.org/debian-security/ stretch/updates main contrib non-free

deb http://deb.debian.org/debian stretch-updates main contrib non-free
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

Charger les modifs du sources.list
apt-get update

Mise en place EtcKeeper
apt-get install etckeeper

Outils pour surveiller votre serveur WEB

Installez htop (plus sympa que top)
apt-get install htop

Capture d’écran 2015-02-11 à 16.44.06

install pour la suite des différents TD
apt-get install mysql-client mysql-server openssl rkhunter binutils clamav

 

Install pour la suite des différents TD
apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-worker libapache2-mod-fastcgi php5-fpm php-apc apache2-utils libexpat1 ssl-cert php5 php5-common php5-gd php5-mysql php5-imap php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-python php5-curl php5-intl  php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

 

Installer Glances
apt-get install glances

####pour lancer glances#####
glances

Capture d’écran 2015-02-11 à 17.32.39

Apache est un serveur http libre, c’est un des serveurs http les plus utilisé sur Internet

Part de Marché Serveur Web 2017

Apache est conçu pour prendre en charge de nombreux modules lui donnant des fonctionnalités supplémentaires : interprétation du langage Perl, PHP, Python et Ruby, serveur proxy, Common Gateway Interface, Server Side Includes, réécriture d’URL, négociation de contenu, protocoles de communication additionnels, etc. Néanmoins, il est à noter que l’existence de nombreux modules Apache complexifie la configuration du serveur web. En effet, les bonnes pratiques recommandent de ne charger que les modules utiles : de nombreuses failles de sécurité affectant uniquement les modules d’Apache sont régulièrement découvertes.

On trouvera une documentation complète sur apache (en anglais) sur le site suivant :
http://httpd.apache.org/docs/.

Redémarrer Apache
 service apache2 restart
#######ou##############
/etc/init.d/apache2 restart

Tester la syntaxe pour éviter de planter Apache
apache2ctl -t
#en prod évite de planter Apache si erreur de Syntaxe

Redémarre Apache en Prod sans perturber les visiteurs
apache2ctl graceful

Vérifier que apache tourne
ps -ef|grep apache

INFO IMPORTANTE
Pour simuler des noms de domaine pensez à modifier le fichier hosts de votre poste client

 

La configuration globale d’apache s’effectue par modification du fichier de configuration /etc/apache2/apache2.conf.

Hôtes Virtuels

Cette méthode est la plus utilisée et la plus conseillée. Elle tend même à devenir un standard. Il s’agit simplement d’associer plusieurs noms DNS à une seule adresse IP.

dans /etc/apache2/sites-available se trouve un fichier nommé default…

il ressemble a ceci:

Exemple de Virtualhost
<VirtualHost *:80>
	ServerAdmin votre-mail@monsite1.fr
	ServerName monsite1.fr
	ServerAlias www.monsite1.fr
	
	DocumentRoot /var/www/monsite1
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/monsite1>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Ceci fait, enregistrez le fichier sous le nom monsite1.conf puis modifiez-le en mettant cette fois monsite2 à la place de monsite1, puis ré-enregistrez sous le nom de monsite2.conf.

Pour terminer, il vous suffit de créer des liens des deux fichiers nouvellement créés dans le sites-available à l’aide d’un script des fichiers créés auparavant dans le dossier /etc/apache2/sites-enabled. Pour ce faire, une commande a été faite spécialement :

créer les liens dans sites-available
a2ensite monsite1.conf
a2ensite monsite2.conf

etc..

Rédémarrer ensuite les services comme vu au dessus ..

Par exemple pour vérifier les dernières IP qui ont visité votre site web vous pouvez faire un petit tail

 

Et Voila !!!!!!!!!

 

Un version plus user friendly ici avec Webmin

Installation de Webmin

Install de Webmin

dpkg -i webmin_de la version que tu as_all.deb
######ensuite#######
#####Corrigez les erreurs avec####
apt-get install -f

Apache dans Webmin

 

 

Pour aller plus loin :

 

Sécuriser Apache et son serveur

Tout d’abord Retour sur SSH qui va permettre d’accéder à votre serveur pour l’administrer. Merci a Alsacreation pour la personnalisation des scripts..

Configuration SSH

Afin de sécuriser l’accès SSH au serveur, éditons le fichier /etc/ssh/sshd_config. Nous allons changer le port de connexion par défaut pour éviter quelques attaques par bruteforce sur le port 22, qui est bien connu pour héberger ce service. N’oubliez pas de préciser ce nouveau port (dans Putty ou en ligne de commande ssh sous Linux) à la prochaine connexion.

vi /etc/ssh/sshd_config

Port 2222                  # Changer le port par défaut
PermitRootLogin no         # Ne pas permettre de login en root
Protocol 2                 # Protocole v2
AllowUsers dew             # N'autoriser qu'un utilisateur précis

Redémarrez le service SSH après ces modifications :

/etc/init.d/ssh restart

Alerte login Root

Vous pouvez éditer le fichier /root/.bashrc qui est exécuté au démarrage d’une sesion root pour envoyer un e-mail de notification. De cette façon, vous serez prévenu lorsqu’un login est effectué.

vi /root/.bashrc

Ajoutez la ligne (en modifiant l’adresse e-mail de destination) :

echo 'Accès Shell Root le ' `date` `who` | mail -s `hostname` Shell Root de `who | cut -d"(" -f2 | cut -d")" -f1` monitoring@test.com

Profitons-en pour un peu de personnalisation esthétique avec ces lignes :

alias ls='ls $LS_OPTIONS --color=auto'
alias ll='ls $LS_OPTIONS -al --color=auto'
alias vi='vim'

 Mise en place d’un Firewall (source alsacreations)

vi /etc/init.d/firewall

#!/bin/sh

# Vider les tables actuelles
iptables -t filter -F

# Vider les règles personnelles
iptables -t filter -X

# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# ---

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# ICMP (Ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# ---

# SSH In
iptables -t filter -A INPUT -p tcp --dport 2222 -j ACCEPT

# SSH Out
iptables -t filter -A OUTPUT -p tcp --dport 2222 -j ACCEPT

# DNS In/Out
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

# NTP Out
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

Si vous hébergez un sevreur web (Apache) :

# HTTP + HTTPS Out
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT

# HTTP + HTTPS In
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT

Si vous hébergez un serveur FTP :

# FTP Out
iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT

# FTP In
modprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Si vous hébergez un serveur de mail avec SMTP, POP3 et IMAP :

# Mail SMTP:25
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT

# Mail POP3:110
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT

# Mail IMAP:143
iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT

# Mail POP3S:995
iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT

N’oubliez pas de tester vos régles !!! Exemples, elles pourraient vous empêcher d’accéder à votre accés ssh si elles sont trop restrictives.

N’oubliez pas non plus de redémarrer le sevice firewall aprés les modifs..

######################################################################

IPtables / Netfilter

IPtables (associé à Netfilter) est un des meilleurs firewalls pour Linux, et certainement le plus répandu. Vous pourrez trouver de nombreux scripts de configuration à son sujet. En voici un, à adapter à votre configuration. A tout instant, utilisez la commande iptables -L -v pour lister les règles en place.

Celles-ci portent sur 3 chaînes : INPUT (en entrée), FORWARD (dans le cas d’un routage réseau) et OUPUT (en sortie). Les actions à entreprendre sont ACCEPT (accepter le paquet), DROP (le jeter), QUEUE et RETURN.

Arguments utilisés :

  • i : interface d’entrée (input)
  • i : interface de sortie (output)
  • t : table (par défaut filter contenant les chaînes INPUT, FORWARD, OUTPUT)
  • j : règle à appliquer (Jump)
  • A : ajoute la règle à la fin de la chaîne (Append)
  • I : insère la règle au début de la chaîne (Insert)
  • R : remplace une règle dans la chaîne (Replace)
  • D : efface une règle (Delete)
  • F : efface toutes les règles (Flush)
  • X : efface la chaîne
  • P : règle par défaut (Policy)
  • lo : localhost (ou 127.0.0.1, machine locale)

######################################################################

Fail2ban

Fail2ban est un script surveillant les accès réseau grâce aux logs des serveurs. Lorsqu’il détecte des erreurs d’authentification répétées, il prend des contre-mesures en bannissant l’adresse IP grâce à iptables. Cela permet d’éviter nombre d’attaques bruteforce et/ou par dictionnaire.

Installation

apt-get install fail2ban

Configuration

vi /etc/fail2ban/fail2ban.conf

loglevel
Niveau de détail des logs (défaut 3)
logtarget = /var/log/fail2ban.log
Chemin vers le fichier de log (description des actions entreprises par fail2ban)

Les services à monitorer sont stockés dans jail.conf. Il est recommandé d’en effectuer une copie nommée jail.local qui sera automatiquement utilisée à la place du fichier exemple.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

vi /etc/fail2ban/jail.local

Quelques paramètres globaux :

ignoreip = 127.0.0.1
Liste des adresses IP de confiance à ignorer par fail2ban
bantime = 600
Temps de ban en secondes
maxretry = 3
Nombre d’essais autorisés pour une connexion avant d’être banni
destmail monitoring@test.com
Adresse e-mail destinataire des notifications
action
Action à entreprendre en cas de détection positive (voir dans /etc/fail2ban/action.d/)

Chaque section possède ses propres paramètres qui prennent le pas sur les globaux s’ils sont mentionnés :

enabled
Monitoring activé (true) ou non (false)
maxretry, bantime, ignoreip, destmail
Voir ci-dessus
port
Port IP concerné
logpath
Fichier de log à analyser pour détecter des anomalies
filter
Filtre utilisé pour l’analyser du log

Les filtres par défaut sont stockés dans /etc/fail2ban/filter.d. Ils contiennent en général une instruction failregex suivie d’une expression régulière matchant la détection d’une authentification erronée. Par exemple pour le service Courier :

failregex = LOGIN FAILED, ip=[<HOST>]$

Note : Celle-ci peut être précisée directement dans jail.local à la section appropriée pour prendre le pas sur la directive filter.

Modifiez les ports le cas échéant dans la section ssh si vous avez suivi la recommandation ci-dessus…

enabled = true
port    = 2222

Après modification de la configuration, n’oubliez pas de redémarrer fail2ban : /etc/init.d/fail2ban restart

Rkhunter

Rootkit Hunter

Rootkit Hunter est un programme de détection de rootkits. Vous pouvez l’installer grâce à :

apt-get install rkhunter

Il procédera à des détections journalières anti-rootkits et enverra des notifications par e-mail si nécessaire. Il est conseillé de l’installer très tôt car il calcule l’empreinte MD5 des programmes installés afin de détecter d’éventuels changements. Editez /etc/default/rkhunter pour indiquer l’adresse de notification et l’exécution journalière :

vi /etc/default/rkhunter

REPORT_EMAIL="monitoring@test.com"
CRON_DAILY_RUN="yes"

En cas de fausses détections positives sur des répertoires ou fichiers existants et sains, éditez /etc/rkhunter.conf pour les ajouter à la liste des éléments autorisés.

vi /etc/rkhunter.conf

ALLOWHIDDENDIR=/dev/.udev
ALLOWHIDDENDIR=/dev/.static

Vous pouvez également utiliser chkrootkit qui est un équivalent.

Empêcher l’accès aux sous dossiers

Bloquer l’accès à PhpMyAdmin par exemple.

Sur un reverse proxy

/etc/apache2/apache2.conf
RewriteCond %{THE_REQUEST} /phpmyadmin/
RewriteRule ^.*$ - [G,L]

Via le .htaccess

Renvoie un code 403.

RewriteRule ^phpMyAdmin - [F]

Empêcher l’accès à la racine de apache

/etc/apache2/sites-available/default
et /etc/apache2/sites-available/default-ssl
<Directory /var/www/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                deny from all
</Directory>

Désactiver le listage des répertoires

Changer « Indexes » en « -Indexes ».

/etc/apache2/sites-available/default
/etc/apache2/sites-available/default-ssl
et les configurations des vhosts

Attribuer les permissions correctement

cd /var/www
chown www-monsite:www-monsite -R *
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;

installer wordpress
apt-get install wordpress curl mysql-server

Créer le site
# nano /etc/apache2/sites-available/wp

Ajouter ceci au fichier wp
Alias /wp/wp-content /var/lib/wordpress/wp-content
        Alias /wp /usr/share/wordpress
        <Directory /usr/share/wordpress>
            Options FollowSymLinks
            AllowOverride Limit Options FileInfo
            DirectoryIndex index.php
            Order allow,deny
            Allow from all
        </Directory>
        <Directory /var/lib/wordpress/wp-content>
            Options FollowSymLinks
            Order allow,deny
            Allow from all
        </Directory>

rendre actif le site
a2ensite wp

relancer le service
service apache2 reload
#####ou#####@
service apache2 restart

creer le fichier config-dev.php
nano /etc/wordpress/config-dev.php

ajouter ce code au fichier
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');
define('WP_CONTENT_DIR', '/var/lib/wordpress/wp-content');
?>

creer un fichier de config pour sql
nano ~/wp.sql

adapter pour le fichier
CREATE DATABASE wordpress;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress.*
TO wordpress@localhost
IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

créer la base
cat ~/wp.sql | mysql --defaults-extra-file=/etc/mysql/debian.cnf

 

www.pdf24.org    Envoyer l'article en PDF   

Dimensionnement Serveur Exchange 2013

Dixit Technet : Exchange 2013 utilise plus de ressources système que les versions antérieures d’Exchange. En dimensionnant correctement votre infrastructure Exchange 2013, puis en vérifiant certaines configurations recommandées pour les composants liés à Exchange dans cette infrastructure, vous pouvez créer les conditions d’un déploiement aux performances optimales.

un outil de dimensionnement  :

ExchangeCalcv7.8

 

 

www.pdf24.org    Envoyer l'article en PDF   

Les indispensables de l’Admin système sous Debian #Rappels

-- Download Les indispensables de l'Admin système sous Debian #Rappels as PDF --

top

Ceci n’est pas un cours mais un petit “TIPS” pour vous aider à vous remettre dans le bain..

 Créer un fichier vide

touch le-nom-du-fichier

touch -t le-nom-du-fichier (-t utilise la date indiquée plutôt que la date actuelle)

 Modifier la permission d’un fichier ou dossier

chmod 755 le-nom-du-dossier-ou-fichier

chmod -R 755 le-nom-du-dossier (Modifie récursivement les autorisations des dossiers et leurs contenus)

Modifier le propriétaire d’un fichier ou Dossier

chown proprietaire le-nom-du-dossier-ou-fichier

chown -R proprietaire le-nom-du-dossier (Modifie récursivement l’appartenance des répertoires et leurs contenus)

Gestion des comptes utilisateurs

  • su
    sudo
  • adduser
  • useradd
Redémarrer un service sous Debian

/etc/init.d/lenomduservice start , stop

Editer un fichier sous debian

Sous Unix, et en particulier sous Linux, la configuration du système et des programmes se fait très souvent en éditant des fichiers textes qui contiennent des paramètres de configuration. Ces paramètres de configuration suivent une certaine syntaxe, différente pour chaque programme, et que l’utilisateur doit connaître. Généralement, il y a une instruction de configuration par ligne de texte. Le système ou le programme va alors lire son ou ses fichier(s) de configuration et s’adapter à la configuration demandée.

Presque tous les programmes et systèmes Unix sont conçus avec une règle qui dit qu’il ne tient pas compte des lignes du fichier de configuration qui commencent par un certain caractère (souvent #). L’utilisateur peut alors mettre des lignes de commentaires dans le fichier de configuration en commençant ces lignes par le caractère particulier. Il peut aussi facilement activer ou désactiver une ligne du fichier de configuration en enlevant ou en ajoutant le caractère particulier au début de la ligne. Le fait de désactiver ainsi une ligne de configuration se dit « commenter une ligne » et le fait d’activer ainsi une ligne de configuration se dit « décommenter une ligne ». Ces expressions seront régulièrement utilisées dans la suite de cette formation.

vi /etc/nom-du-fichier-a-editer  (Editeur incontournable sur un système unix/linux)

gedit  /etc/nom-du-fichier-a-editer (Editeur sous Gnome)

kedit /etc/nom-du-fichier-a-editer (Editeur sous KDE)

vim /etc/nom-du-fichier-a-editer (Version améliorer de vi mais à installer)

emacs /etc/nom-du-fichier-a-editer (Pour les puristes)

Changer son ip sous Debian

gedit /etc/network/interfaces

En statique :
auto eth0
iface eth0 inet static
address 192.168.0.7
netmask 255.255.255.0
gateway 192.168.0.254

En client DHCP :
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

Redémarrer les services réseau :
/etc/init.d/networking restart

 

Vider le cache DNS  (Client)

Il suffit simplement de relancer le deamon NSCD :

/etc/init.d/nscd restart

Si cela ne marche pas, vous devez installer le paquet « nscd »

apt-get install nscd

Changer le nom d’hôte de votre Debian

Editez le fichier /etc/hostname

gedit /etc/hostname

 Redémarrer le service hostname

/etc/init.d/hostname.sh

Testez votre modification en utilisant les commandes

hostname

hostname -f

Affiche l’état de tout les processus en cours

ps -e

Affiche les informations mise à jour périodiquement sur les processus, l’utilisation de la mémoire, du CPU.

top

Plus complet regardez ceci : http://www.tontonfred.net/blog/?p=865

Déport d’affichage par SSH

SSH possède une fonction de déport d’affichage. Il faut que le serveur SSH distant ait autorisé cette fonction.

ssh -X login@serveur.exemple.org

 

 La programmation de tâches

Exécuter un commande périodiquement

La cron est un programme (installé par défaut) qui est chargé de lancer d’autres programmes de manière périodique et automatique. Chaque utilisateur peut définir avec sa crontab les programmes qu’il veut lancer périodiquement. Il lui suffit d’éditer sa cron et de définir la commande et sa périodicité d’exécution.

Par exemple, je veux que mon ordinateur me réveille tous les matins à 7h12 en jouant un mp3. J’édite ma crontab :

% crontab -e

Je me retrouve alors dans vim avec un fichier vide. J’ajoute la ligne :

12 7 * * * music123 ~/music/fichier.mp3

J’enregistre et je quitte ; les changements sont alors automatiquement pris en compte par le système.

Explications :

  1. Les 5 premiers ensembles de caractères séparés par des espaces (ici, 12 7 * * *) définissent la fréquence. Dans l’ordre, on trouve :
    • les minutes,
    • les heures,
    • le jour du mois,
    • le mois,
    • le jour de la semaine (sachant que Lundi vaut 1, Mardi vaut 2, etc.).

    Pour exécuter une commande chaque jour à 7h12, on fixe donc le champ minute à 12, le champ heure à 7, puis on met des étoiles dans les autres champs pour dire qu’il faut que ce soit exécuté tous les jours dans le mois, tous les mois et tous les jours de la semaine.

  2. Enfin, on trouve la commande à exécuter : (ici, music123 ~/music/fichier.mp3).

Quand la cron lance un programme, elle envoie par mail à l’utilisateur le texte que ce programme écrirait sur la console s’il était lancé à la main ; sauf si le programme n’a rien écrit. Pour éviter de recevoir un mail tous les matins qui me dit qu’il a bien joué mon fichier mp3, je modifie l’entrée dans la cron en renvoyant la sortie texte du programme vers /dev/null :

12 7 * * * music123 ~/music/fichier.mp3 1>/dev/null 2>&1

Autre exemple : j’ai une connexion permanente à Internet et je veux aussi que fetchmail aille chercher mes mails tous les quarts d’heure. J’édite ma cron et je rajoute la ligne suivante :

*/15 * * * * fetchmail –silent

Explications :

  1. Les 5 premiers ensembles de caractères */15 * * * * définissent la fréquence « toutes les quinze minutes ».
  2. J’exécute fetchmail avec l’option –silent qui n’écrit dans sa sortie que les messages d’erreur ; comme ça, je ne recevrais un mail que quand le rappatriement des mails se passe mal.

Exécuter une commande à une date donnée

Par exemple, pour exécuter les commandes date puis df -h le 28 septembre 2008 à midi 42, tapez :

% at 12:42 28.09.2008

Vous voyez alors apparaître le prompt du programme at pour taper les commandes :

at> date

at> df -h

Une fois que vous avez fini de taper les commandes, utilisez la combinaison de touches Ctrl+d. Le résultat de la série de commandes, appelée job, vous sera envoyé par mail juste après leur exécution.

Pour voir la liste des jobs en attente, utilisez la commande atq. Pour annuler un job, tapez atrm numéro_du_job.

Surveiller les connexions réseau du serveur “Humour”

  • netstat -laeptu
  • netstat -taupe
  • netstat -nao
www.pdf24.org    Envoyer l'article en PDF   

Debian Jessie – Administration Samba4

SAMBA 4 :

Prérequis pour l’installation de Samba 4 :

  • Installation des dépendances :

Prérequis samba 4
apt-get update && apt-get upgrade
apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls28-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr acl krb5-user docbook-xsl libcups2-dev libpam0g-dev ntpdate ntp -y

 

  •  Téléchargement de la dernière release :

wget
wget http://ftp.samba.org/pub/samba/samba-latest.tar.gz

  •  Décompression et Compilation des sources :

make && make install
tar zxvf samba-latest.tar.gz
cd samba-latest
./configure --enable-debug --enable-selftest
make && make install

 

Ajouter les binaires Samba dans $PATH :

Modification .bashrc
echo "export PATH='\$PATH:/usr/local/samba/bin/" >>  ~/.bashrc 

Information : Permet de saisir directement les binaires samba sans passer par /usr/local/samba/bin/

Les fonctionnalités de samba-tool :

samba-tool --help
samba-tool --help
Main samba administration tool.

Options:
  -h, --help       show this help message and exit

  Version Options:
    -V, --version  Display version number

Available subcommands:
  dbcheck     - Check local AD database for errors.
  delegation  - Delegation management.
  dns         - Domain Name Service (DNS) management.
  domain      - Domain management.
  drs         - Directory Replication Services (DRS) management.
  dsacl       - DS ACLs manipulation.
  fsmo        - Flexible Single Master Operations (FSMO) roles management.
  gpo         - Group Policy Object (GPO) management.
  group       - Group management.
  ldapcmp     - Compare two ldap databases.
  ntacl       - NT ACLs manipulation.
  processes   - List processes (to aid debugging on systems without setproctitle).
  rodc        - Read-Only Domain Controller (RODC) management.
  sites       - Sites management.
  spn         - Service Principal Name (SPN) management.
  testparm    - Syntax check the configuration file.
  time        - Retrieve the time on a server.
  user        - User management.
  vampire     - Join and synchronise a remote AD domain to the local server.

 

 

Afficher la liste des utilisateurs :

  • UNIX :

 

cat /etc/shadow
cat /etc/shadow
root:$6$ZCx1JZdVyVec1Peg85/lXgp6XpvU6BDRmS6n66XLvky2zKZQJCkrjTKDjeNc0:16729:0:99999:7:::
bin:*:16489:0:99999:7:::
...
nginx:!!:16693::::::
ntp:!!:16693::::::
postgres:!!:16701::::::

 

 

  • SAMBA :

samba-tool user list
$: samba-tool user list
Administrator
krbtgt
maxime
Guest
test

 

Afficher les enregistrements de type A depuis le fichier dns_update_cache :

cat /usr/local/samba/private
cat /usr/local/samba/private/dns_update_cache | grep A
A srv1.sadmba.lan 10.151.50.160
A sadmba.lan 10.151.50.160
CNAME 993fef58-4712-4742-8d45-14cdf32d303c._msdcs.sadmba.lan srv1.sadmba.lan
A gc._msdcs.sadmba.lan 10.151.50.160
A DomainDnsZones.sadmba.lan 10.151.50.160
A ForestDnsZones.sadmba.lan 10.151.50.160

 

 

Afficher le rôle du serveur Active Directory (AD) :

samba-tool testparm
samba-tool testparm

# Global parameters
[global]
        workgroup = SADMBA
        realm = SADMBA.LAN
        netbios name = SRV1
        server role = active directory domain controller
        dns forwarder = 8.8.8.8
        idmap_ldb:use rfc2307 = yes

[netlogon]
        path = /usr/local/samba/var/locks/sysvol/sadmba.lan/scripts
        read only = No

[sysvol]
        path = /usr/local/samba/var/locks/sysvol
        read only = No

[FICHIERS]
        path = /usr/local/samba/var/locks/sysvol/sadmba.lan/FICHIERS
        read only = No

 

 

Afficher les rôles FSMO du serveur AD :

samba-tool fsmo show
samba-tool fsmo show
SchemaMasterRole owner: CN=NTDS Settings,CN=SRV1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=sadmba,DC=lan
InfrastructureMasterRole owner: CN=NTDS Settings,CN=SRV1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=sadmba,DC=lan
RidAllocationMasterRole owner: CN=NTDS Settings,CN=SRV1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=sadmba,DC=lan
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=SRV1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=sadmba,DC=lan
DomainNamingMasterRole owner: CN=NTDS Settings,CN=SRV1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=sadmba,DC=lan
DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=SRV1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=sadmba,DC=lan
ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=SRV1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=sadmba,DC=lan

 

 

Afficher la liste des GPO d’un utilisateur :

samba-tool gpo list administrator
samba-tool gpo list administrator
GPOs for user administrator
    Default Domain Policy {31B2F340-016D-11D2-945F-00C04FB984F9}

 

 

Afficher la politique de mot de passe du domaine :

samba-tool domain passwordsettings show
samba-tool domain passwordsettings show
Password informations for domain 'DC=sadmba,DC=lan'

Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 1
Maximum password age (days): 42
Account lockout duration (mins): 30
Account lockout threshold (attempts): 0
Reset account lockout after (mins): 30

 

 

Afficher la liste des groupes :

samba-tool group list
samba-tool group list
Read-Only Domain Controllers
Administrators
Domain Computers
Domain Users
...
DnsAdmins
Guests
Users

 

 Debian Jessie :

Afficher l’architecture matériel du serveur :

lspci
lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) (rev 03)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 01)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02)
00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual VGA

 

 

lshw
lshw
hyperv.fedora.desktop.batouche
    description: Desktop Computer
    product: Virtual Machine
    vendor: Microsoft Corporation
    version: 7.0
    serial: 5328-2515-4488-0565-7163-2132-29
    width: 64 bits
    capabilities: smbios-2.3 dmi-2.3 vsyscall32
    configuration: boot=normal chassis=desktop uuid=40266E7B-80A6-8344-A50A-8B39F004FF71
  *-core
       description: Motherboard
       product: Virtual Machine
       vendor: Microsoft Corporation
       physical id: 0
       version: 7.0
       serial: 5328-2515-4488-0565-7163-2132-29
     *-firmware
          description: BIOS
          vendor: American Megatrends Inc.
          physical id: 0
          version: 090006
          date: 05/23/2012
          size: 64KiB
          capacity: 192KiB
          capabilities: isa pci pnp upgrade shadowing escd cdboot bootselect socketedrom edd int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video agp ls120boot zipboot biosbootspecification
     *-cpu:0
          description: CPU
          product: Core i5 (None)
          vendor: Intel Corp.
          physical id: 5
          bus info: cpu@0
          version: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
          serial: None
          slot: None
          size: 2500MHz
          capacity: 2700MHz
          width: 64 bits
          clock: 100MHz
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx x86-64 constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase bmi1 avx2 smep bmi2 erms rdseed adx smap xsaveopt
     *-memory
          description: System Memory
          physical id: 51
          size: 2GiB
        *-bank:0
             product: None
             vendor: Microsoft
             physical id: 0
             serial: None
             slot: M0
             size: 2GiB
        
     *-pci
          description: Host bridge
          product: 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled)
          vendor: Intel Corporation
          physical id: 100
          bus info: pci@0000:00:00.0
          version: 03
          width: 32 bits
          clock: 33MHz
        *-isa
             description: ISA bridge
             product: 82371AB/EB/MB PIIX4 ISA
             vendor: Intel Corporation
             physical id: 7
             bus info: pci@0000:00:07.0
             version: 01
             width: 32 bits
             clock: 33MHz
             capabilities: isa bus_master
             configuration: latency=0
        *-ide
             description: IDE interface
             product: 82371AB/EB/MB PIIX4 IDE
             vendor: Intel Corporation
             physical id: 7.1
             bus info: pci@0000:00:07.1
             version: 01
             width: 32 bits
             clock: 33MHz
             capabilities: ide bus_master
             configuration: driver=ata_piix latency=0
             resources: irq:0 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:ffa0(size=16)
        *-bridge UNCLAIMED
             description: Bridge
             product: 82371AB/EB/MB PIIX4 ACPI
             vendor: Intel Corporation
             physical id: 7.3
             bus info: pci@0000:00:07.3
             version: 02
             width: 32 bits
             clock: 33MHz
             capabilities: bridge
             configuration: latency=0
        *-display
             description: VGA compatible controller
             product: Hyper-V virtual VGA
             vendor: Microsoft Corporation
             physical id: 8
             bus info: pci@0000:00:08.0
             version: 00
             width: 32 bits
             clock: 33MHz
             capabilities: vga_controller bus_master rom
             configuration: driver=hyperv_fb latency=0
             resources: irq:11 memory:f8000000-fbffffff
     *-scsi:0
          physical id: 1
          logical name: scsi1
          capabilities: emulated
        *-cdrom
             description: DVD reader
             physical id: 0.0.0
             bus info: scsi@1:0.0.0
             logical name: /dev/cdrom
             logical name: /dev/sr0
             capabilities: audio dvd
             configuration: status=nodisc
     *-scsi:1
          physical id: 2
          logical name: scsi2
        *-disk
             description: SCSI Disk
             physical id: 0.0.0
             bus info: scsi@2:0.0.0
             logical name: /dev/sda
             size: 127GiB (136GB)
             capabilities: partitioned partitioned:dos
             configuration: logicalsectorsize=512 sectorsize=4096 signature=12827019
           *-volume:0
                description: EXT4 volume
                vendor: Linux
                physical id: 1
                bus info: scsi@2:0.0.0,1
                logical name: /dev/sda1
                logical name: /boot
                version: 1.0
                serial: 136d61ec-fd77-4eec-ae3c-548ffa5cc289
                size: 500MiB
                capacity: 500MiB
                capabilities: primary bootable journaled extended_attributes huge_files dir_nlink extents ext4 ext2 initialized
                configuration: created=2015-09-15 21:23:28 filesystem=ext4 lastmountpoint=/boot modified=2015-11-12 17:11:57 mount.fstype=ext4 mount.options=rw,relatime,stripe=4,data=ordered mounted=2015-11-12 11:13:40 state=mounted
           *-volume:1
                description: Linux LVM Physical Volume partition
                physical id: 2
                bus info: scsi@2:0.0.0,2
                logical name: /dev/sda2
                serial: xc24X8-srg4-XM9H-Uhjc-58jN-62ys-1eigHv
                size: 126GiB
                capacity: 126GiB
                capabilities: primary multi lvm2
  *-network:1
       description: Ethernet interface
       physical id: 2
       logical name: eth0
       serial: 00:15:5d:25:01:04
       capabilities: ethernet physical
       configuration: broadcast=yes driver=hv_netvsc firmware=N/A ip=10.151.50.158 link=yes multicast=yes

 

 

Vider le cache DNS :

Information : Le service nscd n’est pas installé par défaut sur debian 8

systemctl restart nscd
apt-get install nscd #Installer le package
systemctl restart nscd #redémarrer le service

 

Afficher la consommation des ressources physiques :

  • Avec top :

top
top
top - 13:43:16 up 22:09,  4 users,  load average: 0,00, 0,03, 0,05
Tasks: 117 total,   1 running, 116 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,0 sy,  0,0 ni,100,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   2058364 total,   604836 used,  1453528 free,    53012 buffers
KiB Swap:   392188 total,        0 used,   392188 free.   239168 cached Mem

 

  • Avec htop :

htop
apt-get install htop

 

samba4 htop debian jessie

 

  • et avec glances -> :

apt-get install glances
glances

 

glances debian jessie monitor

 

www.pdf24.org    Envoyer l'article en PDF   

Audit de sécurité de votre serveur Linux avec Lynis

Capture d’écran 2015-02-05 à 16.16.55

Lynis est un outil qui est très complet et il peut être utile aux administrateurs système.

il effectue plusieurs dizaines de vérifications sur votre système et fabrique  un rapport final avec des suggestions sur la sécurisation du système.

Pour installer Lynis sur Centos
 yum install lynis

Pour installer Lynis sur Debian apt-get install lynis

Attention aux versions sur les dépots.

Lancement de Lynis:

Capture d’écran 2015-02-05 à 16.23.27

 

 

Vérification des mises à jour

Capture d’écran 2015-02-05 à 16.23.40

 

 

 

 

 

Install depuis l’éditeur : https://cisofy.com/documentation/lynis/#installation-package

Quelques exemples de vérification :

Capture d’écran 2015-02-05 à 16.28.47

 

 

Capture d’écran 2015-02-05 à 16.29.11

Capture d’écran 2015-02-05 à 16.29.27Capture d’écran 2015-02-05 à 16.29.44A la fin de l’audit Lynis montrera les failles réelles référencées et non corrigées :

Capture d’écran 2015-02-05 à 16.36.21
Il est possible de “crontaber” Lynis biensur avec l’option “-cronjob” qui permettra l’exécution de l’audit sans intervention de l’utilisateur à chaque étape..

Vous allez donc pouvoir signer et horodater votre Audit

Capture d’écran 2015-02-05 à 16.42.35
www.pdf24.org    Envoyer l'article en PDF   

Afficher les infos matériel sous Linux #RIR#TIPS

linux22

Questions de Olivier C : Comment obtenir les infos matériel en ligne de commande sous linux ?

infos sur le ou les processeurs  :  cat /proc/cpuinfo

infos carte mère et bios : dmidecode  et  lspci  et  lsusb

infos sur les périphériques montés : mount

Sinon il ya le fameux:

apt-get install lshw
root@home:~# lshw

Informations sur la machine

– La marque de mon PC
– Son numéro de série 
– Le modèle du PC

Informations concernant la carte mère

lshw me donne pour la carte mère :
– La référence de la carte mère
– Le constructeur de la carte mère
– Le numéro de série

Informations sur le bios

J’obtiens comme informations sur le bios :
– La version du bios
– Le fabriquant du bios

Caractéristiques du processeur

Pour le cpu la liste des informations que j’ai retenue est :
– La fréquence du processeur
– La marque du processeur
– Le socket du cpu
– La liste des instructions et des fonctionnalités supportées
– La fréquence du bus
– Les niveaux de cache du cpu et leurs tailles
– Le nombre de coeur
– La taille des instructions supportées (processeur 32bits ou 64 bits).

Informations sur la mémoire du pc

Concernant la mémoire vive du pc je retiens :
– La capacité totale de mémoire de la machine
– Le nombre de slot occupés et surtout le nombre de slot vides (utile pour prévoir un upgrade matériel sans démonter sa machine).
– La référence des barettes de ram
– La taille des barettes de mémoire
– La fréquence de la mémoire et même son temps de latence si vous avez de la chance

Autres informations intéréssantes

– Modèle, taille, et partitionnement des disques durs
– Liste du matériel pci et pci express (carte réseau, carte graphique, carte son …) avec les modèles et les constructeurs.

www.pdf24.org    Envoyer l'article en PDF   

Installer et Configurer 2012 Server

Capture d’écran 2015-06-16 à 10.46.34

 

VERSIONS : Les informations essentielles

  • Edition Standard
  • Edition Datacenter
  • Edition Foundation
  • Edition Essential

 

Edition Standard

  • 4 To de Ram Max
  • Inclus 2 licences Hyper-V
  • La plupart des rôles

 

Edition Datacenter

  • Jusqu’a 640 Coeurs
  • 4 To de Ram Max
  • Nombre Illimité de Machines Hyper-V
  • Fonctionnalités de Cluster

 

Edition Foundation

  • Ne peut être jointe à un Domaine
  • Un seul processeur
  • 32 Go de Ram Max
  • Petite Entreprise
  • Nombre limité de Rôles

 

Edition Essential (Remplacante des Versions SBS)

  • 25 Utilisateurs Max
  • 64 Go de Ram Max
  • Pas de Hyper-V
  • Pas de Cluster

 

Les Nouveautés marquantes dans les rôles de 2012 Server:

  • Nouveau Gestionnaire de Serveur => Soit gérer un serveur, soit plusieurs Serveurs.
  • Fonctionnalité : Expérience Windows Server Essential
  • Fonctionnalité :WDS amélioré ==> Déploiement Windows (RIS)
  • Fonctionnalité :WSUS amélioré et intégré d’origine

 

Les Nouveautés marquantes dans les Fonctionnalités de 2012 Server (42 Fonctionnalités)

  • Clustering avec basculement
  • Equilibrage de Charge

 

Rappels des prérequis pour l’installation d’un AD:

  • Serveur Windows supportant ADDS
  • IP Fixe
  • Nom de Domaine valide
  • Formatage NTFS

Rappels Fondamentaux AD

Capture d’écran 2015-06-16 à 10.28.39

Capture d’écran 2015-06-16 à 10.29.01

Capture d’écran 2015-06-16 à 10.29.17

Capture d’écran 2015-06-16 à 10.29.30

Capture d’écran 2015-06-16 à 10.34.32

Rappels sur les Maîtres D’opérations (FSMO)

Capture d’écran 2015-06-16 à 10.49.13

Capture d’écran 2015-06-16 à 10.51.51

Capture d’écran 2015-06-16 à 10.55.27
Source Microsoft

 

Rappels sur les Stratégies de groupe (GPO)

Capture d’écran 2015-06-16 à 11.21.32

Capture d’écran 2015-06-16 à 11.23.16

 

 

www.pdf24.org    Envoyer l'article en PDF   

Dimensionner un serveur Terminal Server 2008 (RDS) #CRC14

Windows_Server_2008_R2

 

 

 

 

 

Il revient souvent les mêmes questions au sujet du dimensionnement d’un Serveur RDS 2008 R2.

  • Combien de sessions par serveur ?
  • Même question en fonction de la version de RDP ?
  • Même question dans un environnement Hyper-V ?
  • Combien de RAM par sessions ?
  • Combien de RAM en fonction du mode d’affichage ?

On peut ainsi se poser de nombreuses questions…

 

Il existe une documentation officielle : http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23236
et également : http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17190

Pour le maquettage il existe également des outils de monter en charge pour similer une utilisation intensive des serveurs RDS : http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=2218

www.pdf24.org    Envoyer l'article en PDF   

Fonctionnalité Rôle RDS #Connection Broker #RARE #CPI

Après le petit billet sur RemoteApp une autre fonctionnalité dans le rôle RDS :

Connection Broker

Sous 2003 on parlait de Session Directory, sous 2008 de TS Session Broker avec 2008 R2, on parle désormais de Conection Broker.

Le but de Connection Broker est de répartir la charge au sein d’une ferme TSE en redirigeant au besoin les nouvelles connexions vers le serveur le moins chargés.
On distingue 2 parties pour le fonctionnement de Connexion Broker:

  • La partie équilibrage de charge avec (NLB, le tourniquet DNS, où des produits tiers)
  • L’orientation de la session utilisateur en fonction de la charge des serveurs où si c’est une session déconnectée

Regardons par exemple le paramétrage du Tourniquet DNS avec 2 serveurs RDS,2 serveurs Active Directory et un serveur de doc qui héberge la fonctionnalité de rôle Connection broker

La partie GPO :

Les propriétés de RDS:

http://technet.microsoft.com/fr-fr/library/cc753630.aspx
 

www.pdf24.org    Envoyer l'article en PDF   

Fonctionnalité RDS #RemoteApp #RARE

RemoteApp

Remoteapp est une fonctionnalité dans le rôle RDS qui permet d’exécuter des application depuis le menu démarrer des poste de travail utilisateur. Elle apparait alors comme une véritable application.

Pour donner l’accès aux applications plusieurs méthodes sont disponible:

  • Lien dans une page web
  • Fichier .rdp
  • Icône dans le menu démarrer via un .msi
  • Association d’un fichier de travail dont l’extension a été associé à une application via .msi également

 

www.pdf24.org    Envoyer l'article en PDF   

Rôle RDS (Terminal Server) #Protocole RDP #Côté Client

Rappels
Lors de la première demi-journée nous avons introduit le rôle RDS sur les serveurs utilisés pour le maquettage.
Le protocole utilisé est :RDP (Remote Desktop protocol)

Par défaut les serveurs écoutent sur le port TCP 3389,La quasi totalité des Versions de Windows implémentent celui-ci et nous le retrouvons dans des versions un peu plus en retrait sous Linux, Macosx, Android …
La première version était la 4.0 (NT 4.0 basée sur le protocole T.128)
La version actuelle est la 7.X

Il est bien sur tout a fait possible de modifier le port d’écoute TCP pour accroitre la sécurité ou optimiser les accès NAT venant de l’extérieur .

  • Lancer REGEDIT
  • Chercher la ruche : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control \TerminalServer\WinStations\RDP-Tcp\PortNumber
  • Passez en décimal et remplacer la valeur ex:3390

Sur le poste client procédez comme ceci:

Fonctionnalités de RDP:

  • Support des couleurs 24-bits, équivalent à 16,7 millions de couleurs. (couleurs 8, 15 et 16 bits également supportées.)
  • Chiffrement 128 bits (sécurité par défaut; des versions plus anciennes peuvent utiliser un chiffrement moins fort.)
  • Support du son : les utilisateurs peuvent écouter sur l’ordinateur local le son produit par un programme exécuté sur l’ordinateur distant.
  • Mappage des fichiers de l’ordinateur local sur l’ordinateur distant par le biais de la session RDP.
  • Mappage d’une imprimante locale sur l’ordinateur distant, pour imprimer sur l’imprimante locale des documents ouverts sur l’ordinateur distant.
  • Mappage des ports série et parallèle de l’ordinateur local sur l’ordinateur distant.

Le principal concurrent de RDP est le protocole ICA est un produit de la société Citrix systems.

Globalement le protocole RDP améliore le coût TCO (Total cost of ownership) de votre système d’informations.Mais comme un logiciel n’est pas réellement possédé (c’est plutôt son autorisation sous licence), il convient de parler de coût total d’utilisation plutôt que de coût total de possession.

 

www.pdf24.org    Envoyer l'article en PDF   

TD Préparation Evolution + Etude RDS TSE #CRC12 #C20

Pour mettre en place le TD il faut 2 machines en dur pour les serveurs, (il y aura donc 2 hôtes virtuels par machine), et il faut également prévoir un adressage complet en “bridge” (pour pour faire communiquer les 2 machines).

Commencez par vous concentrer sur la mise en place des Hosts 1 et 2.

La structure Administrative de l’Active Directory devra ressembler au projet évolution.

Théoriquement vous êtes capable d’installer et de configurer les hosts 1 et 2 avec la structure AD, la partie DNS ainsi que des GPOs

Attention une grande rigueur est de mise pour parvenir à faire communiquer tout ce petit monde.

Ensuite nous étudierons la partie RDS / TSE

Dans un second temps on rajoutera un poste client.

Et dans un troisième temps on rajoutera des rôles supplémentaires comme par exemple un serveur DHCP.

 

www.pdf24.org    Envoyer l'article en PDF