Initial import: Alpine cloud-init configs

This commit is contained in:
betty6970
2025-12-27 19:23:08 +00:00
commit f4d86c0489
4 changed files with 254 additions and 0 deletions

2
alpine/meta-data Normal file
View File

@@ -0,0 +1,2 @@
instance-id: 7f99e7b4-5aae-cc1c-61fa-a66f9ebe6844

34
alpine/scripts/bojemoiVM.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/ash
# wget http://bojemoi.me/cloud-init/alpine/bojemoiVM.sh -O -| ash
echo "-------------------------------------------------------"
echo " etape 2 : vous venez d'installer votre VM sous alpine "
echo " maintemamt vous installez cloud-init"
echo "-------------------------------------------------------"
setup-apkrepos -cf
apk update
apk upgrade
apk add xe-guest-utilities
rc-update add xe-guest-utilities default
/etc/init.d/xe-guest-utilities start
apk add cloud-init
rc-update add cloud-init default
rm /etc/cloud/cloud.cfg.d/10-datasource.cfg
wget http://bojemoi.me/cloud-init/cloud.cfg.d/10_datasource.cfg -O /etc/cloud/cloud.cfg.d/10-datasource.cfg
#
# # Vérifiez si la commande scp a réussi
if [ $? -eq 0 ]; then
echo "Les fichiers ont été copiés avec succès."
else
echo "Une erreur s'est produite lors de la copie des fichiers."
exit 1
fi
#
setup-cloud-init
cloud-init clean
#reboot

View File

@@ -0,0 +1,86 @@
#!/bin/sh
# Script d'installation de Suricata avec règles sous Alpine Linux
# Auteur: Claude
# Date: 14 Avril 2025
set -e
echo "============================================"
echo "Installation de Suricata sous Alpine Linux"
echo "============================================"
# Vérification si l'utilisateur est root
if [ "$(id -u)" -ne 0 ]; then
echo "Ce script doit être exécuté en tant que root"
exit 1
fi
# Mise à jour des dépôts
echo "[+] Mise à jour des dépôts..."
apk update
# Installation des dépendances
echo "[+] Installation des dépendances..."
apk add --no-cache \
suricata \
python3 \
py3-pip \
curl \
wget \
ca-certificates \
jq \
tar \
libnfnetlink \
libnetfilter_queue \
libpcap \
libelf \
yaml \
pcre \
file-dev \
hiredis \
jansson \
git
# Installation de suricata-update via pip
echo "[+] Installation de suricata-update..."
pip3 install --no-cache-dir suricata-update
# Création des répertoires nécessaires
echo "[+] Création des répertoires nécessaires..."
mkdir -p /etc/suricata/rules
mkdir -p /var/lib/suricata/rules
mkdir -p /var/log/suricata
# Sauvegarde de la configuration originale si elle existe
if [ -f /etc/suricata/suricata.yaml ]; then
echo "[+] Sauvegarde de la configuration existante..."
cp /etc/suricata/suricata.yaml /etc/suricata/suricata.yaml.bak
fi
# Configuration de base de Suricata
echo "[+] Configuration de Suricata..."
cat > /etc/suricata/suricata.yaml << 'EOF'
%YAML 1.1
---
# Voici la configuration de base pour Suricata
vars:
# Plus de definición de variables específicas
address-groups:
HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"
EXTERNAL_NET: "!$HOME_NET"
HTTP_SERVERS: "$HOME_NET"
SMTP_SERVERS: "$HOME_NET"
SQL_SERVERS: "$HOME_NET"
DNS_SERVERS: "$HOME_NET"
TELNET_SERVERS: "$HOME_NET"
AIM_SERVERS: "$EXTERNAL_NET"
port-groups:
HTTP_PORTS: "80"
SHELLCODE_PORTS: "!80"
ORACLE_PORTS: 1521
SSH_PORTS: 22
# Configuration des répertoires par défaut
default-rule-path: /var/lib/suricata/rules
rule-files:
- suricata.rules

