Don't Learn to Hack but Hack to Learn ***** Apprendre l'attaque pour mieux se défendre

jeudi 23 août 2012

Linux-3

Administration système: 


1- Administration des utilisateurs


Identification et authentification: 
- L’identification, c’est savoir qui est qui, afin de déterminer les droits de la personne qui se connecte. Un utilisateur est identifié par un login.
- L’authentification, c’est apporter la preuve de qui on est, par exemple via un secret partagé entre l’utilisateur et le système, et connus d’eux seuls. L’utilisateur est authentifié par un mot de passe.

Un utilisateur est l’association d’un nom de connexion, le login, à un UID et au moins un GID.
• UID : User ID.
• GID : Group ID.


Chaque utilisateur fait partie d’au moins un groupe. Un groupe regroupe des utilisateurs.


Les fichiers
/etc/passwd
Le fichier /etc/passwd contient la liste des utilisateurs du système local. Il est lisible par tout le monde. Les informations qu’il contient sont publiques et utiles tant pour le système que pour les utilisateurs. Chaque ligne représente un utilisateur et est composée de sept champs.
Login:password:UID:GID:comment:homedir:shell


/etc/group
Le fichier /etc/group contient la définition des groupes d’utilisateurs et pour chacun la liste des utilisateurs dont il
est le groupe secondaire. Chaque ligne est composée de quatre champs :
Group:password:GID:user1,user2,...



/etc/shadow
Le fichier /etc/shadow accompagne le fichier /etc/passwd. C’est là qu’est stocké, entre autres, le mot de passe
crypté des utilisateurs. Pour être plus précis il contient toutes les informations sur le mot de passe et sa validité
dans le temps. Chaque ligne est composée de 9 champs séparés par des : :


Ajouter un utilisateur

La création d’un utilisateur consiste à :
• rajouter une ligne dans /etc/passwd,
• rajouter d’une ligne dans /etc/shadow,
• rajouter d’éventuelles informations dans /etc/group,
• créer le répertoire personnel et mettre à jour son contenu avec /etc/skel,
• changer les permissions et le propriétaire du répertoire personnel,
• changer le mot de passe (encodé).
Tout ceci peut être effectué avec la commande useradd

ueradd ali ou adduser ali


Creer ou changer le mot de passe s'il existe
passwd ali



Suppression d'un utilisateur
Supprimez un utilisateur avec la commande userdel. Par défaut le répertoire personnel n’est pas supprimé. Vous devez pour ceci passer l’option -r.

userdel -r koko


ajout d'un groupe
grep koko /etc/group


Suppression d'un groupe
groupdel koko




2- Partitionnemen


3- LVM


Le LVM(Logical Volume Manager) consiste à regrouper des disques physiques ou partitions (appelés volumes physiques) en un seul grand espace (appelé groupe de volumes) dans lequel vous pouvez découper des espaces logiques à volonté (appelés volumes logiques), les agrandir, les réduire, etc.


sous Débian vous pouvez installer le LVM en utilisant le gestionnaire de paquet Synaptic ou installer le manuellement apt-get install lvm2


Créer un volume physique
Une fois les partitions créées, utilisez la commande pvcreate
pvcreate /dev/sda5 /sda6

Voir les volumes physiques
pvdisplay


Créer un groupe de volumes
Un groupe de volumes porte un nom, celui que vous voulez. C’est le premier argument de la commande. Vous passez ensuite comme argument la liste des volumes physiques composant le groupe de volumes par exemple:
vgcreate gv1 /dev/sda5 /dev/sda6
pour voir le ditail: vgdisplay -v gv1


activer le groupe de volume
vgscan -a y gv1

Créer un volume logique

Un volume logique porte un nom, dispose d’une taille
exprimée soit en extensions logiques LE (Logical Extension) qui sont la représentation des PE au sein d’un LV, soit en Ko, Mo, Go…

lvcreate -n lv1 gv1 -L +1024

Le -L précise que l’unité est en Mo (m)

pour les propriétés d’un volume logique: lvdisplay

Accès au volume logique
Vous pouvez créer un système de fichiers et monter le LV comme n’importe quelle partition :
mkfs -t ext3 /dev/gv1/lv1

