28 Nov 2020, 00:00

Vrac wireguard

Point-to-point setup

https://www.wireguard.com/quickstart/
https://wiki.archlinux.org/index.php/WireGuard


## INSTALL
# Install wireguard
apt install wireguard

## KEYS
# Create storage
cd /etc/wireguard
mkdir keys && chmod go-rwx ./keys && cd keys

# Generate private key
(umask 0077; wg genkey > peer_A.key)
# Derive public key
wg pubkey < peer_A.key > peer_A.pub

# Optionnal - Generate Pre-Shared Key ; 1 for each peer pair
wg genpsk > peer_A-peer_B.psk


## NETWORKING
# Create interface
ip link add dev wg0 type wireguard

# Assign address and mask
ip address add dev wg0 192.168.2.1/24

# Set port
wg set wg0 listen-port 51871


wg set wg0 listen-port 51871 private-key ./peer_A.key

09 Nov 2020, 00:00

Monitoring du réseau sous Linux

Un peu de lecture ici.

nethogs

sudo apt install nethogs
sudo nethogs

06 Nov 2020, 00:00

Eth2 - Lighthouse via Docker

Exemple de docker-compose (pour Medalla)

22 Sep 2020, 00:00

Diagnostiquer profils réseaux et détection domaine

https://learn.microsoft.com/en-us/troubleshoot/windows-client/networking/domain-joined-machines-cannot-detect-domain-profile

Profiles

Observateur event
Journaux apps services
Microsoft -> Windows -> NetworkProfile -> Operationnel

On y voit le GUID du profil choisi une fois l’identificxation NLA effectuée

Get-NetConnectionProfile

https://learn.microsoft.com/en-us/powershell/module/netconnection/set-netconnectionprofile
Set-NetConnectionProfile -InterfaceIndex “18” -NetworkCategory “Private”

Pas possible de définit le profil Domaine ; ceci est fait automatiquement par Windows

https://superuser.com/questions/1725191/network-names-in-windows

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
Signatures

Pour diagnostiquer la connectivité réseau avec le controlleur de domaine
Test-ComputerSecureChannel

dcdiag

Serveur toujours en non identifié

Essayer de juste redémarrer le service NLA ; ça devrait fonctionner, mais ça recommencera au prochain reboot

https://glennopedia.com/2024/06/01/network-location-awareness-service-revisited/

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters
DWORD “AlwaysExpectDomainController” “1”

MTU

connaitre le MTU en powershell :
netsh interface ipv4 show subinterfaces

01 Jan 0001, 00:00

“adobe cloud” qui revient -> transforme les picees jointes pdf en lien adobe cloud

réactivé automatiquement à chaque update

tests solutions :

1 - https://www.reddit.com/r/Adobe/comments/1b1hfav/disable_office_com_addins_forever/ C:\Program Files\Adobe\Acrobat DC\PDFMaker rename/delete “Mail” et “Office” (fait sur poste fixe bicou (ancien Daniel) début avril 2024)

2 - https://www.reddit.com/r/Outlook/comments/17o692s/how_do_i_stop_outlook_asking_if_i_want_to_send/ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Outlook\Addins\AdobeAcroOutlook.SendAsLink -> Load = 0 ou HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Office\16.0\Outlook\Resiliency\AddinList -> “AdobeAcroOutlook.SendAsLink”=“0” ou [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Adobe\Adobe Acrobat\DC\FeatureLockDown\cCloud] -> “bAdobeSendPluginToggle”=dword:00000001

01 Jan 0001, 00:00

Introduction

Ansible est exécuté sur un poste local (typiquement un pc de bureau), et va servir à gérer un ou plusieurs postes distants (typiquement des serveurs).

Ceci ne nécessite pas de démon sur les serveurs à gérer ; la connexion se fait via ssh.

Installation

bullseye : sudo apt install ansible Dans bookworm, séparation entre ansible-core (binaires) et ansible (?). Le paquet ansible dépend de ansible-core.
Numéros de version différents : ansible 6 et ansible-core 2.13 en novembre 2022.

Pattern

https://docs.ansible.com/ansible/latest/inventory_guide/intro_patterns.html

