Archives de catégorie : bidouille

Molotov sur Linux (Debian 11) ça marche très bien

Et oui, sur mon vieil Acer j’ai installé Molotov par l’appimage fourni sur le site. Et je dois dire que ça fonctionne mieux qu’avec mon windows 10. Plus rapide, plus stable et meilleur qualité d’image.

Le seul bémol c’est qu’il faut réussir à ne pas être interrompu par xscrennsaver.

Donc j’ai rajouter un petit heartbeat simulant régulièrement la frappe au clavier.  Pour l’instant il n’est pas très beau et je veux en changer un peu le mode de fonctionnement ne serait-ce que pour le fun. Mais là je viens de faire un visionnage pendant une heure, nickel, un plaisir.

Dès que j’arriverai à un résultat sympa je le rajouterai à ce post.

Cron, sssmtp, Orange et Gmail

J’avais remarqué que les mails de cron émis par ssmtp vers mon compte gmail ne fonctionnait plus. Plus exactement les mails partaient sans anomalies mais n’arrivaient jamais. Sur mon VPS je suis passé à Exim et là après le bon réglage des SPF c’est nickel.

Dans le cadre de l’installation d’un raspberry sur un clé 4g il fallait oublier la configuration du SPF et revenir à une solution plus légère. Sur le net il y a pas mal de documentation concernant cette configuration mais toutes ne fonctionnent pour ce qui est du relais des messages du cron. La clé pour avoir un bon entête consiste au bon positionnement de Full Name de root, du revaliases de ssmtp et du passage à No de FromLineOvewwrite dans ssmtp.conf.

ce qui donne chez moi

pi@raspicam:~ $ more /etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=monmail@domain.tld
 
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.orange.fr:465
useTLS=YES
authUSER=lemail@orange.fr
authPASS=lepass
 
# Where will the mail seem to come from?
rewriteDomain=orannge.fr
 
# The full hostname
hostname=raspicam
 
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=NO
 
pi@raspicam:~ $ more /etc/ssmtp/revaliases
# sSMTP aliases
#
# Format:       local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:monmail@orange.fr:smtp.orange.fr:465
pi:monmail@domain.tld:smtp.orange.fr:465
 
pi@raspicam:~ $ grep root /etc/passwd
root:x:0:0:raspicam,,,:/root:/bin/bash

la modification de du full name se fait pas sudo chfn -f ‘le pseudo’ root

Un peu de downtime (passage de stretch en buster)

Et oui le passage dans la nouvelle version stable de Debian ne s’est pas fait sans douleur 🙂

Mais elle me permettra de soumettre à fail2ban le flux ipv6.

La source du problème a été les modification de lighttpd notamment le changement de noms des helper en perl. Le deuxième problème était lié à des nouveau contrôles dans le lighttpd.conf livré.

Les réglages de la section parseopts sont visiblement trop contaignants et sont incompatible avec l’url rewiting que j’utilise.

Serveur d’impression raspberry pi zeroW et Livebox

Et hop

Je viens de mettre en service un nouveau serveur d’impression à base d’un raspeberry pi zero w, avec les câbles  alim boitier et carte SD j’en ai pou approximativement 30€.

Au niveau de la configuration il suffit de rajouter à la raspbian le paquet p910nd. Mettre à jour le fichier /etc/default/p910nd

# Printer number, if not 0
P910ND_NUM=""
# Additional daemon arguments, see man 8 p910nd
P910ND_OPTS="-f /dev/usb/lp0 -b"


# Debian specific (set to 1 to enable start by default)
P910ND_START=1

Enfin presque p910nd ne fonctionne pas en ipv6 et windows10 cherche à imprimer en ipv6, il faut donc au niveau de la livebox ou du pi fixer une adresse ipv4 fixe et utiliser cette adresse ip au lieu du nom du serveur.

lighhttpd et traq (ou le rewrite [QSA])

le passage en php7 a été l’occasion de revoir l’installation de traq et à cette occasion je me suis aperçu de dysfonctionnement dans la partie administration. En fait ma règle de rewrite ne passait pas la Query string.
La solution est de mimer le [QSA] d’apache la règle ne s’invente pas …

$HTTP["host"] =~ "^(domain.tld)" {
        url.rewrite-if-not-file = (
          "/traq/([^?]*)(?:\?(.*))?" => "/traq/index.php/$1?$2",
        ),
}

une petite modification est nécessaire aussi pour le bon fonctionnement en php7.0 et pour finir rajouter une méthode manquante dans traq/vendor/traq/controllers/app_controller.php à l’intérieur de la définition de la classe app_controller

   /**
     * Used to display the 404 page.
     */
    public function show_404()
    {
        header("HTTP/1.0 404 Not Found");
        $this->render['view'] = 'error/404';
        $this->render['action'] = false;
    }

Avez vous rencontré des perturbations ?

Ce mois-ci j’ai procédé au basculement de mes sites sur un VPS en cumulant un changement d’hébergeur y compris pour les noms de domaine et les mails.
L’opération a été ma foi assez lourde et je ne suis pas sur que tout se soit passé « sans coupure ».
Les points les plus compliqués ont été par ordre chronologique :
le réglage de fail2ban (pas encore terminé)
la mise en place d’Https (à peaufiner à ce jour)
et les déménagements des mails là ça a a été un peu panique.

Donc je ne dirais qu’un mot mainteant : « Enjoy »

Lighttpd ne servir que les domaines autorisés

