298 private links
Note (Français/French) : cet article est une aide mémoire sur l’utilisation de nftables nft
, toutefois par habitude je l’ai rédigé en anglais, je m’en suis rendu compte un peu tard, juste avant publication pour quelque chose qui allait être en privé.
Note: this article is just a reminder how to use some nftables instructions.
Use option --handle/-a for displaying handles, which are required for deleting or for insertion for examples.
Create chain, named banned
for example, but don’t use hook and priority:
nft create chain inet filter banned
Before it can be inserted, look for the handle to insert before, for example in the main chain INPUT
from the table filter
from the inet
(IPv4 + IPv6) family:
nft --handle list chain inet filter INPUT
Note: it is possible to look through the whole table with this command nft --handle list table inet filter
, but then all its chains are also displayed.
Add a jump
statement to this newly created chain with the handle previously acquired from above command (replace "${HANDLE}"):
Notes:
- this command adds a comment, it is only to display with
list
actions; - the double quotes are required for multiple worded comment, so when invoking
nft
, use single quotes or escape characters.
nft insert rule inet filter INPUT handle "${HANDLE}" jump banned comment '"lookup on the banned list"'
Now there is a jump statement to this newly chain, however the later is empty after creation.
Here how to add an IP address, either IPv4 or IPv6, or even a range, in this list, with a drop
action:
Note: so see a number of packets, the counter
statement is added
nft add rule inet filter banned ip saddr "${IP_ADDR_OR_RANGE}" counter drop
Same than previously, here how to display banned IP addresses, with their dedicated counters:
nft --handle list chain inet filter banned
It is also possible to allow an IP address, just replace the drop
action by accept
; however, because computation is done once a rule is matching, it is almost always better to insert a rule, nft insert rule […]
instead of nft add rule […]
, so it appears at the top of the target chain:
nft insert rule inet filter banned ip saddr "${IP_TO_ALLOW}" counter accept
“Libreboot is a free BIOS or UEFI replacement (free as in freedom); libre boot firmware that initializes the hardware and starts a bootloader for your operating system.”
En relation avec CoreBoot (https://links.thican.net/?M3qGtQ) : “Libreboot's main upstream providers are coreboot (which we deblob, for hardware initialization), depthcharge (bootloader, and default libreboot payload on ARM), and GNU GRUB (bootloader, and default libreboot payload on x86).”
(Mis à jour : 2016-07-28)
Je garde le lien ici, pour retrouver plus facilement.
Descriptions et exemples autour de l'outil "GNU ddrescue", concernant la copie d'un support à un autre (disque dur, partition, ou fichier) avec l'utilisation d'un "log" pour permettre une récupération efficace sur un support défectueux.
Voilà ce que j'utilise, pour récupérer une partition unique d'un disque dur de données montrant des signes de faiblesses (remplacez le X et Y par les lettres correspondant à votre périphérique) :
ddrescue --input-position=0 --direct --preallocate --retry-passes=3 --verbose /dev/sdXY /path/to/backup/broken_hdd.dd /path/to/backup/broken_hdd.logfile
Pour le cas où il y a plusieurs partitions (MBR ou GPT), utilisez la même commande en n'écrivant que "/dev/sdX"
Une fois votre fichier "broken_hdd.dd" complet, vous pouvez utiliser la commande "losetup" pour monter votre image sur un fichier périphérique dans "/dev/loopX" :
losetup --partscan --find /path/to/backup/broken_hdd.dd
L'option --partscan
permet d'afficher les partitions contenues dans votre image, sous la forme "loopXp1", "loopXp2", etc ; quand à --find
, il permet d’utiliser le premier périphérique "loop" inutilisé (voir losetup(8)).
Ou plus simple, vous pouvez directement utiliser la commande "mount" pour monter votre image dans un dossier, grâce à l’option "-o loop" (voir section "THE LOOP DEVICE" de mount(8)).
Je garde ici le lien, pour me souvenir que le logiciel ddrescue de GNU est considéré comme meilleurs.
Quelque chose que j'oublie souvent, alors autant l'avoir ici sous le coude.
Avec une liste d'adresses IPv4, donc sous la forme W.X.Y.Z, chacun pouvant aller de 0 à 255 inclus, sort peut en utilisant ses options mettre dans l'ordre une telle liste :
sort --numeric-sort --field-separator=. --key=1,1 --key=2,2 --key=3,3 --key=4,4
(source : un peu partout sur le net)
Un article, assez ancien mais toujours d'actualité, concernant les encodages des caractères (Unicode et autres).
Une suite d'articles et de tutoriels pour apprendre à utiliser le CVS Mercurial (avec des astuces si vous utilisiez déjà Subversion).
Un wiki bien documenté sur le fonctionnement de la syntaxe Bash.
Un article au sujet de SystemD, qui sera le futur remplaçant du système init dans de nombreuses distributions, comme Debian (http://www.markshuttleworth.com/archives/1316).
Là, un des premiers bugs de systemd, dans Red Hat (la béta 20) https://bugzilla.redhat.com/show_bug.cgi?id=1043212
Savez-vous que les scripts Bash ne s'exécutent pas s'ils sont le bit SUID d'actif ?
Comme l'explique cet article, Bash de sa propre initiative perd les droits root, et ceci pour éviter de créer des failles.
Cela peut paraître évident pourquoi, mais il est étonnant de voir les angles d'attaques possibles pour acquérir les droits root à partir d'un simple script Bash avec le SUID.
La sécurité est un domaine très vaste.
Des épreuves de regexp.
Pour vous aider, ce site web : http://www.regular-expressions.info/
Amusez-vous bien. :-)
Quelques astuces pour certains exercices :
http://quaxio.com/triple/
Pour ceux qui sont intéressés par la version Hardened de la distribution Gentoo, voici des infos sur les options liées au kernel.
(J'avoue que c'est hors de mon niveau, mais soit, ça peut être intéressant)
Un article en anglais pour créer son fichier .vimrc, fichier de configuration du logiciel de traitement de texte Vim en ligne de commande.
(Merci Camusensei pour le lien)
Une copie en PNG https://thican.net/~thican/vim-revisited.png
En résumé :
arp ip n (ip neighbor)
ifconfig ip a (ip addr), ip link, ip -s (ip -stats)
iptunnel ip tunnel
iwconfig iw
nameif ip link, ifrename
netstat ss, ip route (for netstat-r), ip -s link (for netstat -i), ip maddr (for netstat-g)
route ip r (ip route)
Voici donc ma clef publique.
Key fingerprint = 485E F628 CB85 CDD4 CB7C FF0D 52F5 1276 5073 3A18
Pour apprendre les regexp (… merci Camusensei …).
Pour ceux qui veulent vérifier avec leur réponse, voilà une solution proposée par Camusensei :
http://thican.net/~camusensei/sol1.png
Une deuxième solution encore une fois par Camusensei, mais en jouant sur l'interprétation de l'expression régulière suivante "(...?)\1*" (moi, je ne suis pas du tout d'accord) :
http://thican.net/~camusensei/sol2.png