HLab

Julien Hautefeuille

Commandes Unix efficaces

Monitorer iptables en “temps réel”

sudo watch -n1 iptables -vnL

Générer un certificat SSL autosigné

openssl req -subj '/CN=domain.be/O=My Company Name./C=BE' -new -newkey rsa:4096 -days 365 -nodes -x509 -sha256 -keyout server.key -out server.crt

Liste des commandes les plus utilisées

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Obtenir votre ip externe

curl ifconfig.me

Accéder à la table ASCII

man ascii

Différer une commande

echo "ls -la" | at midnight

Copie récursive avec tar

(cd /source && tar cfp - . ) | (cd /cible && tar xvpf -)

Liste des processsus les plus gourmands

ps aux | sort -nk +4 | tail

Ajouter votre répertoire de travail dans une pile

pushd /tmp

Puis

popd

Sur quel type de machine suis-je ?

getconf LONG_BIT

Obtenir des informations sur la partition

dumpe2fs -h /dev/hda3

Voir les partitions montées

mount | column -t

Monter rapidement une partition en RAM

mount -t tmpfs tmpfs /mnt -o size=1024m

Monter un système de fichiers SSH

sshfs name@server:/path/to/folder /path/to/mount/point

Différences sur des sorties de commandes

diff<(command1)<(command2)

Recherche de root kits

rkhunter -c
chkrootkit

Conversion de flv vers avi avec mencoder

mencoder video.flv -ovc lavc -oac pcm -lavcopts vcodec=mpeg4 -o video.avi

Conversion flv vers mp3

ffmpeg -i fichier.flv -vn -ar 44100 -ac 2 -ab 192 -f mp3 fichierfin.mp3 

Conversion mp4 vers mp3

for f in *.mp4; do avconv -i "$f" -b 256k "${f%.mp4}.mp3"; done

Diffuser un film sur le réseau avec mplayer

Sur le serveur :

cat monfilm.mp4 | nc -l 9999

Sur le client :

nc 192.168.100.1 9999 | tee monfilm.mp4 | mplayer -

Télécharger les mp3 d’un site

wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off http://www.micromix.fr

Redimensionner des images

for f in *.png; do convert $f -resize 852x480 $f; done

Trier les répertoires par taille

du -sh * | sort -nr
du -s * | sort -rnk 1
du -h --max-depth=1

Consultation DNS en temps réel

watch -n1 dig calomel.org

Ping auditif

ping -i 60 -a HOST

Emet un son quand la machine devient online.

Surveiller les activités réseau

lsof -i

Détection des ports ouverts

nmap -T 3 192.168.1.1

Traceroute enrichi

mtr google.com

Détection de l’OS

nmap -O 192.168.1.1

Ecrire le résultat d’un scan dans un fichier

nmap -sS -sV -O 192.168.0.0/24 > output.txt

Analyse de trafic avec tcpdump

tcpdump -enttti pflog0
tcpdump -enttti pflog0 host 192.168.0.111
tcpdump -enttti pflog0 host 192.168.0.17 and tcp port 25

Aspirer un site web

wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com

Sniff du port 80

ngrep -d "eth0" -t "^(GET|POST)" "tcp and port 80"

Dump d’une base MySQL

mysqldump --add-drop-table -h localhost -u USERNAME -p DATABASENAME | bzip2 -c > machine.sql.bz2

Restauration d’une base MySQL

zip2 -d machine.sql.bz2
mysql -h localhost -u USERNAME -p DATABASENAME < machine.sql

Tester la vitesse de lecture du disque

hdparm -Tt /dev/sdc

Démarrer un serveur web en Python

python -m SimpleHTTPServer 8080

Partager rapidement un fichier sur le réseau

nc -v -l 80 < monfichier.txt

Créer un patch sur un fichier

diff -uN file file.new > mypatch

Créer un patch sur un dossier

diff -ruN directory/ directory.new/ > mypatch

Appliquer un patch sur un fichier

patch < mypatch

Appliquer un patch sur un dossier

patch -R < mypatch

Observer un répertoire

watch ls

Observer les connexions

