Aller au contenu principal

Linux Fondamentaux

Introduction​

Linux est un systeme d'exploitation open source base sur Unix. Comprendre Linux est essentiel en cybersecurite car:

  • La majorite des serveurs web utilisent Linux
  • Les outils de securite sont souvent developpes pour Linux
  • WSL permet d'utiliser Linux sous Windows

Comparaison Windows vs Linux​

Structure du systeme de fichiers​

AspectWindowsLinux
RacineC:\/
Separateur\/
Sensibilite casseNonOui
UtilisateursC:\Users\nom/home/nom
ProgrammesC:\Program Files/usr/bin, /opt
ConfigurationRegistreFichiers texte (/etc)

Arborescence Linux​

/
├── bin/ # Binaires essentiels
├── boot/ # Fichiers de demarrage
├── dev/ # Peripheriques
├── etc/ # Configuration systeme
├── home/ # Repertoires utilisateurs
├── lib/ # Bibliotheques
├── media/ # Points de montage media
├── mnt/ # Points de montage temporaires
├── opt/ # Logiciels optionnels
├── proc/ # Processus (virtuel)
├── root/ # Home de root
├── sbin/ # Binaires systeme
├── tmp/ # Fichiers temporaires
├── usr/ # Programmes utilisateur
└── var/ # Donnees variables (logs, mail)

Commandes Essentielles​

# Repertoire courant
pwd

# Lister les fichiers
ls
ls -la # Details + fichiers caches
ls -lh # Tailles lisibles

# Changer de repertoire
cd /chemin
cd ~ # Home
cd - # Precedent
cd .. # Parent

Fichiers et Dossiers​

# Creer
mkdir dossier
touch fichier

# Copier
cp source destination
cp -r dossier/ destination/

# Deplacer/Renommer
mv source destination

# Supprimer
rm fichier
rm -r dossier/
rm -rf dossier/ # Force (DANGER!)

# Afficher contenu
cat fichier
less fichier # Pagination
head -n 10 fichier
tail -n 10 fichier
tail -f fichier # Suivi en temps reel

Recherche​

# Trouver des fichiers
find /chemin -name "*.txt"
find / -type f -name "password*"
find / -perm -4000 # SUID

# Rechercher dans les fichiers
grep "motif" fichier
grep -r "motif" /chemin/
grep -i "motif" fichier # Insensible casse

Permissions​

# Voir les permissions
ls -l fichier

# Format: -rwxrwxrwx
# │└┬┘└┬┘└┬┘
# │ │ │ └── Autres (o)
# │ │ └───── Groupe (g)
# │ └──────── Proprietaire (u)
# └────────── Type (- fichier, d dossier)

# Modifier les permissions
chmod 755 fichier # rwxr-xr-x
chmod u+x fichier # Ajouter execution pour user
chmod go-w fichier # Retirer ecriture pour group/others

# Modifier le proprietaire
chown user:group fichier

Valeurs chmod​

ValeurPermission
7rwx (lecture + ecriture + execution)
6rw- (lecture + ecriture)
5r-x (lecture + execution)
4r-- (lecture seule)
0--- (aucune)

Utilisateurs et Groupes​

Fichiers importants​

FichierContenu
/etc/passwdListe des utilisateurs
/etc/shadowMots de passe hashes
/etc/groupListe des groupes
/etc/sudoersConfiguration sudo

Commandes utilisateurs​

# Utilisateur courant
whoami
id

# Changer d'utilisateur
su - username
su - # Devenir root

# Executer en tant que root
sudo commande
sudo -i # Shell root

# Gerer les utilisateurs
useradd username
passwd username
userdel username

Processus​

Commandes​

# Lister les processus
ps aux
ps -ef

# Arborescence
pstree

# Temps reel
top
htop # Version amelioree

# Tuer un processus
kill PID
kill -9 PID # Force
killall nom

# Arriere-plan
commande &
jobs
fg %1
bg %1

Signaux courants​

SignalNumeroDescription
SIGTERM15Terminer proprement
SIGKILL9Tuer immediatement
SIGINT2Interruption (Ctrl+C)
SIGHUP1Deconnexion

