1. Commandes Linux
1.1. usefull
1.1.1. Affiche les volumes montés
df -h
1.1.2. Un ls avec arborescence récursif
tree /foo/bar
1.1.3. Affiche des renseignements sur les systèmes de fichiers des périphériques et blocs disponibles.
lsblk --fs
1.1.4. Liste Les UUIDs, les Labels et Types de toutes les partitions montées
blkid
1.1.5. Affiche les informations hardwares
lshw <-short -sanitize>
1.1.6. Affiche tous les processus actifs
ps -ef
1.1.7. liste les processus qui consomment le plus de mémoire
ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 1 | head
ou
ps aux --sort=-%mem | awk 'NR<=11 {print $0}'
1.1.8. liste les processus qui consomment le plus de CPU
ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 2 | head
ou
ps aux --sort=-%cpu | awk 'NR<=11 {print $0}'
1.1.9. suspendre une tâche en cours de traitement
CTRL + Z
1.1.10. Voir les processus qui utilise un port en particulier
lsof -i :port
1.2. Manipulation de fichiers
1.2.1. Sed
1.2.1.1. Remplacer un chaine de caractère avec la commande sed
sed -i -e "s/chaines1/chaine2/g" fichier
# si caractères spéciaux, ne pas oublier de les escaper :
sed -i -e "s/\/home/\/tmp/g" fichier
1.3. find - grep
1.3.1. Rechercher une chaine de caractères
-r = récursif -i = insensible à la casse -n = indique le numéro de la ligne où figure la chaine de caractères
1.3.1.1. exclure des dossiers
–exclude-dir=/foo/bar
1.3.2. pour que le résultat soit enregistré dans un fichier
grep -rin <ma_chaine_de_caractere> * > /foo/bar
1.3.3. Chercher une occurrence dans un répertoire en récursif
find . -type f -exec grep "path" '{}' \; -print | more
1.3.4. Rechercher un fichier dans l’arborescence
find / -type f -name mon_fichier
1.4. netstat - lsof
La commande netstat, pour « Network Statistics » permet d’obtenir de nombreuses informations sur les connexions réseaux et les tables de routage.
1.4.1. Liste les connexions actives tcp / udp avec le processus (program) utilisé
sudo netstat -ltunp
1.4.2. Découvrir quel port est utilisé par un programme
sudo netstat -ap | grep le_program
1.4.3. Trouver quel processus utilise un port particulier
sudo netstat -an | grep ':le_port'
lsof est une commande très utile pour retrouver quel utilisateur ou quel programme utilise quels fichiers.
Or dans linux , (tout est fichier) – périphériques, dossiers, … et même les “sockets” des connexions réseau.
Cet outil permet donc de facilement surveiller les activités d’un programme : qui l’utilise, quels fichiers utilise-t-il, utilise-t-il le réseau etc…
1.4.4. Lister toutes les connexions ouvertes et les ports à l’écoute avec l’user et le processus qui est à l’origine :
sudo lsof -i
1.4.5. sur un port particulier
sudo lsof -i :port
1.4.6. sur un programme / processus
sudo lsof -i -a -c mon_programme
1.4.7. sur un user
sudo lsof -i -a -u mon_user
1.5. scp
La commande SCP (Secure Copy) est utilisée pour copier des fichiers de manière sécurisée, basée sur le protocole ssh.
1.5.1. De local vers serveur distant
scp <fichier à envoyer> <utilisateur>@<hôte distant>:<dossier cible>
1.5.1.1. en récursif
scp -r <dossier à envoyer> <user@hôte distant>:<dossier cible>
1.5.2. d’un serveur distant vers local
scp -r user@<hôte distant>:/var/log/ /home/yishan
scp user@<hôte distant>:/home/user/file.txt /tmp
2. Vim
2.1. SheetSheat
2.1.1. Le déplacement (mode commande)
-
Aller en début de ligne → 0
-
Aller en fin de ligne → $
-
Ligne précédente (ou monter) → k
-
Ligne suivante (ou descendre) → j
-
Caractère précédent (ou aller à gauche) → h
-
Caractère suivant (ou aller à droite) → l
-
Mot précédent → b
-
Mot suivant → w
-
Page précédente → Ctrl+B (ou Page précédente avec vim)
-
Page suivante → Ctrl+F(ou Page suivante avec vim)
-
Aller à la ligne n → ngg ou nG (où n est le numéro de ligne)
-
Aller à la première ligne : gg
-
Aller à la dernière ligne → G
2.1.2. Quitter / Enregistrer (mode commande)
-
Enregistrer SANS quitter → :w
-
Quitter en enregistrant les modifications → :wq ou x
-
Quitter sans enregistrer les modifications → :q!
2.1.3. Insertion (mode commande et passer en mode édition)
-
Activer le mode insertion → i
-
Insérer au début de la ligne → I (i majuscule)
-
Activer le mode insertion, un caractère après le curseur → a
-
Insérer en fin de ligne → A
-
Insérer une ligne (en dessous du curseur) → o
-
Insérer une ligne (au dessus du curseur) → O
-
Quitte le mode édition → Echap
2.1.4. Remplacer (mode commande)
-
Remplacer le caractère sous le curseur → r puis le caractère à insérer
-
Remplacer avec le texte saisi → R puis le texte à remplacer
-
Effacer la suite de la ligne et passer en mode insertion → C
-
Quitte le mode remplacement → Echap
2.1.5. Copier / Couper / Coller (mode commande)
-
Copier la ligne courante → yy
-
Copier n lignes à partir de la ligne courante → nyy (Remplacer n par un nombre)
-
Coller (ligne en dessous le curseur) → p
-
Coller (ligne au dessus le curseur) → P
-
Couper la ligne courante → dd
-
Couper n lignes à partir de la ligne courante → ndd (Remplacer n par un nombre)
2.1.6. Effacer (mode commande)
-
Effacer le caractère courant → x
-
Effacer la ligne courante → dd
-
Effacer n lignes à partir de la ligne courante → ndd (Remplacer n par un nombre)
-
Effacer le mot sous le curseur → dw
-
Effacer du curseur à la fin de la ligne → d$
-
Effacer du début de la ligne au curseur → d^
2.1.7. Rechercher (mode commande)
-
Appuyer sur la touche / puis taper la chaîne à rechercher. Appuyer sur la touche Entrée. Appuyer sur la touche n pour aller à l’occurrence suivante, N pour l’occurrence précédente.
-
Recherche en avant du mot texte → /texte
-
Recherche en arrière du mot texte → ?texte
-
Aller à l’occurrence suivante → n
-
Aller à l’occurrence précédente → N
2.1.8. Divers (mode commande)
-
Annuler la dernière action → u
-
Modifier la casse du caractère → ~ (la tilde avec AltGR+2)
3. Commandes Windows
3.1. commandes
3.1.1. Ouvre la base de registre
regedit.exe
3.1.2. Ouvre le gestionnaire de disques
diskmgmt.msc
3.1.3. Ouvre le gestionnaire de périphériques
devmgmt.msc
3.1.4. ouvre l’observateur d’évènements
eventvmr.exe
3.1.5. ouvre les paramètres de sons
mmsys.cpl
3.1.6. ouvre l’analyseur de performances
perfmon.msc
3.1.7. Ouvre l’éditeur des comptes utilisateurs
control userpassword
3.1.8. contrôle les utilisateurs et leurs accès
netplwiz
3.1.9. tasklist / Kill un processus
taskkill.exe /F /IM <nom_du_processus>
3.1.10. Vérifie et répare les fichiers systèmes
nfc /scannow
3.1.11. Obtenir la version du système
winver
3.1.12. Activer la fonctionnalité Machine virtuelle
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
4. Docker
4.1. commandes
4.1.1. Obtenir les informations de docker sur le système (paths, status, etc)
docker info
4.1.2. Lister les images disponibles sur le serveur
docker images
4.1.3. Lister les conteneurs qui tournent
docker container ps
4.1.4. Télécharger une image de docker hub ou d’un repo distant
docker pull <nom_image>
4.1.5. Démarrer une image
docker run <nom_image>
4.1.6. Lancer une image en arrière plan (option -d ) avec la possibilité d’intérargir (option -ti)
docker run -d -ti <nom_image>
4.1.7. Se rendre dans le conteneur pour effectuer des actions
docker exec -ti <id_conteneur> /bin/bash
4.1.8. Arrêter le conteneur docker
docker stop <id_conteneur>
4.1.9. Docker fournit une commande unique qui nettoiera toutes les ressources – images, conteneurs, volumes et réseaux – qui sont en suspens (non associées à un conteneur)
docker system prune
4.1.10. Pour supprimer en plus tous les conteneurs arrêtés et toutes les images non utilisées (pas seulement les images en suspens), ajoutez l’indicateur -a à la commande
docker system prune -a
4.1.11. Visualiser toutes les routes docker sur le système
docker network ls
4.1.12. Nettoyer les routes
docker network prune
4.1.13. Visualiser les logs d’un container
docker logs -f <nom_container>
4.2. docker-compose
4.2.1. Toutes les commandes courantes / utilisées
4.2.1.1. Option pour nommer le container
container_name: <nom>
Ex :
4.2.1.2. démarrer / arrêter le docker-compose.yml en mode daemon
Se rendre dans le dossier ou le script est présent :
docker-compose up -d
4.2.1.3. Pour l’arrêter
docker-compose stop
5. Sysadmin
5.1. Apache 2
5.1.1. ABC sécurité apache2
sudo vim /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off
5.2. Logwatch
Logwatch est un utilitaire permettant de surveiller les journaux système et de créer des rapports. Ces rapports comprennent les tentatives de connexion infructueuses, les tentatives de connexion réussie, l’espace de stockage utilisé/disponible, les erreurs de kernel, etc.
5.2.1. Installer et configurer Logwatch – Debian 8
apt-get install logwatch
5.2.1.1. Le fichier de configuration se trouve ici
/etc/logwatch/conf/logwatch.conf
5.2.1.2. Modifications
MailTo = your_email
Range = yesterday
Detail = med
mailer = "/usr/sbin/sendmail -t"
Par défaut, logwatch créé une tâche cron qui envoie un mail journalier. Cf. /etc/cron.daily/00logwatch |
5.2.1.3. Commande manuelle
logwatch --mailto your_email ...
5.3. Monit - Surveillance du système
5.3.1. Installation
apt-get install monit
systemctl enable monit
systemctl start monit
systemctl status monit
5.3.2. Configuration
5.3.2.1. Activer l’interface Web
vim /etc/monit/monitrc
décommenter les lignes suivantes :
set httpd port <port>
ssl enable
pemfile /var/certs/monit.pem
allow admin:<password> # require user 'admin' with password '<password>'
Ne pas oublier d’ajouter la règle iptables |
5.3.3. Création du répertoire des certificats et création de celui de monit
mkdir /var/certs
openssl req -new -x509 -days 365 -nodes -out /var/certs/monit.pem -keyout /var/certs/monit.pem
chmod 700 /var/certs/monit.pem
5.3.4. Redémarrage
systemctl restart monit
5.3.5. Contrôle de la syntaxe du fichier de configuration
monit -t
5.3.6. Activation des services à monitorer
# rsyslog
ln -s /etc/monit/conf-available/rsyslog /etc/monit/conf-enabled/
# apache2
ln -s /etc/monit/conf-available/apache2 /etc/monit/conf-enabled/
# postfix
ln -s /etc/monit/conf-available/postfix /etc/monit/conf-enabled/
## modifier le chemin de master_bin
## kill le pid de sendmail qui écoute sur le :25
kill -9 <pid>
monit monitor postfix
# mysql
ln -s /etc/monit/conf-available/mysql /etc/monit/conf-enabled/
systemctl restart monit
5.4. Munin - Supervision Graphique
5.4.1. Installation des paquets et dépendances plugins
apt-get install munin munin-node munin-plugins-extra libapache2-mod-fcgid libwww-perl libcache-cache-perl
5.4.2. Activation du module fcgid d’apache2
a2enmod fcgid
5.4.3. Ajout de plugins supplémentaires
cd /etc/munin/plugins
# Mysql
ln -s /usr/share/munin/plugins/mysql_ mysql_
ln -s /usr/share/munin/plugins/mysql_bytes mysql_bytes
ln -s /usr/share/munin/plugins/mysql_innodb mysql_innodb
ln -s /usr/share/munin/plugins/mysql_isam_space_ mysql_isam_space_
ln -s /usr/share/munin/plugins/mysql_queries mysql_queries
ln -s /usr/share/munin/plugins/mysql_slowqueries mysql_slowqueries
ln -s /usr/share/munin/plugins/mysql_threads mysql_threads
# Apache
ln -s /usr/share/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume
5.4.4. Modification du fichier de configuration
vim /etc/munin/munin.conf
Décommenter :
dbdir /var/lib/munin
htmldir /var/cache/munin/www
logdir /var/log/munin
rundir /var/run/munin
changer [localhost.localhost] par [yishan.io] # a simple host tree
5.4.5. Création du Vhost
cd /etc/apache2/sites-available && vim munin.conf
# munin.conf
<VirtualHost *:80>
ServerName monitoring.yishan.io
DocumentRoot /var/cache/munin/www/
<Directory /var/cache/munin/www/>
Options None
Require all granted
DirectoryIndex index.html
</Directory>
ErrorLog ${APACHE_LOG_DIR}/munin_error.log
CustomLog ${APACHE_LOG_DIR}/munin_access.log combined
LogLevel warn
</VirtualHost>
5.4.6. Activation du site
a2ensite munin.conf
5.4.7. Redémarrage des services
systemctl restart apache2.service
service munin-node restart
5.4.8. Protéger l’accès à l’interface web de supervision
htpasswd -c /etc/munin/munin-htpasswd admin
5.4.9. Modification du vhost en conséquence
VirtualHost *:80>
ServerName monitoring.yishan.io
DocumentRoot /var/cache/munin/www/
<Directory /var/cache/munin/www/>
Options None
AuthUserFile /etc/munin/munin-htpasswd
AuthName "Munin"
AuthType BASIC
Require valid-user
DirectoryIndex index.html
</Directory>
ErrorLog ${APACHE_LOG_DIR}/munin_error.log
CustomLog ${APACHE_LOG_DIR}/munin_access.log combined
LogLevel warn
</VirtualHost>
5.4.10. Redémarrage à nouveau des services
systemctl restart apache2.service
service munin-node restart
5.4.11. Obtenir les suggestions de plugins et vérification de leurs statuts
munin-node-configure --suggest >> print
5.4.12. Réglages des plugins
vim /etc/munin/plugin-conf.d/munin-node
[mysql*]
env.mysqluser root
[http_loadtime]
env.target https://monsite, https://mon_autre_site, etc
env.requisites true
5.4.13. Redémarrage de munin
service munin-node restart
5.5. Serveur Web Complet
A été fait sur debian 9 |
5.5.1. Apache 2
apt install apache2 apache2-mod-php7.0
vim /etc/apache2/conf-available/security.conf
ServerTokens Full
ServerSignature Off
Header always set X-Content-Type-Options: "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
5.5.2. ModSecurity (couche 7)
apt install libapache2-mod-security
cd /etc/modsecurity/ && mv modsecurity.conf-recommended modsecurity.conf
vim /etc/modsecurity/modsecurity.conf
SecRuleEngine On
SecDataDir /var/cache/modsecurity
SecServerSignature Elliot.ftw
cd /usr/share/modsecurity-crs/rules
ln -s * /etc/modsecurity/crs
cd /etc/modsecurit
vim crs-setup.con
SecGeoLookupDb /usr/share/GeoIP/GeoIP.dat
Décommenter le block request-912-DOS-protection
Décommenter le block http Argument / Upload limits
Décommenter le block Forbidden file extension
a2enmod security
a2enmod header
systemctl restart apache2.service
5.5.3. php7
apt install php7.0 php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php7.0-cli php7.0-cgi php7.0-imagick php7.0-imap php7.0-mcrypt php7.0-memcache php7.0-pspell php7.0-recode php7.0-snmp php7.0-sqlite php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-imagick imagemagick libruby php7.0-memcached memcache
5.5.4. MariaDB
apt install mariadb-client mariadb-server
mysql_secure_installation
5.5.5. phpmyadmin
apt install phpmyadmin
5.5.5.1. Ajout du script dans /etc/init/ pour start / stop phpmyadmin
EDIT Mise à jour de php 7.0 vers php7.3 |
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list
apt update
apt upgrade
5.6. Netdata
5.6.1. Installation sur debian 9 via les dépôts backports
apt install -t stretch-backports netdata
5.6.2. Configuration apache avec htaccess
vim netdata.conf
<VirtualHost *:80>
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On
ServerAdmin contact@yishan.io
ServerName netdata.yishan.io
<Proxy *>
AllowOverride AuthConfig
AuthName "Netdata"
AuthType Basic
AuthUserFile /etc/apache2/.htpasswd-netdata
Require valid-user
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
ProxyPass "/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse "/" "http://localhost:19999/"
ErrorLog ${APACHE_LOG_DIR}/netdata-error.log
CustomLog ${APACHE_LOG_DIR}/netdata-access.log combined
RewriteCond %{SERVER_NAME} =netdata.yishan.io
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
5.6.3. Création des identifiants via htpasswd
htpasswd -c /etc/apache2/.htpasswd-netdata user
5.6.4. Ouverture du port via iptables
iptables -t filter -A INPUT -p tcp --dport 19999 -j ACCEPT
5.7. Accès Phpmyadmin
Activer / désactiver l’accès à phpmyadmin lorsque je ne l’utilise pas pour des raisons de sécurité
Script à placer dans /etc/init.d |
5.7.1. Creation du script
vim /etc/init.d/phpmyadmin
#!/bin/bash
if [ "$1" = "start" ];then
chmod 755 /usr/share/phpmyadmin
else if [ "$1" = "stop" ];then
chmod 000 /usr/share/phpmyadmin
else
echo "usage: phpmyadmin start | stop"
fi
fi
exit 0
5.7.2. Donner les droits d’execution
chmod + x /etc/init.d/phpmyadmin
5.7.3. Stopper / Démarrer
/etc/init.d/phpmyadmin stop
# ou
/etc/init.d/phphmyadmin start
6. Git
6.1. Commandes basiques
6.1.1. récupérer un repo distant en local
git clone "https://******.git"
6.1.2. Identification
git config --global user.email yishan@protonmail.com
6.1.3. Modification du fichier / des fichiers
git add "mon_fichier"
git commit -m "commentaire"
6.1.4. envoi sur Github / Gitlab
git push
6.1.5. suppression d’un fichier
git rm "mon_fichier"
git commit -m "commentaire"
6.1.6. Récupérer les dernières modifications distantes / mettre à jour son repo
git pull
7. shell
7.1. Installation ZSH & Configuration Terminal TILIX - Ubuntu 22.04
7.1.1. Téléchargement et installation de oh-my-zsh
sudo apt install zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
7.1.2. Téléchargement et installation de Powerlevel10K
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
7.1.3. Téléchargement et installation des polices Hack Nerd Font
git clone https://github.com/ryanoasis/nerd-fonts # on peut juste télécharger la police souhaitée
cd nerd-fonts
sudo ./install.sh Meslo
7.1.4. Configuration de Tilix
-
Changer la police par MesloLGS Nerd Font Mono Regular
-
Changer le cursor par IBeam
-
Pour les couleurs : Activer l’option use themecolors for foreground/background
7.1.5. Modifier dans le fichier .zshrc la ligne suivante
ZSH_THEME="powerlevel10k/powerlevel10k"
7.1.6. Lancer la configuration
p10k configure
# ou
source .zshrc
choices: y-y-y-y-3-1-2-2-2-1-2-2-4-3-2-2-2-y-1-y |
7.1.7. Antigen (gestion des plugins)
7.1.7.1. Installation d’Antigen
curl -L git.io/antigen > antigen.zsh
7.1.7.2. Ajouter les lignes suivantes au fichier .zshrc
#Load Antigen
source "/home/yishan/antigen.zsh"
#Load Antigen configurations
antigen init ~/.antigenrc
7.1.7.3. Création du fichier de config ~/.antigenrc
7.1.7.4. lui indiquer que les plugins seront déclarés via OMZ - .zshrc
antigen use oh-my-zsh
7.1.8. Ajouter les plugins suivants dans le fichier .zshrc
#=== Plugins ===
antigen bundle git
antigen bundle pip
antigen bundle command-not-found
antigen bundle zsh-users/zsh-completions
antigen bundle zsh-users/zsh-autosuggestions
antigen bundle zsh-users/zsh-syntax-highlighting
antigen bundle zsh-users/zsh-history-substring-search
antigen bundle lukechilds/zsh-nvm
et à la fin du fichier :
# === Antigen Apply ===
antigen apply
7.1.9. Alias - Ajouter dans le fichier .zshrc
# === Aliases ===
#= Apt-get
alias maj='sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade'
alias up='sudo apt-get update'
alias install='sudo apt-get install'
alias autoremove='sudo apt-get autoremove'
alias autoclean='sudo apt-get autoclean'
alias cache='sudo apt-cache search'
alias vi='nvim'
alias exa='exa -abghHliS'
# === SSH === = Deprecated / the conf is now on file config folder ssh
# === BANNER / MOTD ===
alias neo='neofetch --config off --bold off --colors 4 1 8 8 8 7'
# = Fuck
eval $(thefuck --alias fuck)
7.2. Tmux
7.2.1. Installation
apt-get install tmux
https://github.com/tmux-plugins/tpm
7.2.2. Relancer la configuration de tmux
tmux source-file ~/.tmux.conf
7.2.3. Divise la fenêtre
tmux split-windows
ou
tmux split-windows -h
7.2.4. Renommer la fenêtre actuelle
Tmux rename-window
Prefix + ,
7.2.5. Lister les sessions en cours
tmux list-session
tmux ls
7.2.6. Fermer une session
tmux kill-session -t <N° de la session>
7.2.7. Copier / Coller
Touche MAJ + Clic Gauche / Clic Molette
7.2.8. Afficher l’heure dans une fenêtre
Prefix + t
7.2.9. Supprimer la fenêtre courante
Prefix + &
7.2.10. Scinder verticalement
Prefix + %
7.2.11. Scinder Horizontalement
Prefix + \"
7.3. Neovim
7.3.1. Installation
sudo apt install neovim
mkdir .config
touch .config/init.vim
7.3.2. Configuration de base init.vim
:set number
:set relativenumber
:set autoindent
:set tabstop=4
:set shiftwidth=4
:set smarttab
:set softtabstop=4
:set mouse=a
:set encoding=utf-8
:set fileencoding=utf-8
7.3.3. Ajout des plugins via Plug
7.3.3.1. Téléchargement de Plug
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
7.3.3.2. Ajout des plugins dans init.vim
call plug=begin()
Plug 'https://github.com/vim-airline/vim-airline'
Plug 'https://github.com/preservim/nerdtree'
Plug 'http://github.com/tpope/vim-surround'
Plug 'https://github.com/rafi/awesome-vim-colorschemes'
Plug 'https://github.com/neoclide/coc.nvim'
Plug 'https://github.com/ryanoasis/vim-devicons'
Plug 'https://github.com/tc50cal/vim-terminal'
Plug 'https://github.com/preservim/tagbar'
Plug 'https://github.com/terryma/vim-multiple-cursors'
call plug=end()
7.3.4. Installer les plugins
:PlugInstall
7.3.5. Dépendances, Configuration
# tagbar
sudo apt install exuberant-ctags
# Tagbar
nmap <F8> :TagbarToggle<CR>
:set completeopt=preview
# colorscheme
:colorscheme jellybeans
# NerdTree
let g:NERDTreeDirArrowExpandable="+"
let g:NERDTreeDirArrowCollapsible="~"
nnoremap <C-f> :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>
# coc-nvim
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install nodejs npm
cd /home/cmassieu/.local/share/nvim/plugged/coc.nvim
sudo npm install -g yarn
yarn install
yarn build
7.3.5.1. Installation des modules coc selon les langages utilisées
Ex :
:CocInstall coc-python
8. Osint
8.1. exiftool
8.1.1. Installation ubuntu 22.04
-
Ouvrez un terminal en appuyant sur Ctrl + Alt + T.
-
Installez les dépendances nécessaires en tapant la commande suivante et en appuyant sur Entrée:
sudo apt install libimage-exiftool-perl
-
Téléchargez la dernière version d’Exif Tool en tapant la commande suivante et en appuyant sur Entrée:
wget https://exiftool.org/Image-ExifTool-12.52.tar.gz
-
Décompressez l’archive téléchargée en tapant la commande suivante et en appuyant sur Entrée:
tar -xzvf Image-ExifTool-12.52.tar.gz
-
Accédez au répertoire en tapant la commande suivante et en appuyant sur Entrée:
cd Image-ExifTool-12.52
-
Installez Exif Tool en tapant la commande suivante et en appuyant sur Entrée:
sudo perl Makefile.PL
make
sudo make install
Exif Tool est maintenant installé sur votre système Ubuntu 22.04. Vous pouvez le lancer en tapant simplement la commande exiftool suivie du nom du fichier image que vous souhaitez afficher les métadonnées. Par exemple, si vous voulez afficher les métadonnées de l’image "image.jpg", tapez la commande suivante et appuyez sur Entrée:
exiftool image.jpg
Pour supprimer toutes les métadonnées d’une image :
exiftool -all= image.jpg
9. java
9.1. Memory
9.1.1. OutOfMemoryError
il y a 2 type d’erreurs OutOfMemoryError
1.Heap space
cela signifie qu’il faut augmenter la quantité d’espace de la heap (tas) allouée à l’app lors du démarrage du démon.
2.PermGen space
Cela signifie que vous devez augmenter la quantité d’espace de génération allouée pour stocker les métadonnées d’objet Java. Augmenter la valeur du paramètre -Xmx n’aura aucun effet sur cette erreur.
9.1.2. Augmenter la quantité de mémoire allouée à l’app en modifiant les paramètres de la machine virtuelle Java (JVM).
java -Xmx<max-memory> -Xms<initial-memory> -jar app.war
<max-memory> est la quantité maximale de mémoire
<initial-memory> est la quantité de mémoire initiale allouée
Ex : java -Xmx2g -Xms512m -jar jenkins.war |
9.1.3. Connaître les valeurs par défaut
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
10. Linux
10.1. Gestion des utilisateurs
10.1.1. Créer un nouvel utilisateur
adduser nom_utilisateur
10.1.1.1. Ajouter l’user au groupe sudo
usermod -aG sudo nom_utilisateur
10.1.2. Lister les groupes d’un utilisateur
groups <user>
10.1.3. supprimer un groupe d’un utilisateur
gpasswd -d <user> <group>
10.1.4. supprimer un user avec son home
userdel -r <user>
10.2. Locales
10.2.1. Debian 11 - Mettre en place locales fr_FR.UTF8
10.2.1.1. Installation
sudo apt install locales
10.2.1.2. Configuration
sudo dpkg-reconfigure locales
Decommenter l’us et activer fr_FR.UTF8 via la touche space
|
10.2.1.3. redémarrer le système
sudo reboot
10.3. Iptables
10.3.1. Lister les règles et IPs bannies
iptables -L
10.3.2. Lister un jail fail2ban en particulier
# Ex: postfix
iptables -L f2b-postfix
10.3.3. bloquer une adresse IP avec Iptables
10.3.3.1. IP seule
iptables -I INPUT -s IP_ADRESS -j DROP
10.3.3.2. Pour une plage d’adresses
iptables -I INPUT -s SUBNET/MASK -j DROP
10.3.4. Pour bannir une adresse d’un service en particulier (Apache par exemple)
iptables -I INPUT -s IP_ADRESS -p tcp --dport 80,443 -j DROP
10.3.5. Réinitialiser Iptables
# Reinitialiser
iptables -F
iptables -t nat -F
# Tout accepter
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
/etc/init.d/firewall
chmod a+x /etc/init.d/firewall
sudo update-rc.d firewall defaults
10.4. UFW
10.4.1. Installation et configuration des règles de base
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
10.4.2. Post changement du port ssh par defaut
sudo ufw delete allow ssh
sudo ufw allow 22000/tcp
sudo ufw enable
10.5. Fail2ban
10.5.1. Installation sur debian 9
Version : 0.9.6 |
apt install fail2ban
systemctl enable fail2ban
systemctl start fail2ban
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
10.5.2. Changements effectués
vim /etc/jail.local
bantime = 3600
findtime = 600
maxretry = 3
destemail = security@yishan.io
sender = fail2ban
action = %(action_mwl)s
# Ajout du numéro du port ssh qqui a été modifié
port = ssh,numero_du_port_ssh
# Jails mis en enabled = true
sshd, sshd-ddos, apache-auth, apache-badbots, apache-botsearch, apache-fakegooglebot, apache-modsecurity, apache-nohome, apache-noscript, apache-overflows, apache-shellshock, courier-auth, courier-smtp, dovecot, mysqld-auth, postfix, postfix-rbl, postfix-sasl, recidive, sendmail-auth, sendmail-reject
# Jails Perso
[wordpress]
port = http,https
logpath = /var/log/apache2/wp_access.log
enabled = true
10.5.3. Ajout des filtres dans /etc/fail2ban/filter.d/
vim /etc/fail2ban/filter.d/wordpress.conf
# Fail2Ban filter for WordPress
[Definition]
failregex = <HOST> - - \[(\d{2})/\w{3}/\d{4}:\1:\1:\1 -\d{4}\] "POST /wp-login.php HTTP/1.1" 200
ignoreregex =
10.5.4. Vérification du statut des jails
fail2ban-client status
fail2ban-client status <jail>
10.6. Cron APT
10.6.1. Mise à jour automatique du système, des paquets
10.6.1.1. Installation
apt install cron-apt
10.6.1.2. logs
/var/log/cron-apt/log
10.6.1.3. Conf
echo "upgrade -y -o APT::Get::Show-Upgraded=true" > /etc/cron-apt/action.d/4-YesUpgrade
10.6.1.4. Planification
/etc/cron.d/cron-apt
# Every night at 4 o'clock.
0 4 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt
10.7. Gestion des disques
10.7.1. Lister l’espace disque sur les différentes partitions – utilisé et restant
df -h
10.7.2. Dans le répertoire courant, lister en ordre décroissant la taille des fichiers et sous répertoires
du -ah --max-depth=1 | sort -nr
10.7.3. Dans le répertoire courant, lister les 20 premiers plus gros fichiers
du -xmhs ./* | sort -hr | head 20
10.7.4. Afficher la taille d’un répertoire, ex : home
du home/ -hs
10.7.5. Commande courante
du -sch *
10.8. Wgetpaste
Wgetpaste, permet via un pipe, d’envoyer le résultat d’une commande vers un pastebin et de récupérer l’URL de destination.
10.8.1. Installation Archlinux
Yaourt -S wgetpaste
10.8.2. Fichier de configuration
~/.wgetpaste.conf
# Default nick for pastes
DEFAULT_NICK=yishan
# Default service to paste to
DEFAULT_SERVICE=dpaste
# change default language for the ca and the osl services
DEFAULT_LANGUAGE_ca="bash"
DEFAULT_LANGUAGE_osl="Diff"
# change default expiration period for the ca service
DEFAULT_EXPIRATION_ca="1 day"
10.8.3. Utilisation
wgetpaste --help
|
cat .wgetpaste.conf | wgetpaste
10.9. Firewalld
10.9.1. Ouvrir un port ou une range
firewall-cmd --add-port=19999/tcp
firewall-cmd --add-port=60000-61000/udp --permanent
10.9.2. Redémarrer le service pour prise en compte de la conf
systemctl restart firewalld.service
10.10. Chroot
10.10.1. Chroot – Marche à suivre
Dans un premier temps, booter sur un liveCD de la distribution adéquate.
Dans cet exemple, /dev/sda1 est la partition racine de mon système
mount /dev/sda1 /mnt
mount --bind /dev /mnt/dev
mount -t proc /proc /mnt/proc
mount -t sysfs /sys /mnt/sys
chroot /mnt /bin/bash
10.10.2. Pour quitter
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt
10.10.3. exemples de tâches qui peut-être fait sous système chrooté
-
Installation / réinstallation de Grub
-
Passwd Root perdu
-
Réparation du système
-
Mise à jour
-
Débug
10.10.4. Chroot sur POP OS
lsblk
sudo mount /dev/sda3 /mnt
sudo mount /dev/sda1 /mnt/boot/efi/
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo cp -n /etc/resolv.conf /mnt/etc/
sudo chroot /mnt
10.11. SSH
10.11.1. Se connecter par clés asymétriques
10.11.1.1. Création de la paire de clés (privée / publique)
sh-keygen -b 4096 # Saisir une passphrase
Les clés sont stockées dans le répertoire .ssh de l’utilisateur. |
10.11.1.2. Importer la clé publique sur le serveur sur lequel on souhaite se connecter
ssh-copy-id utilisateur@serveur # Saisir une dernière fois le passwd
10.12. Systemd
10.12.1. Presentation
Systemd est un remplaçant du démon init system V pour Linux. Il a pour but d’offrir une meilleure gestion des dépendances entre services, ainsi que de permettre le chargement en parallèle des services au démarrage.
Cela permet réduire le temps de démarrage du système et de lancer moins de processus.
Les distributions Fedora, Mageia, Open SUSE et Debian ont adopté ce système par défaut dans leurs distributions respectives.
Ubuntu utilise upstart et Gentoo utilise OpenRC.
systemd est le premier processus qui démarre sur votre système (PID 1) et il est responsable de l’initialisation, de la gestion et de l’arrêt des autres services et processus sur votre système. |
10.12.2. Fichiers de configuration
La configuration des services se trouve par défaut dans le répertoire /lib/systemd/system ou /usr/lib/systemd/system.
On utilisera le répertoire /etc/systemd/system pour stocker ses modifications et configurations personnelles, ce qui a le gros avantage que ces fichiers ne seront pas effacés en cas de mise à jour du système.
10.12.3. Commandes Utiles Systemctl
10.12.3.1. Activer / Désactiver un service au démarrage du système
systemctl enable <mon_service>
systemctl disable <mon_service>
10.12.3.2. Démarrer / arreter / redémarrer un service
systemctl start <mon_service>
systemctl stop <mon_service>
systemctl restart <mon_service>
10.12.3.3. Voir le statut d’un service
systemctl status <mon_service>
10.12.3.4. Lister tous les services actifs
systemctl list-units --type=service
10.12.3.5. Lister toutes les unités présentes sur le système
systemctl list-units
10.12.3.6. voir tous les services qui ont un problème
systemctl --failed --type=service
10.12.3.7. Identifiez les services inactifs
systemctl list-units --type=service --state=inactive
10.12.3.8. Désactivez les services inutiles
sudo systemctl disable <service_name>
10.12.3.9. Créer un service simple
vim /etc/systemd/system/mon-service.service
Description= Description du service
ConditionPathExists=/usr/sbin/commande
[Service]
Type=forkingExecStart=/bin/sh -c 'commande'
TimeoutSec=0StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
10.12.3.10. On rends le fichier executable
chmod a+x /etc/systemd/system/mon-service.service
10.12.3.11. On recharge Systemd
systemctl --system daemon-reload
10.12.3.12. On le lance et on vérifie
systemctl start mon-service.service
systemctl status mon-service.service
10.12.4. Les services propres à systemd
Systemd utilise en interne un certain nombre de services pour la gestion du système, citons en quelques uns :
-
systemd-journald : messages du système et des programmes
-
systemd-logind : connexion des utilisateurs
-
systemd-vconsole-setup : configuration des consoles virtuelles
-
systemd-remount-api-vfs : remontage du système de fichier, en tenant compte des options de fstab
-
systemd-sysctl : application des paramètres système de /etc/sysctl.conf
-
systemd-stdout-syslog-bridge : utilisation de syslog pour les processus de systemd
-
systemd-tmpfiles-setup : création de fichiers et répertoires temporaires
10.12.4.1. Lister le temps de démarrage des differents services
systemd-analyze blame
10.13. Journalctl
La commande journalctl est utilisée pour interroger et afficher les journaux du système gérés par le gestionnaire de système systemd. |
10.13.1. afficher les dernières logs
journalctl -xn 50 -e
10.13.2. afficher les dernières logs d’un service en particulier (ex : fail2ban)
journalctl -xn 50 -u fail2ban.service
10.13.3. afficher toutes les erreurs des services systemd après redémarrage du système
journalctl -b -p err -u systemd
10.13.4. afficher toutes les erreurs de tous les services
journalctl -b -p err -n 50
11. Vagrant
11.1. Vagrant
11.1.1. Installation sur Ubuntu 22.10
sudo apt install virtualbox vagrant
11.1.2. Fichier de configuration pour une Debian 11 KDE
# Définition de la box (image du système d'exploitation) à utiliser
Vagrant.configure("2") do |config|
config.vm.box = "debian/bullseye64"
# Configuration de la machine virtuelle
config.vm.provider "virtualbox" do |vb|
# Configuration de la mémoire et du processeur
vb.memory = 4096
vb.cpus = 2
# Configuration de la carte réseau
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
# Ajout de mémoire vidéo
vb.customize ["modifyvm", :id, "--vram", "256"]
# Ajout de la prise en charge du son
vb.customize ["modifyvm", :id, "--audio", "pulse"]
# Ajout d'un contrôleur IDE
#vb.customize ["storagectl", :id, "--name", "IDE Controller", "--add", "ide"]
# Ajout d'un lecteur CD/DVD
#vb.customize ["storageattach", :id, "--storagectl", "IDE Controller", "--port", 1, "--device", 0, "--type", "dvddrive", "--medium", "emptydrive"]
end
# Configuration du système d'exploitation
config.vm.provision "bash", inline: <<-SHELL
# Mise à jour de la liste des paquets
apt-get update
# Installation de KDE et des outils de développement
apt-get install -y kde-plasma-desktop build-essential
# Configuration du bureau KDE comme environnement par défaut
update-alternatives --set x-session-manager /usr/bin/startplasma-x11
# Installation de Flatpak
apt-get install -y flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Installation de Lutris
flatpak install -y flathub net.lutris.Lutris
Nommer le script : vagrantfile
Mes autres scripts sont ici |
11.1.3. Commandes principales
Pour le démarrer :
vagrant up
Acceder à la machine :
vagrant ssh
Arrêter :
vagrant halt
Détruire :
vagrant destroy
Réexécuter le script de provisionning apres modif :
vagrant provision
Afficher l’état :
vagrant status
12. Vmware
12.1. Conversion Image VMDK
12.1.1. Se connecter sur un des esxi en ssh
12.1.2. commandes
cd /vmfs/volumes/volume01/yourmachine
vmkfstools -i Windows2008-tmp.vmdk -d thin Windows2008.vmdk
13. Divers
13.1. Clavier Qwerty - Azerty
Ex:

13.2. Hexchat
Cacher la version du client utilisé |
Sur le client :
/set irc_hide_version on
13.3. ZNC - Bouncer IRC
13.3.1. ZNC on debian Stretch
Version 1.6.5 ipv6: yes, SLL: yes, DNS: Threads, charset: yes |
13.3.1.1. Installation
apt install znc
13.3.1.2. Creation de l’environnement user
adduser user
13.3.1.3. entrer dans l’env user
su - user
13.3.1.4. Creation du fichier de conf’
znc --makeconf
13.3.2. ouvrir le port via iptables
13.3.3. Accès à l’interface web
13.4. Rutorrent / Rtorrent
13.4.1. Daemon rtorrent
#!/usr/bin/env bash
# Dépendances : screen, killall et rtorrent
### BEGIN INIT INFO
# Provides: box-rtorrent
# Required-Start: $syslog $network
# Required-Stop: $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Start-Stop rtorrent user session
### END INIT INFO
## Début configuration ##
user="box"
## Fin configuration ##
rt_start() {
su --command="screen -dmS ${user}-rtorrent rtorrent" "${user}"
}
rt_stop() {
killall --user "${user}" screen
}
case "$1" in
start) echo "Starting rtorrent..."; rt_start
;;
stop) echo "Stopping rtorrent..."; rt_stop
;;
restart) echo "Restart rtorrent..."; rt_stop; sleep 1; rt_start
;;
*) echo "Usage: $0 {start|stop|restart}"; exit 1
;;
esac
exit 0