L'utilitaire netstat permet d'afficher les connexions ouvertes sur la machine.
Protocoles :
-t : afficher les connexions tcp ;-u : afficher les connexions udp ;-x : afficher les connexions Unix ;-w : afficher les connexions raw.États :
-l : afficher les connexions en écoute ;-a : afficher toutes les connexions.
L'option -p permet d'afficher le PID et le nom du programme associé à chaque connexion. Vous devez lancer netstat en root pour cette option.
Pour afficher tous les programmes ayant un port tcp en écoute sur la machine :
netstat -ltp
Cette commande utilise en réalité l'utilitaire rsync qui permet la synchronisation de répertoire distant, utilitaire très puissant mais néanmoins dangeureux (avec l'option –delete).
rsync --size-only --partial --progress --stats --inplace UTILISATEUR@MACHINE:SOURCE DESTINATION
N'hésitez pas à en faire un alias pour plus de simplicité :
alias rescp='rsync --size-only --partial --progress --stats --inplace'
Pour SSH avec un port différent du port stantard, cette commande est très utile :
rescp -r --rsh='ssh -p118' 'user@server:/path/' ./
Il est interessant de savoir le nombre de tentatives de brute force sur votre ssh. Une bonne exploitation des log n'est pas toujours aisée. Cependant, une petite ligne va vous permettre de vous faire une idée :
cat /var/log/auth.log* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort | uniq -c
Voici un exemple de sortie :
9 Feb 25 4 Feb 26 8 Feb 27 16 Feb 28 10 Feb 29 9 Mar 1 9 Mar 2 7 Mar 3 25 Mar 5 15 Mar 6 8 Mar 7
Ce nombre est plutôt faible, grâce à une règle iptable spécifique.
Là aussi, un petit alias peut vous simplifier la vie :) (par exemple, nommé "sshcount").
alias sshcount="cat /var/log/auth.log* | grep 'Failed password' | grep sshd | awk '{print \$1,\$2}' | sort | uniq -c"
Une petite règle simple sur iptable va vous éviter de nombreuses tentatives d'intrusions, et considérablement ralentir le brute force :
iptables -I INPUT -p tcp --dport 22 -i eth1 -m state --state NEW -m recent --set iptables -I INPUT -p tcp --dport 22 -i eth1 -m state --state NEW -m recent --update --seconds 300 --hitcount 8 -j DROP
Bien entendu, eth1 est votre interface exposée. Cette règle va tout simplement bannir l'ip qui tente de se connecter plus de 8 fois, pendant 5 minutes. De quoi bien ralentir une attaque par dictionnaire ;)
fuser -v FICHIER …
Pour tuer automatiquement ces processus :
fuser -kv FICHIER …
fuser peut également afficher (ou tuer) les processus utilisant un système de fichiers avec l'option -m :
fuser -vm POINT_DE_MONTAGE …
exiv2 est un programme qui permet de manipuler (affichage, export, import, modification, …) les données EXIF d'images au formats PNG, JPEG, TIFF et certains format RAW.
Il peut très rapidement renommer une grande quantité de fichiers en fonction de la date de prise de vue. Nous allons ici, par exemple, renommer tous les fichiers JPEG du repertoire courant et ajuster leur date de dernière modification afin qu'elle corresponde à la date de prise de vue :
exiv2 -t *.{jpeg,jpg}
renrot peut également renommer en masse des photographies selon la date de prise de vue, mais il est bien moins rapide que exiv2. Il possède malgré tout une fonctionnalité très agréable : il peut retourner une image pour qu'elle corresponde à l'orientation spécifiée dans l'en-tête EXIF.
Je m'explique : avec certains appareils photographiques, une information est enregistrée dans l'image indiquant si celle-ci est en portrait ou en paysage, malheureusement certains lecteurs d'images ne comprennent pas cette information et sont incapables d'afficher d'eux-même l'image dans le bon sens ; renrot va faire ce travail.
# Rotation seule. renrot --no-rename *.{jpeg,jpg} # Renommage, ajustement de la date de modification du fichier et rotation. renrot -n '%Y%m%d_%H%M%S' -mtime *.{jpeg,jpg}
L'utilitaire mii-tool est là. Pour infos : man mii-tool.
L'utilitaire pcregrep est similaire à grep mais utilise les expressions rationnelles Perl (PCRE). Celles-ci sont beaucoup plus complètes et vous permettent par exemple de rechercher la chaîne « <? » tout en évitant « <?php » :
# Rechercher tous fichiers .php utilisant « <? » au lieu de « <?php » find -type f -name '*.php' -exec pcregrep -r '<\?(?!php)' '{}' '+'
Ah Perl, magicien des fichiers textes, tu les manipules comme tu veux et avec tant d'aisance !!!
Par exemple, si tu veux remplacer la version de Debian dans tous les fichiers de dépôts apt dans '/etc/apt/sources.list.d', une seule ligne te suffit :
perl -pi -e 's/etch/lenny/g' "/etc/apt/sources.list.d/*.list"
Ou encore, transformer toutes les fins de lignes Windows en Unix :
perl -pi -e 's/\r//g' FICHIER…
N'est-ce pas magique ?
perl lit les fichiers ligne par ligne, si vous souhaitez faire des remplacements de '\n' (caractère de saut de ligne) il faut changer (ou supprimer) la variable de découpe de chaîne de perl :
perl -i -e 'undef $/;while(<>) { s/\s*\n\s*(?={\n)/ /g ;print($_)}' FICHIER...