Reseau​

Commandes​

# Configuration IP
ip addr
ifconfig # Ancien

# Connexions
netstat -tulpn
ss -tulpn # Moderne

# Test connectivite
ping adresse
traceroute adresse

# DNS
nslookup domaine
dig domaine

# Transfert
wget url
curl url
curl -o fichier url

# Connexion distante
ssh user@serveur
scp fichier user@serveur:/chemin/

Services et Daemons​

systemd (moderne)​

# Statut
systemctl status service

# Demarrer/Arreter
systemctl start service
systemctl stop service
systemctl restart service

# Activer/Desactiver au boot
systemctl enable service
systemctl disable service

# Lister les services
systemctl list-units --type=service

SysVinit (ancien)​

service nom start
service nom stop
service nom status

Fichiers Importants pour la Securite​

Configuration​

FichierDescription
/etc/passwdComptes utilisateurs
/etc/shadowHash des mots de passe
/etc/sudoersPrivileges sudo
/etc/ssh/sshd_configConfiguration SSH
/etc/crontabTaches planifiees systeme

Logs​

FichierDescription
/var/log/auth.logAuthentification (Debian)
/var/log/secureAuthentification (RedHat)
/var/log/syslogLogs systeme
/var/log/messagesMessages generaux
/var/log/apache2/Logs Apache

Consulter les logs​

# Journalctl (systemd)
journalctl
journalctl -u service
journalctl -f # Temps reel
journalctl --since today

# Fichiers
tail -f /var/log/auth.log
grep "Failed" /var/log/auth.log

Bits Speciaux (Securite)​

SUID (Set User ID)​

Permet d'executer un programme avec les privileges du proprietaire.

# Trouver les fichiers SUID
find / -perm -4000 2>/dev/null

# Exemple: passwd a SUID root pour modifier /etc/shadow
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd

SGID (Set Group ID)​

Similaire mais pour le groupe.

find / -perm -2000 2>/dev/null

Sticky Bit​

Empeche la suppression de fichiers par des non-proprietaires.

ls -ld /tmp
# drwxrwxrwt ... /tmp
# Le 't' indique le sticky bit

Scripting Bash Basique​

Premier script​

#!/bin/bash
# Mon premier script

echo "Bonjour, $USER!"
echo "Nous sommes le $(date)"
echo "Vous etes dans $(pwd)"

Variables et conditions​

#!/bin/bash

# Variables
nom="Linux"
version=5

# Condition
if [ $version -gt 4 ]; then
echo "$nom version $version est recent"
else
echo "Version ancienne"
fi

# Boucle
for i in 1 2 3 4 5; do
echo "Iteration $i"
done

Script utile - Enumeration basique​

#!/bin/bash
# Enumeration systeme basique

echo "=== INFORMATIONS SYSTEME ==="
echo "Hostname: $(hostname)"
echo "Kernel: $(uname -a)"
echo "User: $(whoami)"
echo "ID: $(id)"

echo -e "\n=== UTILISATEURS ==="
cat /etc/passwd | cut -d: -f1

echo -e "\n=== SUID FILES ==="
find / -perm -4000 2>/dev/null

echo -e "\n=== CRON JOBS ==="
cat /etc/crontab

echo -e "\n=== CONNEXIONS RESEAU ==="
ss -tulpn

WSL (Windows Subsystem for Linux)​

Installation​

# PowerShell (Admin)
wsl --install

# Choisir une distribution
wsl --install -d Ubuntu

Commandes WSL​

# Lister les distributions
wsl --list --verbose

# Demarrer
wsl

# Acceder aux fichiers Windows
cd /mnt/c/Users/

# Depuis Windows, acceder a Linux
\\wsl$\Ubuntu\home\user\

Exercices​

  1. Naviguez dans le systeme de fichiers et listez les fichiers de /etc
  2. Creez un fichier, modifiez ses permissions en 644
  3. Trouvez tous les fichiers SUID sur le systeme
  4. Ecrivez un script qui affiche les informations systeme
  5. Consultez les logs d'authentification

References​