132
alpine/user-data Executable file
View File

@@ -0,0 +1,132 @@
#cloud-config
# vim: syntax=yaml
hostname: meta-76
manage_etc_hosts: false
groups:
- meta: yoh1
# Configuration des utilisateurs
users:
- default
- name: yoh1
sudo: ALL=(ALL) NOPASSWD:ALL
groups: meta
passwd: $6$Cvg/O/hpkWgpCvLd$z6awusyCE39i.JzjNfDvJPbxyEHu4rXSVUjQZJL8OGKOWpQNfe3iS1S7/7zstZcHhIIy.VzoC/V5YLQ7SYFA.0
lock_passwd: false
- name: docker
sudo: ALL=(ALL) NOPASSWD:ALL
groups: meta
passwd: $6$dMo0oCFfhDf2velN$cq258FKXOjyFTZR64Uow5m/LWdaoU5peYaqIJPE0dpMiKRCo.2JRtVnuRu8.dWZaghkpnfnfaC.lclWNk1d6t.
lock_passwd: false
# Mise à jour des paquets et installation des dépendances
package_update: true
package_upgrade: true
packages:
- fail2ban
- postgresql14-contrib
- nmap
- docker
- docker-cli-compose
- xe-guest-utilities
# Commandes avant boot
bootcmd:
- modprobe bonding
runcmd:
- rc-update add docker default
- rc-update add xe-guest-utilities default
- rc-service docker start
- rc-service xe-guest-utilities start
- rc-update add local boot
# - /etc/local.d/bonding-setup.start
# Attendre que le réseau soit stable
- sleep 5
# Configurer Docker
- rc-update add docker boot
- rc-service docker start
# Initialiser Swarm
- docker swarm init --advertise-addr bond0 || logger "Swarm already initialized or failed"
# Logs de diagnostic
- ip addr > /var/log/network-post-init.log
- ip route > /var/log/routes-post-init.log
- cat /proc/net/bonding/bond0 > /var/log/bond-post-init.log 2>&1 || echo "Bond not ready" > /var/log/bond-post-init.log
- docker info > /var/log/docker-info.log 2>&1
write_files:
- path: /etc/motd
content: |
Bienvenue sur bojemoi
# Fichiers de configuration
write_files:
- path: /etc/modules
content: |
bonding
xen_netfront
append: true
- path: /etc/modprobe.d/bonding.conf
content: |
alias bond0 bonding
options bonding mode=1 miimon=100 use_carrier=1
permissions: '0644'
- path: /etc/local.d/bonding-setup.start
permissions: '0755'
content: |
#!/bin/sh
# Setup bonding
logger "Starting bonding setup"
# Charger le module si pas déjà fait
modprobe bonding 2>/dev/null || true
# Créer bond0 si n'existe pas
if ! ip link show bond0 >/dev/null 2>&1; then
ip link add bond0 type bond mode active-backup miimon 100 primary eth0
logger "Bond0 created"
fi
# S'assurer que les interfaces sont down
ip link set eth0 down 2>/dev/null
ip link set eth1 down 2>/dev/null
# Attacher les interfaces au bond
ip link set eth0 master bond0 2>/dev/null || echo "+eth0" > /sys/class/net/bond0/bonding/slaves
ip link set eth1 master bond0 2>/dev/null || echo "+eth1" > /sys/class/net/bond0/bonding/slaves
# Activer les interfaces
ip link set eth0 up
ip link set eth1 up
ip link set bond0 up
logger "Bonding setup complete"
# Log status
sleep 2
cat /proc/net/bonding/bond0 > /var/log/bond0-init.log 2>&1
- path: /etc/docker/daemon.json
content: |
{
"metrics-addr": "0.0.0.0:9323",
"experimental": true,
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
permissions: '0644'
# Afficher un message final à l'utilisateur après l'installation
final_message: "L'installation est terminée avec succès ! Accédez à l'interface {ip}"