Compare commits
14 Commits
fe7f57dbc7
...
56352f2749
Author | SHA1 | Date |
---|---|---|
|
56352f2749 | |
|
482dabf05f | |
|
0cfc306351 | |
|
428110dad1 | |
|
8e0136d8dd | |
|
d6d9f5b14a | |
|
f5c7214107 | |
|
fa1fa6f1aa | |
|
18822822e3 | |
|
58bbe9051d | |
|
0c5f0e9770 | |
|
9101bf061a | |
|
5631e5a1ad | |
|
a88483a2a2 |
|
@ -0,0 +1,88 @@
|
|||
### ✅ **Résumé des commandes pour créer une clé GPG avec une sous-clé sur Debian**
|
||||
|
||||
---
|
||||
|
||||
## **1️⃣ Générer une clé principale avec une sous-clé automatique**
|
||||
```bash
|
||||
gpg --full-generate-key
|
||||
```
|
||||
- Choisissez **RSA and RSA (par défaut)**
|
||||
- Sélectionnez **4096 bits** (plus sécurisé)
|
||||
- Définissez la durée de validité (**ex: 2y pour 2 ans, 0 pour illimité**)
|
||||
- Renseignez **Nom, Email et un commentaire (facultatif)**
|
||||
- Définissez un **mot de passe sécurisé** pour protéger votre clé
|
||||
|
||||
🔹 **Résultat** :
|
||||
GPG crée **une clé principale** (pour signer/certifier) et **une sous-clé** (pour chiffrer les messages).
|
||||
|
||||
---
|
||||
|
||||
## **2️⃣ Vérifier la clé et la sous-clé**
|
||||
```bash
|
||||
gpg --list-keys
|
||||
```
|
||||
Vous devriez voir quelque chose comme :
|
||||
```
|
||||
pub rsa4096 2025-03-13 [SC]
|
||||
B8423648B0F61354C04C06CD45E9DF477F0EC7A5
|
||||
uid [ultimate] Donald Duck <donald@duck.com>
|
||||
sub rsa4096 2025-03-13 [E]
|
||||
```
|
||||
- `pub` = **Clé principale** (Sign & Certify)
|
||||
- `sub` = **Sous-clé** (Encryption)
|
||||
|
||||
---
|
||||
|
||||
## **3️⃣ Ajouter une nouvelle sous-clé (facultatif)**
|
||||
Si vous voulez **ajouter une sous-clé manuellement**, exécutez :
|
||||
```bash
|
||||
gpg --edit-key B8423648B0F61354C04C06CD45E9DF477F0EC7A5
|
||||
```
|
||||
Puis, dans l’interface interactive :
|
||||
```text
|
||||
addkey
|
||||
```
|
||||
- Choisissez **RSA (4096 bits)**
|
||||
- Sélectionnez **Usage : E pour chiffrement, S pour signature, A pour authentification**
|
||||
- Définissez la **durée de validité**
|
||||
- Confirmez avec `save`
|
||||
|
||||
---
|
||||
|
||||
## **4️⃣ Exporter votre clé publique pour la partager**
|
||||
```bash
|
||||
gpg --armor --export donald@duck.com > public-key.asc
|
||||
```
|
||||
📤 **Envoyez ce fichier** aux personnes qui doivent vérifier vos signatures.
|
||||
|
||||
---
|
||||
|
||||
## **5️⃣ Exporter votre clé privée pour la sauvegarder (⚠️ Sécurisez-la !)**
|
||||
```bash
|
||||
gpg --export-secret-keys --armor donald@duck.com > private-key.asc
|
||||
```
|
||||
📌 **Ne partagez jamais cette clé !** Stockez-la en lieu sûr.
|
||||
|
||||
---
|
||||
|
||||
## **6️⃣ Envoyer votre clé publique à un serveur de clés**
|
||||
```bash
|
||||
gpg --keyserver hkps://keys.openpgp.org --send-keys B8423648B0F61354C04C06CD45E9DF477F0EC7A5
|
||||
```
|
||||
Cela permet aux autres d’obtenir votre clé pour vérifier vos signatures.
|
||||
|
||||
---
|
||||
|
||||
### 🎯 **Récapitulatif des commandes essentielles**
|
||||
| **Action** | **Commande** |
|
||||
|---------------------------------|-------------|
|
||||
| Générer une clé GPG | `gpg --full-generate-key` |
|
||||
| Voir les clés | `gpg --list-keys` |
|
||||
| Voir les clés secrètes | `gpg --list-secret-keys` |
|
||||
| Modifier une clé existante | `gpg --edit-key <ID_CLÉ>` |
|
||||
| Ajouter une sous-clé | `addkey` (dans `gpg --edit-key`) |
|
||||
| Exporter la clé publique | `gpg --armor --export <email> > public-key.asc` |
|
||||
| Exporter la clé privée (backup) | `gpg --export-secret-keys --armor <email> > private-key.asc` |
|
||||
| Publier la clé sur un serveur | `gpg --keyserver hkps://keys.openpgp.org --send-keys <ID_CLÉ>` |
|
||||
|
||||
---
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Fichier de sortie
|
||||
OUTPUT_FILE=".directories.txt"
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
LICENSE="Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0"
|
||||
|
||||
# Recherche récursive de tous les fichiers contenant un shebang #!/bin/bash
|
||||
find . -type f -exec grep -l "^#!/bin/bash" {} \; | while read -r file; do
|
||||
echo "Traitement du fichier : $file"
|
||||
|
||||
# Vérifie si la deuxième et troisième ligne contiennent une mention de licence
|
||||
sed -i.bak -e '2,3d' "$file"
|
||||
|
||||
# Insère la nouvelle licence après le shebang
|
||||
sed -i "2i # $LICENSE" "$file"
|
||||
|
||||
echo "Licence mise à jour dans : $file"
|
||||
done
|
||||
|
||||
echo "Mise à jour terminée."
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Nom du fichier de sortie
|
||||
OUTPUT_FILE=".list_files.txt"
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2025 Cédric Abonnel / Cedrix
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,31 @@
|
|||
# License for Scripts and Notes
|
||||
|
||||
This work is licensed under the **Creative Commons Attribution - NonCommercial 4.0 International (CC BY-NC 4.0)**.
|
||||
|
||||
## Terms of Use
|
||||
|
||||
You are allowed to:
|
||||
- **Use** this work for personal and non-commercial purposes.
|
||||
- **Modify** and adapt this work for your own needs.
|
||||
- **Share** this work under the same license, provided you give credit to the original author.
|
||||
|
||||
### Attribution
|
||||
Any reuse, distribution, or modification of this work must include a clear mention of the original author.
|
||||
Example: *"Based on work by Cédric Abonnel / Cédrix under CC BY-NC 4.0 license"*.
|
||||
|
||||
## Commercial Use
|
||||
The use of this work in a **commercial or for-profit context** (including but not limited to businesses, paid services, and integration into commercial products) **is not allowed without specific agreement**.
|
||||
|
||||
If you wish to use this work for commercial purposes, please contact me to establish a suitable license.
|
||||
|
||||
## Disclaimer
|
||||
This work is provided "as is," without any warranty. The author shall not be held liable for any damages resulting from its use.
|
||||
|
||||
## Compliance with NIS2 Directive
|
||||
This license and the usage of the associated scripts and notes should be considered in the context of the **NIS2 Directive** (Network and Information Security Directive 2). Organizations using these materials within their cybersecurity frameworks should ensure compliance with NIS2, particularly regarding risk management, reporting obligations, and security measures. The author does not assume responsibility for compliance violations related to the integration or use of these materials.
|
||||
|
||||
Furthermore, while this license allows free non-commercial use, it does not exempt organizations from their legal obligations under **NIS2**. Users should assess whether modifications or adaptations of these materials impact their regulatory requirements and take necessary actions to remain compliant.
|
||||
|
||||
## Additional Information
|
||||
For more details on the CC BY-NC 4.0 license, visit:
|
||||
[https://creativecommons.org/licenses/by-nc/4.0/](https://creativecommons.org/licenses/by-nc/4.0/)
|
|
@ -0,0 +1,32 @@
|
|||
# Licence d'Utilisation des Scripts et Notes
|
||||
|
||||
Ce travail est sous licence **Creative Commons Attribution - Pas d'Utilisation Commerciale 4.0 International (CC BY-NC 4.0)**.
|
||||
|
||||
## Conditions d'Utilisation
|
||||
|
||||
Vous êtes autorisé à :
|
||||
- **Utiliser** ce travail à des fins personnelles et non commerciales.
|
||||
- **Modifier** et adapter ce travail pour vos propres besoins.
|
||||
- **Partager** ce travail sous la même licence, en mentionnant l'auteur original.
|
||||
|
||||
### Attribution
|
||||
Toute réutilisation, distribution ou modification de ce travail doit inclure une mention claire de l’auteur original.
|
||||
Exemple : *"Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0"*.
|
||||
|
||||
## Usage Commercial
|
||||
L'utilisation de ce travail dans un cadre **commercial ou lucratif** (incluant, mais sans s'y limiter, les entreprises, services payants, et intégration dans des produits commerciaux) **n'est pas autorisée sans accord spécifique**.
|
||||
|
||||
Si vous souhaitez utiliser ce travail à des fins commerciales, veuillez me contacter pour établir une licence adaptée.
|
||||
|
||||
## Exclusions de Garantie
|
||||
Ce travail est fourni "tel quel", sans garantie d'aucune sorte. L'auteur ne pourra être tenu responsable d'éventuels dommages liés à son utilisation.
|
||||
|
||||
## Conformité avec la Directive NIS2
|
||||
Cette licence et l’utilisation des scripts et notes associés doivent être considérées dans le cadre de la **Directive NIS2** (Network and Information Security Directive 2). Les organisations utilisant ces matériaux dans leur cadre de cybersécurité doivent s’assurer de leur conformité avec NIS2, en particulier en ce qui concerne la gestion des risques, les obligations de déclaration et les mesures de sécurité. L’auteur ne saurait être tenu responsable d’éventuelles violations de conformité résultant de l’intégration ou de l’utilisation de ces matériaux.
|
||||
|
||||
De plus, bien que cette licence autorise une utilisation libre à des fins non commerciales, elle n’exempte pas les organisations de leurs obligations légales au titre de la **NIS2**. Les utilisateurs doivent évaluer si les modifications ou adaptations de ces matériaux ont un impact sur leurs exigences réglementaires et prendre les mesures nécessaires pour rester conformes.
|
||||
|
||||
## Informations Complémentaires
|
||||
Pour plus d’informations sur la licence CC BY-NC 4.0, consultez :
|
||||
[https://creativecommons.org/licenses/by-nc/4.0/](https://creativecommons.org/licenses/by-nc/4.0/)
|
||||
|
|
@ -11,61 +11,14 @@ Chaque sous-dossier contient une famille de scripts destinés à l'installation
|
|||
|
||||
## ⚙️ Utilisation
|
||||
|
||||
### 1️⃣ Cloner le dépôt ou télécharger un dossier spécifique
|
||||
Vous pouvez cloner tout le dépôt ou télécharger uniquement un dossier particulier :
|
||||
|
||||
```bash
|
||||
git clone --depth 1 --filter=blob:none --sparse https://git.abonnel.fr/cedricAbonnel/notes-techniques.git
|
||||
cd notes-techniques
|
||||
git sparse-checkout add scripts/server-mail
|
||||
```
|
||||
Remplacez `server-mail` par le dossier correspondant au service que vous souhaitez installer, ou utilisez le script de déploiement ci-dessous.
|
||||
|
||||
### 2️⃣ Exécuter le script principal du service choisi
|
||||
|
||||
Exemple pour un serveur mail :
|
||||
```bash
|
||||
cd scripts/server-mail
|
||||
./setup_server.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Script de déploiement automatisé
|
||||
Ce dépôt propose un script permettant de télécharger uniquement les fichiers nécessaires sans cloner l'intégralité du projet.
|
||||
|
||||
### 🔹 1. Télécharger le script `fetch_scripts.sh`
|
||||
Utilisez la commande suivante :
|
||||
```bash
|
||||
wget -O fetch_scripts.sh "https://git.abonnel.fr/cedricAbonnel/notes-techniques/raw/branch/main/scripts/fetch_scripts.sh"
|
||||
chmod +x fetch_scripts.sh
|
||||
```
|
||||
|
||||
### 🔹 2. Exécuter le script
|
||||
Lancez le script pour récupérer les fichiers nécessaires :
|
||||
```bash
|
||||
./fetch_scripts.sh
|
||||
```
|
||||
Le script vous proposera une liste de dossiers disponibles. Sélectionnez ceux que vous souhaitez télécharger en entrant leurs numéros.
|
||||
|
||||
### 🔹 3. Exemple d'utilisation
|
||||
#### 📌 Interface de sélection
|
||||
```
|
||||
Sélectionnez les dossiers à télécharger :
|
||||
[ ] server-mail
|
||||
[ ] server-httpd
|
||||
|
||||
<Ok> <Annuler>
|
||||
```
|
||||
Seuls les dossiers cochés seront téléchargés.
|
||||
|
||||
---
|
||||
Consulter le document d'[installation](INSTALL.md).
|
||||
|
||||
## 🤝 Contribution
|
||||
|
||||
Vous pouvez ajouter de nouveaux scripts en respectant la structure existante et en documentant leur fonctionnement.
|
||||
Consulter le document de [contribution](CONTRIBUTING.md) pour plus d'informations.
|
||||
|
||||
## 📜 Licence
|
||||
|
||||
Ce projet est sous licence [MIT](LICENSE).
|
||||
Ce projet est sous licence [MIT](LICENSE). Vous trouverez plus d'explications dans la [note d'informations concernant la Licence MIT en français](LICENCE_FR.md).
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Vérifier si le script est exécuté en root
|
||||
check_root() {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Importer les fonctions communes
|
||||
source "$(dirname "$0")/../common/common_utils.sh"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Définition de l'URL du script
|
||||
SCRIPT_URL="https://git.abonnel.fr/cedricAbonnel/notes-techniques/raw/branch/main/scripts/fetch_scripts.sh"
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
add_dns_entry.sh
|
||||
find_hostname.sh
|
||||
get_first_free_ip.sh
|
||||
remove_dns_entry.sh
|
||||
search_entry.sh
|
||||
setup_dhcp.sh
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Importer les fonctions communes
|
||||
source "$(dirname "$0")/../common/common_utils.sh"
|
||||
|
@ -25,16 +26,25 @@ IP="$1"
|
|||
shift # Supprime le premier argument pour ne garder que les hostnames
|
||||
HOSTNAMES=("$@")
|
||||
|
||||
# Fonction pour obtenir le nom de domaine de la machine
|
||||
get_domain_name() {
|
||||
local domain=$(dnsdomainname)
|
||||
echo "$domain"
|
||||
# Fonction pour obtenir le PTR record formaté
|
||||
get_ptr_record() {
|
||||
local ip="$1"
|
||||
local reversed_ip=$(echo "$ip" | awk -F. '{print $4"."$3"."$2"."$1".in-addr.arpa"}')
|
||||
echo "$reversed_ip"
|
||||
}
|
||||
|
||||
# Fonction pour vérifier si un PTR existe
|
||||
is_ptr_registered() {
|
||||
local ip="$1"
|
||||
local ptr=$(get_ptr_record "$ip")
|
||||
grep -q "ptr-record=$ptr" "$DNSMASQ_CONF"
|
||||
return $?
|
||||
}
|
||||
|
||||
# Fonction pour obtenir le FQDN d'un hostname
|
||||
get_fqdn() {
|
||||
local hostname="$1"
|
||||
local domain_name=$(get_domain_name)
|
||||
local domain_name=$(dnsdomainname)
|
||||
if [[ -n "$domain_name" ]]; then
|
||||
echo "$hostname.$domain_name"
|
||||
else
|
||||
|
@ -42,6 +52,14 @@ get_fqdn() {
|
|||
fi
|
||||
}
|
||||
|
||||
|
||||
# Fonction pour obtenir le FQDN réel avec `host`
|
||||
get_actual_fqdn() {
|
||||
local ip="$1"
|
||||
local actual_fqdn=$(host "$ip" | awk '/domain name pointer/ {print $5}' | sed 's/\.$//')
|
||||
echo "$actual_fqdn"
|
||||
}
|
||||
|
||||
# Fonction pour vérifier si un hostname est déjà enregistré
|
||||
is_hostname_registered() {
|
||||
local hostname="$1"
|
||||
|
@ -51,11 +69,12 @@ is_hostname_registered() {
|
|||
|
||||
# Variable pour suivre si un changement a été fait
|
||||
MODIFIED=0
|
||||
MODIFIED_BY_HOSTNAME=0
|
||||
MODIFIED_BY_FQDN=0
|
||||
|
||||
# Vérifier si l'IP existe déjà dans le fichier
|
||||
EXISTING_HOSTNAMES=($(grep -E "address=/[^ ]+/$IP$" "$DNSMASQ_CONF" | sed -E "s/address=\/([^\/]+)\/$IP/\1/"))
|
||||
|
||||
|
||||
if [[ ${#EXISTING_HOSTNAMES[@]} -gt 0 ]]; then
|
||||
echo "L'adresse IP $IP existe déjà avec les noms suivants : ${EXISTING_HOSTNAMES[*]}"
|
||||
else
|
||||
|
@ -70,19 +89,85 @@ for HOSTNAME in "${HOSTNAMES[@]}"; do
|
|||
if is_hostname_registered "$FQDN"; then
|
||||
echo "L'association $FQDN -> $IP existe déjà."
|
||||
else
|
||||
read -p "Le FQDN $FQDN n'est pas dans la liste. Voulez-vous l'ajouter ? (o/n) " REPLY
|
||||
read -t 5 -p "Le FQDN $FQDN n'est pas dans la liste. Voulez-vous l'ajouter ? (o/N) 5s " REPLY
|
||||
# Si aucune entrée n'est faite dans le délai imparti, on met "n" par défaut
|
||||
if [[ -z "$REPLY" ]]; then
|
||||
REPLY="n"
|
||||
echo -e "\nTemps écoulé. Réponse par défaut : n"
|
||||
fi
|
||||
if [[ "$REPLY" =~ ^[Oo]$ ]]; then
|
||||
echo "address=/$FQDN/$IP" >> "$DNSMASQ_CONF"
|
||||
echo "Ajout de : $FQDN -> $IP"
|
||||
MODIFIED=1
|
||||
MODIFIED_BY_FQDN=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if is_hostname_registered "$HOSTNAME"; then
|
||||
echo "L'association $HOSTNAME -> $IP existe déjà."
|
||||
else
|
||||
echo "address=/$HOSTNAME/$IP" >> "$DNSMASQ_CONF"
|
||||
echo "Ajout de : $HOSTNAME -> $IP"
|
||||
MODIFIED=1
|
||||
MODIFIED_BY_HOSTNAME=1
|
||||
fi
|
||||
|
||||
# Vérification et ajout du PTR record
|
||||
PTR_RECORD=$(get_ptr_record "$IP")
|
||||
EXISTING_PTR=$(grep -E "ptr-record=$PTR_RECORD," "$DNSMASQ_CONF" | cut -d'=' -f2)
|
||||
|
||||
if [[ $MODIFIED -eq 1 ]]; then
|
||||
# Déterminer $ACTUAL_FQDN
|
||||
test $MODIFIED_BY_HOSTNAME -eq 1 && ACTUAL_FQDN=$HOSTNAME
|
||||
if is_hostname_registered "$FQDN"; then
|
||||
ACTUAL_FQDN=$FQDN
|
||||
fi
|
||||
test $MODIFIED_BY_FQDN -eq 1 && ACTUAL_FQDN=$FQDN
|
||||
else
|
||||
ACTUAL_FQDN=""
|
||||
|
||||
if is_hostname_registered "$HOSTNAME"; then
|
||||
ACTUAL_FQDN=$HOSTNAME
|
||||
fi
|
||||
if is_hostname_registered "$FQDN"; then
|
||||
ACTUAL_FQDN=$FQDN
|
||||
fi
|
||||
fi
|
||||
|
||||
# Si ACTUAL_FQDN n'est pas vide, alors
|
||||
if [[ -n "$ACTUAL_FQDN" ]]; then
|
||||
# Si l'enregistrement actuel ne correspond pas déjà à $ACTUAL_FQDN, procéder à la mise à jour
|
||||
if [[ "$(get_actual_fqdn "$IP")" != "$ACTUAL_FQDN" ]]; then
|
||||
if [[ -n "$EXISTING_PTR" ]]; then
|
||||
if [[ "$EXISTING_PTR" != "ptr-record=$PTR_RECORD,$ACTUAL_FQDN" ]]; then
|
||||
read -t 5 -p "Voulez-vous le remplacer ? (o/N) 5s " REPLY
|
||||
if [[ -z "$REPLY" ]]; then
|
||||
REPLY="n"
|
||||
echo -e "\nTemps écoulé. Réponse par défaut : n"
|
||||
fi
|
||||
if [[ "$REPLY" =~ ^[Oo]$ ]]; then
|
||||
sed -i "/ptr-record=$PTR_RECORD/d" "$DNSMASQ_CONF"
|
||||
echo "ptr-record=$PTR_RECORD,${ACTUAL_FQDN}" >> "$DNSMASQ_CONF"
|
||||
echo "PTR mis à jour : $PTR_RECORD -> ${ACTUAL_FQDN}"
|
||||
MODIFIED=1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "ptr-record=$PTR_RECORD,${ACTUAL_FQDN}" >> "$DNSMASQ_CONF"
|
||||
echo "Ajout du PTR : $PTR_RECORD -> ${ACTUAL_FQDN}"
|
||||
MODIFIED=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
|
||||
|
||||
# Redémarrer dnsmasq seulement si des changements ont été faits
|
||||
if [[ $MODIFIED -eq 1 ]]; then
|
||||
systemctl restart dnsmasq
|
||||
echo "Redémarrage de dnsmasq effectué."
|
||||
else
|
||||
echo "Aucune modification nécessaire."
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,103 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Importer les fonctions communes
|
||||
source "$(dirname "$0")/../common/common_utils.sh"
|
||||
|
||||
# Vérifier si le script est exécuté en root
|
||||
check_root
|
||||
|
||||
# Vérifie si une IP est fournie
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <IP>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IP="$1"
|
||||
|
||||
echo "🔍 Recherche du nom d'hôte pour l'IP : $IP"
|
||||
|
||||
# Fonction pour vérifier si une commande est disponible
|
||||
command_exists() {
|
||||
command -v "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# Détection du serveur DNS en prenant en compte dnsmasq et fallback sur resolv.conf
|
||||
get_dns_server() {
|
||||
local dns_server=""
|
||||
|
||||
if command_exists resolvectl; then
|
||||
dns_server=$(resolvectl dns | awk '/^Global:/ {print $2; exit}')
|
||||
fi
|
||||
|
||||
if [ -z "$dns_server" ] && command_exists dnsmasq; then
|
||||
dns_server=$(ss -tulpn | grep dnsmasq | awk '{print $5}' | cut -d: -f1 | head -n1)
|
||||
fi
|
||||
|
||||
if [ -z "$dns_server" ] && [ -f /etc/resolv.conf ]; then
|
||||
dns_server=$(grep -m1 '^nameserver' /etc/resolv.conf | awk '{print $2}')
|
||||
fi
|
||||
|
||||
echo "${dns_server:-9.9.9.9}" # Utilisation d'un fallback 9.9.9.9 si aucun DNS trouvé
|
||||
}
|
||||
|
||||
DNS_SERVER=$(get_dns_server)
|
||||
echo "🛜 Serveur DNS détecté : $DNS_SERVER"
|
||||
|
||||
# 1️⃣ Test LLMNR (Link-Local Multicast Name Resolution)
|
||||
if command_exists resolvectl; then
|
||||
HOSTNAME_LLMNR=$(resolvectl query "$IP" 2>/dev/null | grep -oP '(?<=Name:\s).*' | head -n1)
|
||||
if [ -n "$HOSTNAME_LLMNR" ]; then
|
||||
echo "✅ LLMNR: $HOSTNAME_LLMNR"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "⚠ LLMNR non disponible (resolvectl absent)"
|
||||
fi
|
||||
|
||||
# 2️⃣ Test mDNS (Multicast DNS / Avahi)
|
||||
if command_exists avahi-resolve; then
|
||||
HOSTNAME_MDNS=$(avahi-resolve -a "$IP" 2>/dev/null | awk '{print $2}')
|
||||
if [ -n "$HOSTNAME_MDNS" ]; then
|
||||
echo "✅ mDNS (Avahi): $HOSTNAME_MDNS"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "⚠ mDNS non disponible (avahi-resolve absent)"
|
||||
fi
|
||||
|
||||
# 3️⃣ Vérification du cache ARP
|
||||
if command_exists arp; then
|
||||
HOSTNAME_ARP=$(arp -a | grep "$IP" | awk '{print $1}')
|
||||
if [ -n "$HOSTNAME_ARP" ]; then
|
||||
echo "✅ ARP: $HOSTNAME_ARP"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "⚠ ARP non disponible"
|
||||
fi
|
||||
|
||||
# 4️⃣ Vérification via NetBIOS (Windows/Samba)
|
||||
if command_exists nmblookup; then
|
||||
HOSTNAME_NETBIOS=$(nmblookup -A "$IP" 2>/dev/null | grep -m1 '<00>' | awk '{print $1}')
|
||||
if [ -n "$HOSTNAME_NETBIOS" ]; then
|
||||
echo "✅ NetBIOS: $HOSTNAME_NETBIOS"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "⚠ NetBIOS non disponible (nmblookup absent)"
|
||||
fi
|
||||
|
||||
# 5️⃣ Scan réseau avec Nmap pour identifier l'hôte
|
||||
if command_exists nmap; then
|
||||
HOSTNAME_NMAP=$(nmap --dns-servers "$DNS_SERVER" -sP "$IP" 2>/dev/null | grep "Nmap scan report" | awk '{print $5}')
|
||||
if [ -n "$HOSTNAME_NMAP" ]; then
|
||||
echo "✅ Nmap: $HOSTNAME_NMAP"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "⚠ Nmap non disponible"
|
||||
fi
|
||||
|
||||
echo "❌ Aucune correspondance trouvée."
|
||||
exit 1
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Déterminer l'interface réseau active (exclure loopback)
|
||||
INTERFACE=$(ip route | awk '/default/ {print $5; exit}')
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Importer les fonctions communes
|
||||
source "$(dirname "$0")/../common/common_utils.sh"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Fichier contenant les enregistrements
|
||||
FILE="/etc/dnsmasq.d/custom_hosts"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Importer les fonctions communes
|
||||
source "$(dirname "$0")/../common/common_utils.sh"
|
||||
|
@ -10,6 +11,9 @@ check_root
|
|||
if ! command -v dnsmasq &> /dev/null; then
|
||||
echo "Installation de dnsmasq..."
|
||||
apt update && apt install -y dnsmasq
|
||||
echo "Installation d'outils réseau..."
|
||||
apt install -y systemd-resolved avahi-utils net-tools smbclient nmap
|
||||
systemctl disable --now avahi-daemon
|
||||
else
|
||||
echo "dnsmasq est déjà installé."
|
||||
fi
|
||||
|
@ -143,6 +147,16 @@ EOF
|
|||
# Redémarrer dnsmasq pour appliquer les modifications
|
||||
systemctl restart dnsmasq
|
||||
|
||||
# Modifier /etc/resolv.conf
|
||||
echo 'nameserver 127.0.0.1' > /etc/resolv.conf
|
||||
echo "Configuration DNS mise à jour sur 127.0.0.1"
|
||||
# Redémarrer les services nécessaires
|
||||
echo "Redémarrage des services..."
|
||||
systemctl restart dnsmasq 2>/dev/null && echo "dnsmasq redémarré."
|
||||
systemctl restart systemd-resolved 2>/dev/null && echo "systemd-resolved redémarré."
|
||||
systemctl restart networking 2>/dev/null && echo "networking redémarré."
|
||||
systemctl restart NetworkManager 2>/dev/null && echo "NetworkManager redémarré."
|
||||
|
||||
echo "Configuration terminée avec succès!"
|
||||
echo "Serveur DHCP/DNS fonctionnel sur $IP_SERVEUR"
|
||||
echo "Les clients recevront une IP entre $DHCP_START et $DHCP_END et seront associés au domaine $DOMAINE"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
DOMAIN="$1"
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
DOMAIN="$1"
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Importer les fonctions communes
|
||||
source "$(dirname "$0")/../common/common_utils.sh"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
POSTFIX_ALIASES="/etc/postfix/virtual_aliases"
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Définition des variables
|
||||
MAILDIR="/var/mail/vhosts"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
POSTFIX_ALIASES="/etc/postfix/virtual_aliases"
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
DOVECOT_USERS="/etc/dovecot/users"
|
||||
MAILDIR="/var/mail/vhosts"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
POSTFIX_ALIASES="/etc/postfix/virtual_aliases"
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
MAILDIR="/var/mail/vhosts"
|
||||
POSTFIX_CONFIG="/etc/postfix/virtual_domains"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
DOVECOT_USERS="/etc/dovecot/users"
|
||||
MAILDIR="/var/mail/vhosts"
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Récupérer le nom d’hôte complet (FQDN)
|
||||
SERVER_NAME=$(hostname -f) # Privilégier hostname -f
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
echo "=== Liste des alias et redirections ==="
|
||||
cat /etc/postfix/virtual_aliases
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
echo "=== Liste des domaines gérés ==="
|
||||
cat /etc/postfix/virtual_domains
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
echo "=== Liste des utilisateurs ==="
|
||||
cat /etc/dovecot/users | cut -d: -f1
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
|
||||
|
||||
# Importer les fonctions communes
|
||||
source "$(dirname "$0")/../common/common_utils.sh"
|
||||
|
|
Loading…
Reference in New Issue