Monter le volume logique:
mkdir /mnt/lvm
mount /dev/gv1/lv1 /mnt/lvm1

Pour ajouter ou enlever un espace pour un volume logique on utilise
lvextend et lvreduce
mais on doit d'abord le démonter
umount /mnt/lvm1
lvextend -r -f -L +500 /dev/gv1/lv1 (ajout de 500 Mo pour lv1)
puis remonter le volume.
mount /dev/gv1/lv1 /mnt/lvm1

et par la meme maniere pour reduire la taille
umount /mnt/lvm1
lvreduce -L500M /dev/gv1/lv1
mount /dev/gv1/lv1 /mnt/lvm1

Supprimer un volume logique
démonter le d'abord
lvremove /dev/gv1/lv1

Supprimer un groupe de volume:
d'abord désactiver le
vgchange -a y gv1 (gv1 le nom de groupe de volume)
vgremove gv1

ajouter un volume physique à un groupe de volume:
vgextend gv1 /dev/sda7 (ajouter la partition sda7 au volume groupe gv1)


Et bientôt inchalah :

4- Raid logique


5- Droit d'accé

Modification des droits

Lors de sa création, un fichier ou un répertoire dispose de droits par défaut . Utilisez la commande chmod (change mode) pour modifier les droits sur un fichier ou un répertoire:


chmod modifications Fic1 [Fic2...]

Le paramètre -R change les droits de manière récursive

a. Par symboles

S’il faut modifier les droits de l’utilisateur, utilisez le caractère u, pour les droits du groupe on utilise le caractère g, pour le reste du monde on utilise le caractère o et pour tous on utilise le caractère a.

Pour ajouter des droits, on utilise le caractère +, pour en retirer le caractère -, et pour définir le droit le caractère =.

Enfin, le droit d’accès  : r, w ou x.

r - read (le droit de lecture)

