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
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.
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
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].
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
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
/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>