Skip to main content

Divers

Bash tricks

Sort IP

Filtrer les adresses IP dans l'ordre croissant/human readable:

sort -t . -k 3,3n -k 4,4n

Backdoor non logguée

Besoin d'un accès root au serveur; ne laisse aucune trace dans les logs

cp /bin/bash rootShell
sudo chown root:root rootShell
sudo chmod 6777 rootShell
./rootShell

Conf DevOps intéréssante

Conf DevOps intéréssante

DIYFetch

J'adore cet outil qui propose pas mal de themes alternatifs a neofetch. DIYFetch

ssh-audit

Tool vraiment utile pour auditer et configurer son ssh access server et client un peu plus secure.

https://lnkd.in/emqHcQrg

CheatSheet Commandes

Linux

Commandes Linux principales

MySQL 🗃️

Création BDD + user

Création d'une base de données

CREATE DATABASE dbname

Création d'un utilisateur

CREATE USER 'utilisateur'@'localhost' IDENTIFIED BY 'password';

Affectation des droits

GRANT ALL PRIVILEGES ON dbname.* TO 'utilisateur'@'localhost';
FLUSH PRIVILEGES;

Dump & Restore de BDD

mysqldump -h localhost -u [MySQL user, e.g. root] -c --add-drop-table --add-locks --quick --lock-tables [name of the database] > sqldump.sql
mysql -h host -u user -p base_de_donnees < fichier_dump

Screen

Screen est un outil permettant de virtualiser plusieurs terminaux au sein d'une session.

Créer une screen et la nommer :

screen -S nom_screen

Lister les screens ouvertes par un utilisateur, le statut detached permet de voir les screens qui ne sont rattachées à aucun terminal.

screen -ls nomscreen

Rattacher une screen - le paramètre nomscreen est optionnel si une seule screen a été ouverte par un utilisateur

screen -r nom_screen

Récupérer une screen attachée suite à une connection drop

screen -D -r nom_screen

Kill la screen

screen -S <screenid> -X quit
tip

Pour obtenir une screen visuellement plus attrayante, il faut recopier le fichier ".screenrc" situé dans Z:\Max\Configuration" à la racine du répertoire de l'utilisateur /home/, avant de démarrer une nouvelle screen. Ce script crée automatiquement 4 fenêtres de screen "Shell1", "Shell2", "Logs" et "Root", en utilisant /bin/bash (au lieu de /bin/sh par défaut). Il est possible de l'éditer avec nano, vi, ou PSPad pour changer le nom de ces screens, en ajouter/supprimer, etc. La screen actuellement active est mise en surbrillance. Le script permet également d'utiliser le raccourci [Ctrl]+[a] suivi de [:number] pour basculer vers la screen [:number].

tip

A l'intérieur de la screen :

  • [CTRL]+[a] suivi de ["] : lister des différents terminaux, avec la possibilité d'en choisir un.

  • [CTRL]+[a] suivi de [shift]+[a] : Renommer l'onglet courant

  • [CTRL]+[a] suivi de [d] : Détacher une screen

  • [CTRL]+[a] suivi de [:number] x : Re-positionner la screen en position x

  • [CTRL]+[a] suivi de [shift]+[d] suivi de [shift]+[d] : détache toutes les screens ouvertes et ferme la connexion (ferme la fenêtre putty)

  • [CTRL]+[Esc] : permet de rentrer en mode "édition" pour scroller dans la screen avec PgUp et PgDown; faire [q] ou [Esc] pour en sortir

Bureatique

Joplin

Mettre à jour Joplin en CLI:

sudo wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash

smartCTL

Sur ton linux tu peux avoir un p'tit outil très sympa appelé smartctl qui va te permettre de déterminer l'état d'un disque physique.

Il utilise la technologie SMART bien connu dans les systèmes de stockage. Il permet de déceler des signes précurseurs de vieillissement et de pannes des disques durs avant qu'ils ne soient définitivement en panne.

Tu l'as dans un packet appelé smartmontools (debian, redhat et arch).

Très facile à utiliser :

$ smartctl --all /dev/sdX 
tip

et t'a des options intéressantes. Tu peux même faire des tests long or short.

Tu peux faire des recherches Google pour comprendre les résultats. 👇🏾

n8n

Il existe tant de solutions possibles pour faire de l'automatisation, sans pour autant écrire la moindre ligne de code... Cependant elles sont toutes propriétaires. (IFTTT, Zapier, etc...)

C'est pour cela que nous avons trouvé n8n, se plaçant comme une concurrente très sérieuse à celles citées précédemment. Cerise sur le gâteau, nous pouvons l'auto-héberger sur notre plateforme, et ainsi garder le contrôle sur les données.

Gestion des logs

Sur un serveur web, gestion des logs avec Logrotate

Logrotate est lancé automatiquement toutes les heures via /etc/cron.daily/logrotate

tip

/etc/logrotate.conf est le fichier de configuration par défaut de logrotate.

/etc/logrotate.d/ est le répertoire qui contient les fichiers de configuration des logs à traiter.

details Exemple de conf pour Apache 2

/var/log/apache2/*.log # ici on précise qu'on effectue la rotation avec tous les fichiers présents dans le répertoire dont l'extension est .log
{
daily #ici le daily signifie que le fichier doit être archivé tous les jours
missingok # ici on précise qu'aucune erreur ne doit être remontée si la rotation d’un fichier de log spécifié est absent.
rotate 14 # ici on précise le nombre d'archivage qui doivent être conservés (on aura donc 14 fichiers de logs pour chaque fichier log présents dans le répertoire avant d'avoir effectué la rotation)
compress # ici on précise que les fichiers doivent êtres compressés
delaycompress # ici on précise que la compression du journal précédent doit être effective sur le prochain
notifempty #ici on indique de n’archive aucun fichier vide.
create 640 root adm # Pour chaque fichier log créé on accorde les droits de Lecture/Ecriture pour l'utilisateur root ainsi que le droit de lecture pour les utilisateurs du groupe adm.
sharedscripts # ici on indique d’executer qu’une fois le script postrotate par rotation
postrotate # la section postrotate / endscript encadre une ou des lignes de script qui seront effectuées juste après la rotation de logs.
if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
endscript
prerotate # la section prerotate/ endscript encadre une ou des lignes de script qui seront effectuées juste avant la rotation de logs.
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}

D'autres options bien utiles

  • daily | weekly | monthly | yearly : spécifie l'intervalle de rotation (weekly = une fois par semaine)
  • size taille : provoque une rotation quand le fichier cible dépasse cette taille (on peut utiliser rien, k ou M pour préciser l'unité)
  • minsize taille : définie la taille minimal du fichier de log, sinon on ne le traite pas
  • compress : permet de compresser les fichiers de logs
  • delaycompress : Logrotate compressera le fichier sur la prochaine itération
  • missingok : continue le traitement même en cas de fichier manquant
  • create umask user group : indique les attributs des fichiers créés (l'umask ainsi que l'utilisateur et le groupe)
  • olddir dir : indique le répertoire où déplacer les fichiers pour effectuer la rotation (NB : ce répertoire doit être sur le même périphérique physique que le journal en cours de permutation) *sharedscripts : précise à logrotate de n'exécuter qu'une fois le script de postrotate par bloc. C'est utile par exemple pour éviter de relancer le démon Apache après la rotation de son access.log, puis à nouveau pour son error.log.

Une liste exhaustive des paramètres est présente ici

Pour simuler la rotation des logs on utilise la commande

logrotate -d /etc/logrotate.d/<fichiertest>