Maj sur playbook & sh
This commit is contained in:
parent
bb1bd13d41
commit
b9e49d3933
@ -10,8 +10,8 @@ fi
|
||||
IP_SERVER=$(zenity --entry --title "Configuration Serveur" --text "Entrez l'adresse IP du serveur :")
|
||||
SSH_USER=$(zenity --entry --title "Configuration Serveur" --text "Entrez l'utilisateur SSH :")
|
||||
SSH_PASS=$(zenity --password --title "Configuration Serveur" --text "Entrez le mot de passe SSH :")
|
||||
SSH_PORT=$(zenity --entry --title "Configuration Serveur" --text "Entrez le port SSH (ex: 22) :" --entry-text "22")
|
||||
MATTERMOST_WEBHOOK=$(zenity --entry --title "Mattermost" --text "Entrez l'URL du webhook Mattermost :")
|
||||
SSH_PORT=$(zenity --entry --title "Configuration Serveur" --text "Entrez le port SSH (ex: 22) :" --entry-text "")
|
||||
MATTERMOST_WEBHOOK=$(zenity --entry --title "Mattermost" --text "Entrez l'URL du webhook Mattermost :" --entry-text "https://mattermost.yeagerdan.com/hooks/c5nmzrf64fd33b1iqnm6zmt48o")
|
||||
|
||||
# Vérifie si les variables sont vides
|
||||
if [[ -z "$IP_SERVER" || -z "$SSH_USER" || -z "$SSH_PASS" || -z "$SSH_PORT" || -z "$MATTERMOST_WEBHOOK" ]]; then
|
||||
@ -19,14 +19,27 @@ if [[ -z "$IP_SERVER" || -z "$SSH_USER" || -z "$SSH_PASS" || -z "$SSH_PORT" || -
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Crée le fichier d'inventaire dynamique
|
||||
cat > inventory.ini <<EOL
|
||||
# Crée un fichier d'inventaire temporaire
|
||||
INVENTORY_FILE=$(mktemp)
|
||||
|
||||
# Crée le fichier d'inventaire avec les informations fournies
|
||||
cat > "$INVENTORY_FILE" <<EOL
|
||||
[servers]
|
||||
$IP_SERVER ansible_host=$IP_SERVER ansible_user=$SSH_USER ansible_password=$SSH_PASS ansible_port=$SSH_PORT ansible_become_password=$SSH_PASS
|
||||
EOL
|
||||
|
||||
# Lancer le playbook Ansible
|
||||
ansible-playbook -i inventory.ini playbooks/fail2ban.yml --extra-vars "ssh_port=$SSH_PORT mattermost_webhook=$MATTERMOST_WEBHOOK"
|
||||
ansible-playbook -i "$INVENTORY_FILE" playbooks/fail2ban.yml --extra-vars "ssh_port=$SSH_PORT mattermost_webhook=$MATTERMOST_WEBHOOK"
|
||||
|
||||
# Supprimer le fichier temporaire après utilisation
|
||||
rm -f "$INVENTORY_FILE"
|
||||
|
||||
# Afficher un message de succès
|
||||
zenity --info --title "Installation terminée" --text "Fail2ban a été installé et configuré sur $IP_SERVER."
|
||||
|
||||
if [ ! -f "$INVENTORY_FILE" ]; then
|
||||
echo "Le fichier inventaire a été supprimé avec succès."
|
||||
else
|
||||
echo "Erreur : le fichier inventaire n'a pas pu être supprimé."
|
||||
fi
|
||||
|
||||
|
||||
@ -1,43 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Demander les informations avec Zenity
|
||||
USER_INPUT=$(zenity --forms --title="Configuration Fail2ban" \
|
||||
--text="Remplissez les informations pour l'installation" \
|
||||
--add-entry="Adresse IP du serveur" \
|
||||
--add-entry="Utilisateur SSH" \
|
||||
--add-entry="Mot de passe SSH" \
|
||||
--add-entry="Port SSH" \
|
||||
--add-entry="Webhook Mattermost" \
|
||||
--separator=",")
|
||||
|
||||
# Vérifier si l'utilisateur a annulé
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Opération annulée."
|
||||
exit 1
|
||||
# Vérifie si Zenity est installé, sinon l'installe
|
||||
if ! command -v zenity &> /dev/null; then
|
||||
echo "Zenity non trouvé, installation..."
|
||||
sudo apt update && sudo apt install -y zenity
|
||||
fi
|
||||
|
||||
# Extraire les valeurs
|
||||
IP_SERVER=$(echo "$USER_INPUT" | cut -d',' -f1)
|
||||
SSH_USER=$(echo "$USER_INPUT" | cut -d',' -f2)
|
||||
SSH_PASS=$(echo "$USER_INPUT" | cut -d',' -f3)
|
||||
SSH_PORT=$(echo "$USER_INPUT" | cut -d',' -f4)
|
||||
MATTERMOST_WEBHOOK=$(echo "$USER_INPUT" | cut -d',' -f5)
|
||||
# Demande les infos via Zenity
|
||||
IP_SERVER=$(zenity --entry --title "Configuration Serveur" --text "Entrez l'adresse IP du serveur :")
|
||||
SSH_USER=$(zenity --entry --title "Configuration Serveur" --text "Entrez l'utilisateur SSH :")
|
||||
SSH_PASS=$(zenity --password --title "Configuration Serveur" --text "Entrez le mot de passe SSH :")
|
||||
SSH_PORT=$(zenity --entry --title "Configuration Serveur" --text "Entrez le port SSH (ex: 22) :" --entry-text "")
|
||||
MATTERMOST_WEBHOOK=$(zenity --entry --title "Mattermost" --text "Entrez l'URL du webhook Mattermost :" --entry-text "https://mattermost.yeagerdan.com/hooks/c5nmzrf64fd33b1iqnm6zmt48o")
|
||||
|
||||
# Vérifier que toutes les valeurs sont renseignées
|
||||
# Vérifie si les variables sont vides
|
||||
if [[ -z "$IP_SERVER" || -z "$SSH_USER" || -z "$SSH_PASS" || -z "$SSH_PORT" || -z "$MATTERMOST_WEBHOOK" ]]; then
|
||||
zenity --error --text="Toutes les informations doivent être remplies !" --width=300
|
||||
zenity --error --title "Erreur" --text "Toutes les informations sont requises !"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Générer un fichier d'inventaire dynamique
|
||||
# Crée le fichier d'inventaire dynamique
|
||||
cat > inventory.ini <<EOL
|
||||
[servers]
|
||||
$IP_SERVER ansible_host=$IP_SERVER ansible_user=$SSH_USER ansible_password=$SSH_PASS ansible_port=$SSH_PORT ansible_become_password=$SSH_PASS
|
||||
EOL
|
||||
|
||||
# Lancer le playbook Ansible avec les variables dynamiques
|
||||
# Lancer le playbook Ansible
|
||||
ansible-playbook -i inventory.ini playbooks/fail2ban.yml --extra-vars "ssh_port=$SSH_PORT mattermost_webhook=$MATTERMOST_WEBHOOK"
|
||||
|
||||
# Informer l'utilisateur que l'installation est terminée
|
||||
zenity --info --text="Fail2ban a été installé et configuré sur $IP_SERVER !" --width=300
|
||||
zenity --info --title "Installation terminée" --text "Fail2ban a été installé et configuré sur $IP_SERVER."
|
||||
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
[servers]
|
||||
192.168.1.78 ansible_host=192.168.1.78 ansible_user=smauro ansible_password=)_:&o=Idf=W}Guv4Tb(U[v<O ansible_port=22 ansible_become_password=)_:&o=Idf=W}Guv4Tb(U[v<O
|
||||
192.168.1.248 ansible_host=192.168.1.248 ansible_user=smauro ansible_password=/f=b,;f;4-*1f}4q2&gB#(1{ ansible_port=22 ansible_become_password='/f=b,;f;4-*1f}4q2&gB#(1{'"
|
||||
|
||||
@ -2,9 +2,10 @@
|
||||
- name: Install and configure Fail2ban with Mattermost notifications
|
||||
hosts: servers
|
||||
become: yes
|
||||
gather_facts: no
|
||||
vars:
|
||||
ssh_port: "22"
|
||||
mattermost_webhook: ""
|
||||
ssh_port: "{{ ssh_port }}"
|
||||
mattermost_webhook: "{{ mattermost_webhook }}"
|
||||
|
||||
tasks:
|
||||
- name: Install Fail2ban
|
||||
@ -47,7 +48,7 @@
|
||||
[Definition]
|
||||
actionstart =
|
||||
actionstop =
|
||||
actionban = curl -X POST -H "Content-Type: application/json" --data "{\"text\": \"🚨 *$(hostname)* : **Fail2ban** a banni l'IP **<ip>** après trop d'échecs SSH 🚨\"}" {{ mattermost_webhook }}
|
||||
actionban = curl -X POST -H "Content-Type: application/json" --data "{\"text\": \"🚨 *$(hostname -s)* : **Fail2ban** a banni l'IP **<ip>** après trop d'échecs SSH 🚨\"}" "https://mattermost.yeagerdan.com/hooks/c5nmzrf64fd33b1iqnm6zmt48o"
|
||||
actionunban =
|
||||
notify: Restart Fail2ban
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user