À chaque appel, ansible se connecte à un hote (ou groupe d’hotes). On appelle ces cibles le “pattern”. Un pattern peut être un hote, une addresse IP, un groupe, un ensemble de groupe, ou un FQDN.

Par défaut, le seul pattern accessible est l’hote implicite localhost ou 127.0.0.1 (et PAS 127.0.1.1). Ce pattern n’est pas inclus lors d’un appel au groupe “all”.

Pour pouvoir être utilisé, chaque pattern DOIT être entré dans un inventaire (même les IP/FQDN).

On peut utiliser des wildcard, regex et autres pour définir un pattern.

Inventaire

https://linux.goffinet.org/ansible/comprendre-inventaire-ansible/

Constitué d’hôtes, de groupes d’hôtes, et de variables associées.
2 groupes spéciaux : all (tous les éléments) et ungrouped (tous les éléments n’ayant aucun autre groupe que all)

Les éléments d’un inventaire sont les éléments sur lesquels vont être effectués les modules ansible.

Nomenclature parent/enfant ?

On peut imbriquer des groupes.

On peut définir un inventaire au moment de l’appel de la commande (1 ou plusieurs hotes) :
ansible -i '127.0.0.1,'
Il faut préciser la virgule, même si 1 seul hôte, sinon il cherche un fichier nommé 127.0.0.1 dans le répertoire courant.

Modules

Les modules ansibles sont des scripts pré-écrits, réutilisables, qui servent généralement à remplir une fonction précise. On peut créer ses propres modules (?)

La syntaxe pour appeler un module est :
-m module_name -a module_args

Voici quelques modules inclus dans l’installation d’ansible :

  • command : c’est le module par défaut. Va exécuter, via ssh, la commande sur l’hôte. Par exemple ansible localhost -a "whoami"
    Ne passe pas par un shell ; exécute directement la commande. En conséquence, un certain nombre de fonctionnalités nbe sont pas disponibles, par exemple les redirecteurs (> etc), l’expansion de variables, l’environnement utilisateur etc.
    https://serverfault.com/questions/958952/ansible-task-write-to-local-log-file

  • shell

Différences entre les modules command et shell

  • ping : essaye de se connecter en ssh au pattern, et vérifie que python est accessible ; retourne "ping": "pong" en cas de succès ; Retourne "changed": false en tous les cas.
    En cas d’échec, "unreachable": true (ou autre ?)

Syntaxe

ansible pattern -i inventory -m module

Playbook

Ensemble/organisation de commandes ad-hoc ? Playbook est à commande ansible ce qu’un script est à une commande bash ?

Config

ansible-config list pour lister tous les éléments de configuration

/etc/ansible/ansible.cfg ~/ansible.cfg (override la précédente)

HOTES

ansible peut être utilisé sur un client local, et se connecter à un “hote”. Les hotes doivent être définis. L’hote “localhost” existe par défaut.

ansible –list-hosts localhost

dans inventory -> playground, sous sandbox, on spécifie l’hostanme/ip du serveur, et le user utilisé)

roles https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html

tags

variables : {{ myvar }}

chaque tache :

  • un nom friendly
  • des tags ; en l’absence de tags, la tache est jouée lors du playbook ; un “never” dit de ne pas lancer la tache SAUF si un des tags suivant est spécifié -> permet de spécifier un ensemble d’actions qui seront effectuées avec un tag (par exemple “install”, “populate”, “deploy” etc…)

01 Jan 0001, 00:00

Entra Domain Services

Fournit une partie des fonctionnalités AD DS locales, dont les GPO. Mais le domaine est géré par Microsoft.

Sur le portail Azure, dans “Tous les services” on peut trouver Microsoft Entra Domain Services ou aller là : https://portal.azure.com/#browse/Microsoft.AAD%2FdomainServices

On crée le service Domain Services

01 Jan 0001, 00:00

https://unix.stackexchange.com/questions/307994/compute-bcrypt-hash-from-command-line

sudo apt install python3-bcrypt

python -c ‘import bcrypt, getpass; print(bcrypt.hashpw(getpass.getpass().encode(), bcrypt.gensalt()).decode())’

01 Jan 0001, 00:00

Orga générale