watch -n1 -d 'netstat -an | grep ESTABLISHED'

Effacement définitif d’un fichier

shred -f -v -z -u myfile

Création d’un tunnel ssh

ssh - tunnel ssh user@serveur -C -N -D 8080

Créer une image sur le réseau avec netcat

Sur l’hôte :

nc -l -p 2000 > image.dsk

Sur le PC

dd if=/dev/sda | nc hote 2000

Email en ligne de commande

echo | mutt -s "bkprooter" -a siteCUSTOM.tgz  -- robert@aol.com

Screencast

recordmydesktop -x 0 -y 0 --width=1920 --height=1080 --fps=25

Créer un transfert de données entre 2 flux TCP avec SOCAT

socat TCP4-LISTEN:www TCP4:www.domain.org:www

Ecrire dans un fichier les données reçues sur un port

socat -u TCP4-LISTEN:3334,reuseaddr,fork OPEN:/tmp/in.log,creat,append

Générer les clés SSH

ssh-keygen -t rsa

Puis

antec $ scp ~/.ssh/id_rsa.pub votrelogin@xyz.org:~/.ssh/id_rsa.pub.tmp
antec $ ssh votrelogin@xyz.org
shoota $ cat ~/.ssh/id_rsa.pub.tmp >>~/.ssh/authorized_keys
shoota $ rm ~/.ssh/id_rsa.pub.tmp

Ou bien plus simple, utiliser ssh-copy-id :

ssh-copy-id bob@calagan

Eteindre une machine sous Windows

net rpc shutdown -I ipwindowsmachine -U username%password

Les options courantes de MOUNT

  • -a : monte tous les systèmes déclarés dans /etc/fstab
  • -t : précise le type de fichier à monter
  • -o : ajoute une option

Options adjointes les plus fréquentes :

  • auto : permet d’être monté par -a (mount -a)
  • async : les entrées/sorties sur le système de fichiers sont asynchrones
  • defaults : utilise les options rw, suid, dev, exec, auto, nouser, async
  • dev : interprète les fichiers spéciaux de périphériques du système
  • exec : permet l’exécution de fichiers binaires
  • noauto : empêche le montage avec -a
  • nodev : n’interpréte pas les fichiers spéciaux de périphériques
  • noexec : empêche l’exécution de fichiers binaires
  • nouser : n’autorise pas d’utilisateur autre que root (par défaut)
  • ro : monte le système en lecture seule
  • rw : monte le système en lecture et écriture
  • suid : prend en compte les bits SetUID ou SetGID
  • user : permet aux utilisateurs le montage et le démontage du système

Les raccourcis du mode console

Déplacement

  • Ctrl + a : aller au début de la ligne
  • Ctrl + e : aller à la fin de la ligne
  • Alt + b : se déplacer mot par mot dans la ligne de commande en arrière
  • Alt + f : se déplacer mot par mot dans la ligne de commande en avant
  • Ctrl + xx : positionner le curseur au début du mot ou à la fin

Couper / Coller

  • Ctrl + k : couper la chaîne du curseur jusqu’à la fin de la ligne
  • Ctrl + u : couper la chaîne du curseur jusqu’au début de la ligne
  • Ctrl + w : couper le mot avant le curseur
  • Ctrl + y : coller une chaîne

Modification

  • Ctrl + t : inverser la position des deux caractères avant le curseur
  • Alt + shift + t : inverser la position des deux mots avant le curseur
  • Alt + shift + c : mettre une lettre en majuscule
  • Alt + shift + l : mettre un mot en minuscule (l pour lowercase)
  • Alt + shift + u : mettre un mot en majuscule (u pour uppercase)
  • **Alt + shift + **. : réécrire le paramètre de la dernière commande

Divers

  • Ctrl + l : effacer le contenu de l’écran
  • Ctrl + _ : annuler la dernière modification
  • Ctrl + c : arrêter la commande en cours
  • Ctrl + z : interrompt temporairement un processus (fg et bg)
  • Ctrl + d : quitter le shell en cours
  • Ctrl + r : permet de rechercher une commande dans l’historique