Know your wallet like you built it.
Not everyone is a developer. Not everyone has to be.
WalletScrutiny helps everyday bitcoin users verify whether or not their wallet is truly open-source and secure. Enter your wallet's name to get started.
Know your wallet like you built it.
Not everyone is a developer. Not everyone has to be.
WalletScrutiny helps everyday bitcoin users verify whether or not their wallet is truly open-source and secure. Enter your wallet's name to get started.
Quelques notes sur mon analyse et mes optimisations concernant les problèmes de swapping intensif et des solutions possibles pour tenter de libérer du swap et/ou de la RAM.
Exécuter top
et taper M
pour classer les processus en fonction de leur consommation de mémoire.
free -h
Lister les paramètres système liés à la gestion de la mémoire virtuelle
ls /proc/sys/vm
Diminuer la valeur de ces deux paramètres peut diminuer le swapping
Exemples
sysctl vm.swappiness=5
sysctl vm.vfs_cache_pressure=50
Le paramètre vm.vfs_cache_pressure
contrôle la vitesse à laquelle le système libère la mémoire cache d'inodes.
Une solution efficace, mais dangereuse, est de démonter/remonter le swap pour le vider. Je dis dangereuse car si la quantité d'espace de swap utilisée est supérieure à la quantité d'espace de RAM libre, cela peut partir en kernel panic sur out of memory.
De manière générale si la quantité de swap utilisée est élevée il vaut mieux s'abstenir de le couper.
En supposant que ce n'est pas le cas
swapoff -a
swapon -a
Clear PageCache
sync; echo 1 > /proc/sys/vm/drop_caches
Clear dentries and inodes
sync; echo 2 > /proc/sys/vm/drop_caches
Clear pagecache, dentries and inodes
sync; echo 3 > /proc/sys/vm/drop_caches
Mis à jour le 15/10/2023
Je suis tombé sur un cas où je ne pouvais écrire dans un fichier malgré que :
J'ai donc d'abord vérifié les ACLs sur le fichier
# getfacl /etc/monfichier.conf
getfacl: Removing leading '/' from absolute path names
# file: etc/monfichier.conf
# owner: root
# group: root
user::rw-
group::r--
other::r--
Tout semblait bon, j'étais un peu pris au dépourvu.
En fait il y avait un attribut positionné sur le fichier pour le protéger de toute suppression/modification. Attribut positionné à l'aide de chattr
.
lsattr /etc/monfichier.conf
----i----------- /etc/monfichier.conf
L'attribut i
permet de protéger le fichier, même du compte root. Il faut donc le retirer pour pouvoir modifier le fichier.
chattr -i /etc/monfichier.conf
Pour remettre l'attribut et protéger le fichier
chattr +i /etc/monfichier.conf
Le man
de chattr
précise les attributs
Cet article m'a aidé : https://debian-facile.org/doc:systeme:chattr
Tags : unix linux filesystem
Fournisseur | URL | IPv4 | IPv6 | DNSSEC |
---|---|---|---|---|
FDN | https://www.fdn.fr/actions/dns/ | 80.67.169.12 | 2001:910:800::12 | True |
FDN | https://www.fdn.fr/actions/dns/ | 80.67.169.40 | 2001:910:800::40 | True |
ARN | https://arn-fai.net/fr/internet-alternatif/dns | 89.234.141.66 | 2a00:5881:8100:1000::3 | True |
Tags : dns réseau resolvconf
Prérequis
apt install pdftk
Usage
pdftk mondocument.pdf input_pw <mot_de_passe> output mondocument_unsecured.pdf
Tags : pdf linux debian sécurité mot-de-passe document
Petite note rapide sur la configuration d'un serveur httpd d'Apache avec PHP et Let's Encrypt pour chiffrer le flux (SSL/TLS).
pkg inst py39-certbot apache24 mod_php80 php80 php80-extensions
Générer un certificat avec Certbot
Nécessite qu'un enregistrement DNS (A/alias) pointe vers le serveur pour chaque certificat
certbot certonly --standalone -d example.com,www.example.com
Les certificats sont enregistrés dans /usr/local/etc/letsencrypt/live
Configurer le renouvellement automatique des certificats
Le process de renouvellement ne renouvelle que lorsque c'est nécessaire. Donc il peut être exécuté une fois par jour sans problème.
Ajouter dans la crontab
de root la ligne suivante pour lancer le process tous les jours à 02h50
50 2 * * * /usr/local/bin/certbot renew --pre-hook "service apache24 stop" --post-hook "service apache24 start"
Les options pre-hook
et post-hook
permettent de contrôler l'arrêt et le redémarrage du service Apache avant et après le process de renouvellement.
Création du répertoire des logs Apache
mkdir /var/log/apache
chmod 750 /var/log/apache
Edition de /usr/local/etc/apache24/httpd.conf
ServerName localhost:80
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
Include etc/apache24/extra/httpd-vhosts.conf
ErrorLog "/var/log/apache/httpd-error.log"
CustomLog "/var/log/apache/httpd-access.log" common
Activation de PHP
Ajouter les lignes suivantes dans le fichier /usr/local/etc/apache24/modules.d/080_mod_php.conf
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html
Copie du fichier de configuration php.ini
de production
cp -a /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Configuration SSL dans /usr/local/etc/apache24/modules.d/070_mod_ssl.conf
Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLOptions +StrictRequire
Exemple de configuration d'un VirtualHost
avec SSL dans /usr/local/etc/apache24/extra/httpd-vhosts.conf
# example.com
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin postmaster@example.com
ErrorLog "/var/log/apache/example-error_log"
CustomLog "/var/log/apache/example-access_log" common
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
# example.com
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin postmaster@example.com
DocumentRoot "/var/www/example"
# /
<Directory "/var/www/example">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/apache/example-error_log"
CustomLog "/var/log/apache/example-access_log" common
SSLEngine on
SSLCertificateFile /usr/local/etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>
Activation du service
sysrc clear_tmp_enable=YES
sysrc apache24_enable=YES
La directive clear_tmp_enable
permet de vider /tmp
au reboot. Utile pour supprimer automatiquement les anciens fichiers de session PHP après un reboot.
Démarrage du service
service apache24 start
Test SSL : https://www.ssllabs.com/
Tags : unix freebsd ssl tls http web php
Symptôme
$ su - johndoe
Account locked due to 70 failed logins
Password:
su: incorrect password
Dans /var/log/secure
on constate
Apr 21 17:20:59 myhost su: pam_tally2(su-l:auth): user johndoe (20001) tally 70, deny 5
Apr 21 17:21:01 myhost unix_chkpwd[14328]: password check failed for user (johndoe)
Apr 21 17:21:01 myhost su: pam_unix(su-l:auth): authentication failure; logname=janedoe uid=1099 euid=0 tty=pts/1 ruser=janedoe rhost= user=johndoe
Apr 21 17:21:01 myhost su: pam_sss(su-l:auth): authentication failure; logname=janedoe uid=1099 euid=0 tty=pts/1 ruser=janedoe rhost= user=johndoe
Apr 21 17:21:01 myhost su: pam_sss(su-l:auth): received for user johndoe: 10 (User not known to the underlying authentication module)
Le compte ne semble pourtant pas verrouillé
# passwd -S johndoe
johndoe PS 2023-04-21 1 60 10 -1 (Password set, MD5 crypt.)
La méthode classique pour déverrouiller le compte ne fonctionne pas
# usermod -U johndoe
Il est verrouillé par tally, il faut donc le déverrouiller avec tally..
# pam_tally2 -r -u johndoe
Tags : linux redhat tally pam mot-de-passe
Pour effacer le disque /dev/da1
j'utilise la commande dd
combinée avec /dev/urandom
pour générer des nombres aléatoires.
Exemple
dd if=/dev/urandom of=/dev/da1 conv=sync status=progress
Par défaut, dd
positionne la taille du bloc/secteur à 512. Pour accélérer le process, on peut l'aligner à la taille du secteur physique du disque, qui est de 4096 (stripesize).
Cette information peut s'obtenir à l'aide de diskinfo
et camcontrol
.
Exemple avec diskinfo
$ diskinfo -v /dev/da1
/dev/da1
512 # sectorsize
500107862016 # mediasize in bytes (466G)
976773168 # mediasize in sectors
4096 # stripesize
0 # stripeoffset
60801 # Cylinders according to firmware.
255 # Heads according to firmware.
63 # Sectors according to firmware.
ST500LM0 12 HN-M500MBB # Disk descr.
0322031102F9 # Disk ident.
umass-sim1 # Attachment
No # TRIM/UNMAP support
Unknown # Rotation rate in RPM
Not_Zoned # Zone Mode
Petit calcul pour comprendre : si on reprend la taille du media en bytes (mediasize in bytes) et qu'on divise par la taille du secteur (sectorsize), on retrouve la taille du media en nombre de secteurs (mediasize in sectors).
$ echo $((500107862016 / 512))
976773168
On peut obtenir d'avantage d'infos sur le disque avec camcontrol identify /dev/da1
, mais je vais pas aborder ce sujet dans cette note, on a déjà l'info nécessaire avec diskinfo
.
Le paramètre bs
de la commande dd
permet de paramétrer la taille du bloc/secteur (block/sector size).
Avec cette nouvelle info cela donne
dd if=/dev/urandom of=/dev/da1 bs=4096 conv=sync status=progress
Top, c'est bien plus rapide !
Vu la taille de mon disque (500G), j'ai interrompu le process par manque de temps pour le laisser finir. 309G ont été effacés. Pour ne pas recommencer depuis le début, il me fallait calculer le nombre de secteurs à sauter pour donner un point de départ à dd
.
J'ai décidé de repartir à 300G, voici comment j'ai calculé.
Calculer la taille à sauter en bytes
$ echo $((300 * 1024 * 1024 * 1024))
322122547200
Calcul du nombre de secteurs d'une taille de 4096 à sauter
# echo $((322122547200 / 4096))
78643200
Pour reprendre la tâche après interruption, il est possible de définir un nombre de blocs à sauter en sortie avec l'argument oseek
.
# dd if=/dev/urandom of=/dev/da1 bs=4096 oseek=78643200 conv=sync status=progress
dd: /dev/da1: end of deviceB, 166 GiB) transferred 16298.003s, 11 MB/s
43453447+0 records in
43453446+0 records out
177985314816 bytes transferred in 16298.896788 secs (10920084 bytes/sec)
Résumons et vérifions le résultat ci-dessus. J'ai un disque de 500G dont j'ai déjà formaté 309G (disons 300).
Le mediasize in bytes est de 500107862016 (466G). Vérifions...
$ echo $((500107862016 / 1024 / 1024 / 1024))
465
Plus précisément 465.76, arrondi à 465 par le Shell et à 466 par diskinfo
.
Calcul de la taille restant à effacer
$ echo $((466 - 300))
166
La commande dd
nous dit que 166G ont été transférés.
Elle nous dit aussi que 177985314816 bytes ont été transférés, calculons cela encore une fois...
$ echo $((177985314816 / 1024 / 1024 / 1024))
165
Plus précisément 165.76, arrondi à 165 par le Shell et à 166 par dd
. On est tout bon !
Tags : freebsd dd cybersécurité hdd disk camcontrol shell
Lien : https://www.youtube.com/watch?v=9ohuEovlsu8
Bruno Martini - AVIAN GRAYS - TRIXL - Mayra
Tags : musique vidéo youtube nostalgie
Lien : https://www.youtube.com/watch?v=OK7q46tQCNg
Superbe découverte cette reprise du titre Forever Young d'Alphaville
Tags : musique souvenir nostalgie vidéo youtube
Petite note sur la configuration de ssmtp sur FreeBSD
Prérequis
pkg inst ssmtp
Désactivation de sendmail
sysrc sendmail_enable=NO
sysrc sendmail_msp_queue_enable=NO
sysrc sendmail_outbound_enable=NO
sysrc sendmail_submit_enable=NO
Remplacement de sendmail par ssmtp dans le mailer /etc/mail/mailer.conf
#sendmail /usr/libexec/sendmail/sendmail
#mailq /usr/libexec/sendmail/sendmail
#newaliases /usr/libexec/sendmail/sendmail
#hoststat /usr/libexec/sendmail/sendmail
#purgestat /usr/libexec/sendmail/sendmail
sendmail /usr/local/sbin/ssmtp
send-mail /usr/local/sbin/ssmtp
mailq /usr/local/sbin/ssmtp
newaliases /usr/local/sbin/ssmtp
hoststat /usr/bin/true
purgestat /usr/bin/true
Configuration de ssmtp /usr/local/etc/ssmtp/ssmtp.conf
mailhub=mail.example.com:465
rewriteDomain=example.com
hostname=host.example.com
FromLineOverride=YES
UseTLS=YES
AuthUser=user@example.com
AuthPass=SecretPassword
Reboot recommandé
Pour tester
mail johndoe@example.com
Tags : freebsd mail ssmtp sendmail smtp
Prérequis
yum install yum-utils
Lister les paquets installés avec la version et la source
ui_from_repo
ou from_repo
repoquery -a --installed --queryformat='%{name} %{evr} %{ui_from_repo}' | column -t | sort | uniq
Lister les sources des paquets installés
repoquery -a --installed --queryformat='%{ui_from_repo}' | sort | uniq
Ce sujet m'a aidé : https://unix.stackexchange.com/questions/274938/how-to-get-yum-list-output-to-stay-on-one-line-when-getting-output-via-remote
Tags : linux redhat rpm yum repoquery centos
Lister les repos des paquets installés
yum list installed | grep -oE '@.*$' | sed 's/@//' | sort | uniq
Lister les repositories présentés
subscription-manager repos --list | grep 'Repo ID' | cut -d: -f2 | sed 's/\s*//g' | sort | uniq
Tags : redhat yum subscription-manager
Une page se tourne, je cède mon ThinkPad X201, après de nombreuses années de loyaux services (et quelques moments pénibles).
Tags : unix laptop lenovo thinkpad linux debian xfce souvenir
Pour pouvoir mettre le laptop en veille prolongée, j'ai étendu le volume swap avec lvextend
sans l'option -r
car elle n'est pas compatible avec le type swap.
lvextend -L +8G /dev/mapper/lvg-swap
Puis pour étendre le swap
swapoff -a
mkswap /dev/mapper/lvg-swap
swapon -a
Au reboot j'ai eu droit à un tas d'erreurs mdadm
du type
mdadm: No arrays found in config file or automatically
mdadm: No arrays found in config file or automatically
mdadm: No arrays found in config file or automatically
mdadm: No arrays found in config file or automatically
mdadm: No arrays found in config file or automatically
mdadm: No arrays found in config file or automatically
mdadm: error opening /dev/md?*: No such file or directory
mdadm: No arrays found in config file or automatically
mdadm: No arrays found in config file or automatically
J'ai pas compris le lien entre mdadm
et LVM surtout que je n'ai pas configuré de RAID.
L'erreur se produit car l'UUID du swap pour permettre la sortie de veille n'est pas mis à jour dans initramfs
.
Et oui, le précédent mkswap
a réinitialiser l'UUID.
Pour identifier l'UUID du swap
ls -l /dev/mapper/lvg-swap
Cela m'a renvoyé un lien symbolique vers ../dm-1
J'ai donc listé les disques par UUID et fait le rapprochement avec la cible des liens sur dm-1
ls -l /dev/disk/by-uuid/
Puis j'ai mis à jour l'UUID dans /etc/initramfs-tools/conf.d/resume
Et enfin mise à jour d' initramfs
update-initramfs -u
Tags : linux lvm debian mdadm swap initramfs
Sécuriser et monter /tmp
et /var/tmp
en mémoire (tmpfs)
kldload tmpfs
sysrc -f /boot/loader.conf tmpfs_load=YES
rm -rf /tmp /var/tmp
mkdir /tmp /var/tmp
mount -t tmpfs tmpfs -o rw,nosuid,noexec,mode=01777 /tmp
mount -t tmpfs tmpfs -o rw,nosuid,noexec,mode=01777 /var/tmp
Dans /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
tmpfs /tmp tmpfs rw,nosuid,noexec,mode=01777 0 0
tmpfs /var/tmp tmpfs rw,nosuid,noexec,mode=01777 0 0
Tags : freebsd linux unix tmpfs cybersécurité fstab
Lien : https://gitlab.com/rmnvgr/metadata-cleaner
Python GTK application to view and clean metadata in files, using mat2 · https://metadatacleaner.romainvigier.fr/
Installation
Debian
apt install metadata-cleaner
FreeBSD
pkg install multimedia/py-metadata-cleaner
Tags : logiciel image photo exif vie-privée metadata anonymisation cybersécurité
Par exemple, pour lister les liens symboliques sur la racine /
et afficher uniquement leur cible :
find / -maxdepth 1 -type l -printf "%p %l\n"
-maxdepth 1
détermine la profondeur de la recherche à un seul niveau pour ne pas rechercher récursivement
-printf
pour formater la sortie
%p
affiche le nom du fichier/dossier
%l
récupère uniquement les éléments de type lien symbolique
\n
saut de ligne
Tout est dans man find
Tags : linux unix find symlink