Plusieurs serveurs DNS racines gérés par différentes entités (Verisign, NASA, ICANN, universités américaines etc) https://www.iana.org/domains/root/servers

Un serveur DNS stocke en dur les IP de ces serveurs dans le fichier /usr/share/dns/root.hints (par défaut sous Debian en tout cas). C’est le début de la récursivité.

On ne peut interroger directement les serveur racines pour résoudre un nom de domaine. Ceux-ci vont simplement nous rediriger vers le serveur qui gère le TLD demandé.

Exemple : on demande au serveur racine A (IP : 198.41.0.4) de résoudre l’adresse “memo.raphaelguetta.fr” :
dig @198.41.0.4 memo.raphaelguetta.fr
Il nous répond simplement :
fr. 172800 IN NS f.ext.nic.fr.
soit “voici le serveur qui gère le .fr, va lui demander”.

On lui demande donc de résoudre, à nouveau :
dig @f.ext.nic.fr. memo.raphaelguetta.fr
et il nous répond :
raphaelguetta.fr. 3600 IN NS ns103.ovh.net.
soit “voici le serveur qui gère la zone DNS de raphaelguetta.fr, va lui demander”

On redemande donc :
dig @ns103.ovh.net. memo.raphaelguetta.fr
et on obtient enfin la réponse des serveurs OVH, qui sont effectivement ceux que j’utilise pour configurer mes (sous-)domaines :
memo.raphaelguetta.fr. 86400 IN A 82.64.166.200

Configuration

Config dans /etc/bind/.

Fichiers pré-remplis :
named.conf avec seulement includes
named.conf.options pour les options (attention, 1 seul groupe options { }; est autorisé, on ne peut pas le splitter dans différents fichiers)
named.conf.default-zones définit le fichier contenant les IP des serveurs racines (/usr/share/dns/root.hints) ; ainsi que les zones concernant localhost (DNS et rDNS)

Fichier pour une personnalisation du serveur :
named.conf.local
Par défaut, il est vide ; il set à définir des zones DNS custom.
Supposons que je souhaite définir, en local, un zone DNS sur le TLD .bidouille (qui n’existe pas officiellement) Je rentre dans ce fichier

zone "bidouille" {
        type master;
        file "/etc/bind/zones/db.bidouille";
};

Ainsi je définis que mon serveur DNS est “maître” (il fait autorité pour le TLD .bidouille, ce qui est nécessaire, car aucun autre serveur ne connaîtra ce TLD) Je définis que sa zone sera définie dans le fichier “/etc/bind/zones/db.bidouille”

Docker

version: '3'

services:

  bind9:
    image: internetsystemsconsortium/bind9:9.18
    restart: always
    container_name: bind9
    stdin_open: true
    tty: true
    ports:
      - 53:53/tcp
      - 53:53/udp
# For RNDC :
      - "127.0.0.1:953:953/tcp"
    volumes:
    volumes:
      - ./config/zones:/etc/bind/zones
      - ./config/named.conf.local:/etc/bind/named.conf.local
      - ./config/named.conf.options:/etc/bind/named.conf.options
      - ./cache/:/var/cache/bind/
      - ./lib/:/var/lib/bind/
      - ./log/:/var/log/

Connectivité des autres réseaux

Par défaut, bind n’accepte de répondre qu’aux requêtes qui proviennent du même hôte ou du même réseau.
Comme il esy dockerisé, il faut l’autoriser à résoudre depuis + de sources. Pour ceci, dans le bloc d’options, ajouter

Connectivité des autres conteneurs Docker

Si le serveur hôte s’utilise lui-même comme resolver dans /etc/resolv/conf, il faut qu’il s’appelle sur 127.0.0.1 ; s’il utilise son IP externe (par exemple 192.168.1.10 ), les conteneurs ne pourront probablement pas faire de résolution DNS.

Ceci semble venir du fait que les conteneurs récupèrent le resolveur interne de Docker (127.0.0.11), qui va lui-même récupérer les informations du resolv.conf de l’hôte. Et si il est défini en IP externe, cela ne fonctionne pas.

RNDC

Remote Name Daemon Control
port 953

Cache

01 Jan 0001, 00:00

Diskpart

select disk 8 uniqueid disk # pour lister

uniqueid disk AEF364B5 # pour changer