Je suis en train de faire le ménage sur d’anciennes machines que je donne sur donnons.org : cela me permet de récupérer quelques (vieilles) données pour les sauvegarder sur le NAS avant de formater les disques durs pour leur nouvelle vie.
En changeant de machine, je me suis aperçu que le certificat TLS du NAS n’était plus valide… depuis fin février 2019! What??
Après quelques infructueux essais de renouveler le certificat, il semblerait que le passage à DSM 6.2 soit à l’origine du problème.
Aujourd’hui, j’ai installé LineageOS (Android 9.0 Pie) sur mon OnePlus One, histoire de lui redonner un second souffle et de bénéficier des dernières mises à jour de sécurité Android.
Le OnePlus One (OPO) est sorti en mai 2014, il a donc quelques années derrière lui et tourne sous CyanogenMod 13, c’est-à-dire Android 6.0.1 (Marshmallow). Autant dire qu’il n’a pas vu de correctifs de sécurité depuis quelques années!
Étape 1: activer le débogage USB
Sur le téléphone, on commence par activer le mode développeur:
Ouvrez Paramètres > A propos du téléphone.
Tapez 7 fois sur le numéro de build.
Vous venez d’activer le mode développeur!
Grâce au mode développeur, vous avez maintenant accès à des options qui n’étaient pas visibles auparavant et qui vont nous être nécessaires.
Pour activer le débogage USB:
Ouvrez Paramètres > Options pour les développeurs
Activez l’option Débogage Android
Désactivez l’option Mettre à jour la récupération CyanogenMod (sinon l’installation du recovery sera impossible).
Étape 2: installation d’ADB
Android Debug Bridge (adb) est un outil de développement qui facilite la communication entre un appareil Android et un ordinateur. Cette communication s’effectue soit par câble USB, soit en WiFi.
Lors d’une connexion SSH sur le serveur d’un client chez WPEngine, je suis tombé sur le message d’erreur suivant:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644for'/Users/matt/.ssh/id_ed25519.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/matt/.ssh/id_ed25519.pub": bad permissionsCode language:PHP(php)
Au lieu d’utiliser ma clé privée, j’ai utilisé ma clé publique (id_ed25519.pub) qui – comme elle est publique – bénéficie de droits plus large que la clé privée.
Il faut donc relancer la commande en retirant l’extension .pub du chemin de la clé, pour que la clé privée soit prise en compte:
Si vous utilisez fail2ban sur votre serveur dédié – et vous devriez! – il peut être vraiment utile de lister les statuts de toutes les jails fail2ban.
Cela permet de voir quelles sont les jails actives et de vérifier qu’il n’y a aucun problème de configuration.
On peut obtenir le statuts de toutes les jails fail2ban avec la commande suivante:
fail2ban-client status | sed -n 's/,//g;s/.*Jail list://p' | xargs -n1 fail2ban-client statusCode language:JavaScript(javascript)
Voici un exemple de résultat de la commande:
Status for the jail: pam-generic
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
Status for the jail: postfix
|- Filter
| |- Currently failed: 0
| |- Total failed: 4482
| `- File list: /var/log/mail.log
`- Actions
|- Currently banned: 0
|- Total banned: 223
`- Banned IP list:
Status for the jail: sasl
|- Filter
| |- Currently failed: 4
| |- Total failed: 14126
| `- File list: /var/log/mail.log
`- Actions
|- Currently banned: 4
|- Total banned: 1927
`- Banned IP list: 45.148.10.7046.38.144.1746.38.144.20246.38.144.32
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:Code language:PHP(php)
Depuis le passage du site sur le nouveau serveur, ORION, j’utilise MySQL 8 en lieu et place de MariaDB, histoire de tester les les gains de performance.
Or, avec la nouvelle configuration de MySQL par défaut, vous pouvez obtenir cette erreur lors de simples opération de maintenance comme l’optimisation des tables:
example.wp_comments: Table does not support optimize, doing recreate + analyze instead
example.wp_comments: Invalid default value for'comment_date'
example.wp_comments: Operation failed
example.wp_et_social_stats: Incorrect datetime value: '0000-00-00 00:00:00'for column 'comment_date' at row 1
example.wp_et_social_stats: Invalid default value for'comment_date'
example.wp_et_social_stats: Table does not support optimize, doing recreate + analyze instead
example.wp_et_social_stats: Invalid default value for'sharing_date'
example.wp_et_social_stats: Operation failedCode language:JavaScript(javascript)
Ce qui pose problème, ce sont ces deux directives: NO_ZERO_IN_DATE et NO_ZERO_DATE.
Deux solutions s’offrent à nous : éditer la valeur directement depuis la console mysql ou alors depuis le fichier de configuration my.cnf.
Méthode 1 : éditer la valeur de sql_mode depuis la console MySQL
Si vous vous trouvez toujours dans la console mysql, vous pouvez lancer la reqête suivante, qui enlève les drapeaux NO_ZERO_IN_DATE et NO_ZERO_DATE à notre directive sql_mode:
SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';Code language:JavaScript(javascript)
Relancez ensuite le serveur:
service mysql restart
Méthode 2 : éditer la valeur de sql_mode depuis le fichier de configuration MySQL (my.cnf)
Nous allons donc éditer notre fichier de configuration MySQL:
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Et ajouter (ou modifier) la variable de configuration sql_mode en l’amputant des valeurs NO_ZERO_IN_DATE et NO_ZERO_DATE:
Git – et son homologue Github – permet de versionner votre code afin de pouvoir commenter les changements de code, revenir en arrière et annuler une modification en cas de problème, tenir une feuille de route, accepter des demandes de modifications venant d’autres développeurs (pull requests) et permettre la collaboration de plusieurs personnes sur un même projet.
Voici un petit tuto pour vous donner les commandes essentielles qui permettent de créer le dépôt, ajouter du code et l’envoyer sur Github.
Installation de Git
Commençons par l’étape obligatoire qui est l’installation de Git sur votre système d’exploitation:
Cela signifie qu’il vous manque les outils de développement XCode. Cela peut arriver après chaque mise à jour d’OSX donc vous pouvez les installer avec:
Ensuite, on valide avec un message qui explique la validation des changements:
git commit -m "Ajout des fichiers du projet"Code language:JavaScript(javascript)
A ce stade, le fichier est dans le HEAD de git, mais pas encore dans votre dépôt distant. On l’envoie donc sur GitHub avec:
git push origin master
Pour mettre à jour votre dépôt local vers les dernières validations qui se trouvent sur GitHub (attention, cela écrase les fichiers locaux!), exécutez la commande:
git pull
Voilà, c’est un petit mémo simple mais il permet déjà de se servir des principales fonctions de git.
Il peut arriver que l’on ait besoin de sélectionner un élément dont l’ID ou la classe commence ou finit par un nom défini, pour pouvoir le modifier ou le manipuler.
Évidemment, si il possède un ID ou une classe bien défini, on utilisera son ID ou sa classe. Par contre, si aucune classe n’est définie par exemple, il faudra utiliser une expression régulière (regex).
On peut faire cela très simplement avec jQuery.
Sélectionner tous les éléments dont l’ID commence par toto_
Prenons un petit exemple, nous allons chercher à sélectionner tous les élements dont l’ID commence par toto_:
Le signe ^ signifie que l’on se place en début de chaîne dans l’expression régulière. Ensuite, il suffit d’indiquer la chaîne à chercher, c’est-à-dire toto_ dans notre cas.
S’il s’agit d’un champs de formulaire <input>, on trouvera donc:
Cette fois, on utilise l’argument $, qui signifie la fin d’une chaîne de caractères.
Exemple concret : remplacer le type de tous les champs de formulaire dont l’ID finit par -money
J’ai récemment eu à modifier le comportement d’une page de réglages d’un plugin pour WooCommerce.
En substance, les champs étaient de type number, ce qui est problématique car ils ne permettent que des nombres entiers. Or, s’agissant d’un système de conversion de devises, il était primordial d’avoir accès à des nombres flottants, avec des virgules.
La solution est de cibler tous les champs finissant par -moneyet d’en changer le type de number à text, ce qui se fait très facilement avec la requête suivante:
Sur un nouveau serveur à base d’Ubuntu Server 18.04, j’obtiens cette erreur à la suite d’un test du service ssh:
sshd -t
Could not load host key: /etc/ssh/ssh_host_ed25519_key
Missing privilege separation directory: /run/sshdCode language:JavaScript(javascript)
Les solutions à ces deux problèmes sont triviales, cela se règle en deux petites commandes.
L’erreur Could not load host key
L’erreur Could not load host key survient lorsque certaines clés SSH n’ont pas été générées lors de l’installation du système d’exploitation du serveur.
Dans le cas du serveur qui nous occupe, il nous manque la clé de chiffrement ED25519 qui doit se trouver à l’adresse /etc/ssh/ssh_host_ed25519_key.
Pour générer toutes les clés de chiffrement SSH manquantes, une seule commande suffit:
ssh-keygen -A
L’argument -A signifie que l’on génère toutes les clés (All keys). Voici le résultat sur le serveur:
ssh-keygen: generating new host keys: ED25519Code language:JavaScript(javascript)
Le hotlinking (ou liaison automatique ; aussi connu en anglais sous les noms de inline linking, leeching, piggy-backing, direct linking ou offsite image grabs) consiste à utiliser l’adresse d’un fichier publié sur un site web, le plus souvent une image, pour l’afficher sur un autre site, sur un blog, dans un forum, etc.
En d’autres termes, au lieu d’enregistrer l’image et de l’installer sur son propre serveur Web, le hotlinkeur crée un lien direct vers le serveur d’origine.
Sous NginX, il peut être très utile d’éviter que des gens publient vos photos ou images depuis votre site sur le leur, en gardant les liens de votre serveur et en consommant toute votre bande passante (ce qui peut représenter un surcoût pour vous).
Il suffit d’éditer votre server block et d’y ajouter cette directive:
location ~ \.(gif|png|jpeg|jpg|svg|webp|avif)$ {
# Define allowed referers - your own domain and specific external domains
valid_referers none blocked
~\.google\.
~\.bing\.
~\.yahoo\.
~\.facebook\.
~\.pinterest\.
~\.twitter\.
yourdomain.com
*.yourdomain.com
server_names;
# Block requests with no or invalid refererif ($invalid_referer) {
return403;
}
}
Code language:PHP(php)
N’hésitez pas à rajouter les domaines que vous souhaitez whitelister et qui sont autorisés à utiliser vos fichiers média.
Relancez ensuite NginX avec:
service nginx restart
Cela devrait quelque peu soulager votre serveur et garantir votre bande passante à vos visiteurs.
La valeur du chmod telle qu’elle apparaît dans le terminal est un peu esotérique. Prenons par exemple le chmod d’un fichier standard de WordPress : -rw-r-----, cela demande une petite gymnastique intellectuelle pour réaliser quels sont les droits véritables.
Je vous propose donc une petite commande qui va vous simplifier la vie, de manière à vous donner la valeur numérique du chmod des fichiers et répertoires.
Il vous suffit d’utiliser la commande stat comme ceci, dans votre fenêtre de terminal:
stat -c '%a %U:%G %n' *Code language:JavaScript(javascript)
Notes:
-c permet de formater la sortie avec la template entre apostrophes
Il peut être extrêmement utile d’activer la connexion SSH chez certains hébergeurs qui la proposent, comme SiteGround. Cela permet de gagner pas mal de temps, notamment lorsque l’on utilise wp-cli.
Mais avant de pouvoir se connecter, il faut d’abord l’activer dans les options de CPanel.
Activation de la connection SSH dans CPanel
Rendez-vous dans CPanel > Security > SSH Shell Access :
Ensuite, cliquez sur le bouton Manage SSH Keys:
Nous avons ensuite le choix entre deux solutions : soit nous créons la paire de clés privées/publiques sur le serveur et nous les copions sur notre machine locale, soit nous la créons en locale et l’envoyons sur le serveur. Je suis plutôt pour la seconde solution.
Création des clés SSH
On se rend dans le répertoire SSH de notre utilisateur et on liste le répertoire:
cd ~/.ssh
ls
Si le fichier id_rsa.pub existe déjà, il suffit d’afficher son contenu:
catid_rsa.pubCode language:CSS(css)
Si le fichier n’existe pas, il suffit de le créer:
ssh-keygen
Copiez le contenu du fichier, il s’agit de la clé publique que nous allons importer dans CPanel.
Import de notre clé SSH dans CPanel
Cliquez sur Import Key:
Renommez la clé pour id_rsa puis collez le contenu de votre clé SSH publique:
Il ne vous reste plus qu’à vous connecter en SSH au serveur. Suivant votre hébergeur, le numéro du port SSH peut changer pour des raisons de sécurité. Chez SiteGround, SSH tourne sur le port 18765:
J’utilise mon NAS Synology tous les jours et l’une des fonctions que j’affectionne particulièrement est de pouvoir regarder des vidéos directement sur la télévision, en passant par la Freebox.
Il existe plusieurs manières de regarder les vidéos stockées sur le NAS sur la télévision : depuis la Freebox, depuis un navigateur avec VideoStation ou depuis votre mobile avec l’application DS Video.
Lire des vidéos avec fichiers de sous-titres depuis la Freebox
Il suffit de se rendre dans le menu Freebox > Disques et de sélectionner votre NAS, qui s’appelle par défaut “DiskStation” chez Synology.
Si le fichier de sous-titre porte le même nom que le fichier vidéo auquel il se rattache, alors la Freebox le chargera automatiquement. Vous pouvez alors le désactiver en appuyant sur la touche Menu verte de la télécommande Free.
C’est la méthode que j’utilise au quotidien mais il faut avoir prévu de télécharger les bons sous-titres, s’être assuré que le nom ne diffère pas et les avoir mis dans le même répertoire que le fichier vidéo… cela demande un peu de manutention avant de pouvoir se caler dans le canapé.
Lire des vidéos avec sous-titres chargés à la volée depuis le NAS
Une seconde solution consiste à lancer le fichier depuis le webdamin du Synology : démarrez l’application VideoStation et sélectionnez le fichier à lire.
Allumez ensuite votre télévision et le Freebox Player pour qu’il soit détecté par l’application VideoStation.
Si vous cliquez sur la petite icône Réglages du lecteur vidéo, il est possible de charger des sous-titres à la volée dans la section Sous-Titres :
Il ne vous reste plus qu’à sélectionner la destination vidéo vers laquelle envoyer la vidéo en flux DLNA dans la section Source. Ici, nous choisissons Freebox Player en DLNA:
Il suffit de cliquer sur le bouton lecture et la vidéo sera directement projetée sur la télévision par le biais du Freebox Player.
Lire vidéos et sous-titres depuis l’application mobile DS Video
Je vous ai gardé le meilleur pour la fin : vous pouvez lancer les vidéos du Synology et activer les sous-titres à la volée depuis l’application mobile DS Video, à installer sur votre téléphone portable.