Ayant pris possession d’un VPS chez ovh, peu de temps après avoir installé lighttpd je me suis aperçu que le serveur faisait l’objet d’attaques répétées (voir plus loin la liste des cibles)
pour me prémunir de ces attaque j’ai chercher à ne servir que les domaines autorisés. Pour ce faire après moults tâtonnements je suis arrivé à la conclusion que la documentation de lighttpd mod_access était incomplète. Il ne filtrait pas les tentative d’accès sur la racine et donc exposait l’index.html par défaut.
Je suis arrivé à cete solution :

# deny the access to domain other than www.example.org or example.org to all users
$HTTP["host"] !~ "^(example.org|www.example.org)$" {
url.access-deny = ("")
url.access-allow = ("")
}</pre lang="bash">
la liste des cibles de ce scan intempestif :
<pre lang="bash">Cible
/w00tw00t.at.blackhats.romanian.anti-sec:)
/language/Swedish${IFS}&amp;&amp;echo${IFS}610cker&gt;qt&amp;&amp;tar${IFS}/string.js
/xmlrpc.php
/wp-content/plugins/cherry-plugin/cherry-plugin.php
/mysql/admin/
/mysql/dbadmin/
/mysql/sqlmanager/
/mysql/mysqlmanager/
/2phpmyadmin/
/phpmy/
/phppma/
/shopdb/
/dbadmin/
/db/
/admin/
/mysql/
/database/
/sqlmanager/
/mysqlmanager/
/php-myadmin/
/phpmy-admin/
/mysqladmin/
/mysql-admin/
/admin/sysadmin/
/admin/sqladmin/
/admin/db/
/admin/web/
/admin/pMA/
/mysql/db/
/mysql/web/
/sql/phpmanager/
/sql/php-myadmin/
/sql/phpmy-admin/
/sql/sql/
/sql/myadmin/
/sql/webadmin/
/sql/sqlweb/
/sql/websql/
/sql/webdb/
/sql/sqladmin/
/sql/sql-admin/
/sql/phpMyAdmin/
/db/myadmin/
/db/webadmin/
/db/dbweb/
/db/websql/
/db/webdb/
/db/dbadmin/
/db/db-admin/
/db/phpMyAdmin-3/
/administrator/db/
/administrator/web/
/administrator/admin/
/phpMyAdmin-3/
/php-my-admin/
/PMA2011/
/phpmanager/
/cgi/common.cgi
/stssys.htm
/mnt/mtd/qt
/index.php
/zabbix/index.php
/nagiosxi/login.php
/etc/lib/pChart2/examples/imageMap/index.php
/http:/www.google.com
/common/js/elfinder_2.0/elfinder.html
/test.html
/muieblackcat

Installer un nouvel ordinateur vendu avec Windows 8.1 en Windows10

Juste pour confirmer une information parue ailleurs sur le web, il est effectivement possible sur un ordinateur neuf sur lequel la version de windows8.1 n’a pas été activée d’installer directement windows 10.
Pour réaliser cette installation j’ai préalablement créé à partir du site de Microsoft une clé usb bootable, modiifé les paramètres du bios pour permettre le boot (suppression du secure boot pour moi) et booté sur la clé.
Pas plus compliqué que celà il faut juste être sûr que windows n’a jamais été installé sur la machine.

DhcpV6 et network != /64

La problématique de la distribution des adresses dans un réseau ipv6 devient problématique dès que l’on ne dispose pas d’un /64.
La faute en incombe aux clients dhcp disponible.
Sur Debian le plus conforme est dibbler-client mais hélas il a deux problèmes.
Le premier trivial il convient de corriger la configuration d’origine

strict-rfc-no-routing #permet de récupérer une adresse /128 quelque soit la largeur du réseau

le deuxième est lié au démarrage de dibbler il convient qu’il soit lancé après que l’interface réseau soit up
pour celà j’ai déplacé son lancement dans network interfaces et je l’ai supprimé des services lancer par init

dans /etc/network/interfaces j’ai donc

allow-hotplug eth0
iface eth0 inet dhcp
post-up /etc/init.d/dibbler-client start || true
pre-down /etc/init.d/dibbler-client stop || true

Stratégie anti spam

Actuellement sur ce blog j’ai une recrudescence d’inscription de spamer, par l’intermédiaire de robot.
Lorsque l’on regarde les traces on peut voir que seul les pages html sont ouvertes.
Ce qui m’a donné l’idée d’un autre système antispam. Le principe est de vérifier que les différents liens feuilles de styles, javascript, images sont bien chargé avant d’accepter un post. Pour cela et afin de ne pas trop modifier le code il suffirait de mettre dans le répertoire du logo wordpress une regle dans le .htaccess positionnant un cookie.
Puis de le récupérer dans le traitement des formulaire et si le cookie n’est pas présent .. inscrire l’adresse IP dans les adresse interdite directement au niveau apache et ne rien faire.

un très bon candidat est d’utiliser le chargement du favicon ce qui garantit que l’on est accéder par un navigateur classique

L’autre bonne méthode est d’utiliser un javascript. Ce qui impose au robot de charger le javascript et de l’interpréter. Avec ces quelques mesures on a alors plutôt compliqué la tâche des nuisibles.

Edit :
Je teste en ce moment un plugin wordpress et un antispam sur un formulaire de contact sur ces principes. Les premiers résultats sont satisfaisants néanmoins je pense encore « améliorer » ce plugin afin de permettre à d’autre de l’utiliser et donc d’ouvrir le code sans donner de moyen trop facile de le contourner.