w - write (le droit d'écriture)

x - execute (le droit d'exécution)


exp;

chmod +x script.sh

chmod u=rwx,g=x,o=rw fichier1

chmod o-r fichier1


b.Par base 8 :


• Le r vaut 4.

• Le w vaut 2.

• Le x vaut 1.


Propriétaire

 r          w      x     r

400  200    100   40


Groupe

r    w      x   

40  20     10


Reste du monde

r    w      x   

4    2      1


Pour obtenir le droit final il suffit d’additionner les valeurs. Par exemple si vous voulez rwxrw-rw- alors obtenez

400+200+100+40+10+4+1=755


chmod 755 fichier

chmod 777 fichier


Lors de la création d’un fichier ou d’un répertoire, des droits leur sont automatiquement assignés. Généralement,

c’est rw-r--r-- (644) pour un fichier et rwxr-xr-x (755) pour un répertoire.
Il est possible de changer le propriétaire et le groupe d’un fichier à l’aide des commandes chown (change owner) et chgrp (change group).
chown utilisateur fic1 [fichier2...]

chgrp groupe fichier1 [fichier2...]


Le paramètre -R change la propriété de manière récursive.


Il est possible de changer le propriétaire et le groupe d’un fichier à l’aide des commandes chown (change owner) et chgrp (change group).



5- Planification des taches

Le service cron permet la programmation d’événements à répétition. Il fonctionne à l’aide d’une table, appelée une crontab. C’est un fichier texte, éditable avec un simple éditeur. Pour modifier votre crontab

personnelle utilisez la commande crontab pour éditer la table, avec le paramètre -e.


ps -ef|grep cron



Les fichiers crontabs sont sauvés dans /var/spool/cron.


Le format d’un enregistrement de crontab est le suivant :

Minutes  Heures  Jour du mois  Mois  Jour semaine  Commande


exp: Exécution d’une commande tous les jours ouvrables à 17 heures

0 17 * * 1-5 fin_travail.sh


Lister les crontabs actives :

 crontab -l

Supprimer la crontab active :

 crontab -r


Editer la crontab d’un utilisateur particulier :

crontab -u user 


ceontab système

La configuration crontab générale pour le système est dans /etc/crontab.


taper crontab -e et saisir par exemple:

1 * * * *  * /usr/bin/shutdown -r now




Programmation shell


Apache 2


DNS

Backup

Linux-2

Réseau:


Démarer le service réseau
/etc/init.d/networking start

Activer ou désactiver une interface réseau
ifconfig eth0 up
ifconfig eth0 down


Pour obtenir une adresse ip automatiquement DHCP (sur toutes les interfaces):
dhclient



Ou sur une seule interface particulière:
dhclient eth0


configurer votre carte réseau manuellement et avoir une @ip statique:
editer le fichier: 
vi /etc/network/interfaces et ajouter:
- l'@ip
- le maske de sous réseau
- la gatway (passerelle par défaut)
- le serveur DNS


ou simplement taper par exemple:
ifconfig eth0 192.168.1.15 netmask 255.255.255.0

route add default gw 192.168.1.1
echo nameserver 192.168.1.10 >/etc/resolve.conf

Pour afficher les propriétés d'interface réseau:
ifconfig


Pour définir l'adresse IP d'une interface:
ifconfig eth0 192.168.10.15


Pour changer l'adresse MAC d'une interface:
ifconfig eth0 ether hw 11:22:33:44:55:66:77:88


Pour afficher les paramètres de l'interface sans fil:


iwconfig


Ajouter l'adresse DNS
echo nameserver @ip > /etc/resolv.conf

configurer un serveur proxy
export http_proxy="http://login:password@serveurproxy:8080"
login = votre nom utilisateur
password = votre mot de passe 
serveurproxy = le nom du proxy ou son adresse ip



Pour afficher la table de routage:


route


Pour afficher le cache de routage:


route-C


Pour définir une route statique vers un réseau:


route add -net 192.168.5.10 netmask 255.255.255.0 dev eth0


Pour définir un itinéraire statique à un hôte:


route add -host 1.2.3.4. eth0


Pour supprimer un itinéraire:


route del -host 1.2.3.4 eth0


Pour ajouter une passerelle par défaut de 192.168.1.1:


route add default gw 192.168.1.1


Pour faire un traceroute vers une cible (hotmail par exp), utilisez:
traceroute www.google.com ou traceroute @ip


Pour la liste de tous connexion réseau (externe):
netstat -punta


Pour obtenir la liste des statistiques de réseau:


netstat -s


Pour obtenir la liste des statistiques sur une interface:


netstat -i eth0


Pour obtenir la liste des règles iptables:


iptables -L -v


Pour ajouter rapidement une règle pour interdire les requêtes ICMP:


iptables -A OUTPUT -p icmp -d 0/0 -j DROP


La commande ci-dessus ajoute (-A) une règle à la sortie (OUTPUT) lui disant que ICMP (-p ICMP) à partir de n'importe quelle destination (-d 0 / 0) devrait être supprimé (-j DROP)



Pour supprimer toutes les règles d'utilisation:


iptables -F


Pour supprimer toutes les règles actuellement activité:


iptables -X


(Je vais poster un article in challah sur les règles iptables)

pour bloquer icmp
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all


La valeur par défaut est 0 (pour l’autorisation)
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

Autoriser le Forward 
echo 1 > /proc/sys/net/ipv4/ip_forward

Linux-1




Commande de base linix:
 

Si les récentes distributions de Linux permettent de faire abstraction de la saisie d’instructions texte en offrant des environnements graphiques attrayants, il est inenvisageable pour un professionnel de Linux de ne pas connaître le fonctionnement de l’interpréteur de commandes et des principales commandes qui lui sont associées.

Le but de ce titre est de documenter quelques commandes de base Linux que je trouve utiles. Il est important de noter que la syntaxe Linux de quelque commande (peu) se diffère d'une distribution à une autre.
J'utilise Débian si ma syntaxe peut être légèrement différente de la vôtre si vous utilisez une autre distribution. 

pour obtenir le help: 
man <commande>
man ls 
ou
commande -h
ou
commande  --help


 Pour afficher l'utilisateur actuellement connecté :

whoami

Pour
Lister les fichiers d'un répertoire:

ls

-l : affichage détaillé (long)
-a : affichage aussi des fichiers cachés dont le nom commence par un point (all)
-i : affichage des numéros d'inodes (inode)
-d : affichage du nom du répertoire et non de son contenu (directory)
-t : trie l'affichage suivant la date de modification des fichiers (time)
-r : inverse le tri d'affichage (reverse)
-R : affichage du contenu de tous les sous répertoires (recursive)


Pour la liste de tous les répertoires dans un autre dossier utilisez la syntaxe suivante:

ls -l  / home / Ali /

Pour accéder à un répertoire:
cd  nom_répertoire

Ou le chemin d'accès comme par exemple:

cd   / etc / apache2

Pour
Se déplacer dans les répertoires:

cd ..

ou

cd ../..

 Pour accéder directement au répertoire racine /:

cd  /

Pour accéder directement à votre répertoire personnel:

cd  #



Creer un répertoire ou plusieurs répertoires:
mkdir <répertoire ...>
mkdir rep1, rep2, rep3


Supprime les répertoires:
rmdir <répertoire ...>
rmdir rep1, rep2


Dans quel répertoire suis-je actuellement:
pwd


Copie (CoPy) les fichiers source vers destination.
cp <source ...> <destination>
cp linuxtest /home (copie le fichier linuxtest dans le répartoire home

-i : demande confirmation avant écrasement (interactive)
-f : écrase sans demander confirmation (force)
-R ou -r : copie aussi les répertoires (recursive)
 Attention : sans l'option -R (ou -r), la commande cp ne pourra pas copier les répertoires 



copier un fichier avec la commande scp


La commande scp permet de copier un fichier ou un répertoire (-r) du client vers  le serveur ou du serveur vers le client. Le chemin du serveur peut être indiqué en absolu (/home/ali/Repertoire par exemple) ou relatif à partir du répertoire  de base Repertoire.Il est impératif que SSH soit installé sur les deux machines. 



Copie d'un fichier d'une machine1 vers une autre machine2:
scp Login1@machine1:Chemin1/NomFichier1 Login2@machine1:Chemin2


Copie d'un fichier depuis le répertoire courant vers un répertoire du serveur:
scp Fichier login@serveur:Chemin


Copie d'un répertoire, avec éventuellement ses sous-répertoires, vers un répertoire du serveur:
scp -r Repertoire login@serveur:Chemin


exp: scp /home/fct.txt root@192.168.10.5:/home/mohamed


Renomme/déplace (MoVe) les fichiers source vers destination.
mv <source ...> <destination>
mv linux1 linux2
renomme le fichier "linux1" en "linux2"

-i : demande confirmation avant écrasement (interactive)
-f : écrase sans demander confirmation (force)
Créer un ou plusieurs fichiers:
touch <fichier ...>
touch fc1, fc2



Supprime (ReMove) les fichiers passés en arguments.
rm <fichier ...>

rm -Rf nom_répertoire Pour supprimer tous les fichiers et répertoires et sous-répertoires (sans avertissement)

-i : demande confirmation avant suppression (interactive)
-f : supprime sans demander confirmation (force)
-R : supprime aussi les répertoires (recursive)

Recherche d'un fichier:
find <chemin(s)> <critère(s)> <action(s)>
find . -name "fic*" -print

la liste de tous les fichiers depuis l’emplacement courant et commençant par
« fic » est affichée.

- les principaux critères (critère(s)) sont :
  -name '<motif>'
  -size <[+|-]taille>
  -mtime <[+|-]date>
  -user <nom|UID>
  -newer <fichier référence>
- les principales actions (action(s)) sont :
  -print
  -ls
Rechercher une chaîne de caractères dans un fichier:
 grep [Options] modèle [Fichier1...]
exp: grep -i "ab" fic4



-v effectue la recherche inverse : toutes les lignes ne correspondant pas aux critères sont affichées.
-c ne retourne que le nombre de lignes trouvées sans les afficher.
-i ne différencie pas les majuscules et les minuscules.
-n indique le numéro de ligne pour chaque ligne trouvée.
-l dans le cas de fichiers multiples, indique dans quel fichier la ligne a été trouvée.

Trie de ligne:
sort [options] [-k pos1[,pos2]] [fic1...]
exp: sort -k 1 liste trier par ordre alphabétique sur la première colonne.


Options:
-d Dictionnary sort (tri dictionnaire). Ne prend comme critère de tri que les lettres les
chiffres et les espaces.
-n Tri numérique, idéal pour les colonnes de chiffres.
-b Ignore les espaces en début de champ.
-f Pas de différences entre majuscules et minuscules (conversion en minuscules puis tri ).
-r Reverse, tri en ordre décroissant.
-tc Nouveau délimiteur de champ c.
Affiche le contenu des fichiers texte passés en arguments.


Afficher des colonne et et des champs  spécifiques dans un fichier
cut -cCOLONNE [nom_fichier ...]
cut -fliste [-ddélimiteur] [-s] [nom_fichier ...]


-c: ne retient sur chaque ligne que les caractères situés à une position donnée par liste. Par exemple, l'option
-c2 pour la colonne 2
-c1-50 ne garde que les 50 premiers caractères de chaque ligne.
une colonne est la position d'un caractère dans la ligne, le premier caractère est la colonne 1 et ainsi de suite
-f : ne retient qu'une liste de champs (séparés soit par des tabulations, soit par un délimiteur spécifié par l'option -d). Par exemple, l'option -f1,3-5 conduira la commande à ne garder que les champs numéros 1, 3, 4 et 5 de chaque ligne.

exp: cut -c1 /etc/passwd (affichera la première colonne du fichier passwd)
        cut -d: -f6 /etc/passwd  (affichera le 6eme champ du fichier /etc/passwd, dont le séparateur de champs                                    est le caractére double point (``:'').

cat <fichier ...>

exp cat fc ou  cat /etc/passwd

Une option utile de cat est -n qui permet de numéroter les lignes

more <fichier ...>
Affiche page par page le contenu des fichiers texte passés en arguments.
Retourne le type de fichier passé en argument
Affiche le nombre de lignes, de mots et de caractères (Word Count) contenus dans les fichiers
wc <fichier ...>
 passés en arguments.
-l : affiche uniquement le nombre de lignes (line)
-w : affiche uniquement le nombre de mots (word)
-c : affiche uniquement le nombre de caractères (character)
Archiver ou désarchiver:
(format tar)
tar czf monarchive.tar (pour archiver)
tar xzf monarchive.tar r (pour désarchiver)


x: (extract) permet d'extraire certains fichiers d'une archive (lorsque l'on ne spécifie pas les noms des fichiers que l'on souhaite extraire de l'archive, tar les extrait tous).
z: décompacte l'archive
f: extrait un fichier donné (ici le fichier est nom_du_fichier.tar.gz).
c: pour compresser
autre option:
v: est le mode "verbose"


ou (format tar.gz)
tar czf monarchive.tar.gz
tar xzf monarchive.tar.gz

ou (format bzip2)
tar cjf  monarchive.tar.bz2 ou tar cjf  monarchive.tbz
tar xjf  monarchive.tar.bz2


Une autre commande permet de connaître la liste des fichiers contenus dans un fichier .tar.gz ou tgz :
tar tvzf nom_du_fichier.tar.gz

Compresse le fichier au format GNU Zip:
gzip <fichier>


Décompresse le fichier fichier.gz qui est au format GNU Zip:
gunzip <fichier[.gz]>



Retourne le type de fichier passé en argument:
file <fichier>


Modifie les droits d'accès (CHange MODe) aux fichiers passés en arguments suivant le mode:
chmod <mode> <fichier ...>

chmod +x script1.py
chmod 777 script2.py


Liste les processus (programmes en cours d'exécution):
ps
-ef : affiche tous les processus avec des statistiques supplémentaires  
-aux : affiche tous les processus avec des statistiques supplémentaires
Liste les processus de façon arborescente:
pstree
Liste les processus de façon arborescente.
-p : affiche aussi les PID des processus
Envoi un signal au precessus:
kill <signal> <pid>

kill -9 <pid de processus> pour suprimer un processus
killall <nom de processus>


Affiche ou modifie la date système:
date

Affiche le calendrier:
cal [[mois] année]
cal 1987 


On peut combinuer entre les commande: 
exp: cat /etc/passwd | cut -d: -f1 | tee users | wc -l


     cut -d":" -f1,3 /etc/passwd | sort -n | uniq