#!/bin/bash
# ==========================================================
# IDEOLAB - HTTPS Basic Protection Script
# Author : IDEO-Lab
# Purpose: Limit HTTPS abuse safely (iptables)
# ==========================================================

# Sérité arrêr le script àa moindre erreur
set -e

echo "=== IDEOLAB HTTPS PROTECTION ==="

# ----------------------------------------------------------
# 1) Autoriser les connexions dé éblies
# ----------------------------------------------------------
# IMPORTANT :
# - Sans cette rèe, Internet ne fonctionne plus
# - On autorise les rénses aux connexions existantes
# ----------------------------------------------------------

iptables -C INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 2>/dev/null \
|| iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

echo "[OK] Connexions ESTABLISHED autorisé"

# ----------------------------------------------------------
# 2) Limiter le nombre de connexions HTTPS par IP
# ----------------------------------------------------------
# Principe :
# - Un humain ouvre 2 à connexions
# - Un bot peut en ouvrir des dizaines
# - Au-delàe 20 connexions simultané -> DROP
# ----------------------------------------------------------

iptables -C INPUT -p tcp --dport 443 \
  -m connlimit --connlimit-above 20 --connlimit-mask 32 -j DROP 2>/dev/null \
  || iptables -A INPUT -p tcp --dport 443 \
    -m connlimit --connlimit-above 20 --connlimit-mask 32 -j DROP

    echo "[OK] Limite de connexions HTTPS par IP activé(max 20)"

    # ----------------------------------------------------------
    # 3) Limiter le rythme de nouvelles connexions HTTPS
    # ----------------------------------------------------------
    # Principe :
    # - Empêe les rafales de connexions
    # - Autorise 30 connexions/minute
    # - Pic initial tolé (burst 50)
    # ----------------------------------------------------------

    iptables -C INPUT -p tcp --dport 443 -m state --state NEW \
      -m limit --limit 30/minute --limit-burst 50 -j ACCEPT 2>/dev/null \
      || iptables -A INPUT -p tcp --dport 443 -m state --state NEW \
        -m limit --limit 30/minute --limit-burst 50 -j ACCEPT

        echo "[OK] Rate-limit HTTPS activé30/min, burst 50)"

        # ----------------------------------------------------------
        # 4) Affichage des rèes actives
        # ----------------------------------------------------------

        echo
        echo "=== RÈLES IPTABLES ACTIVES (INPUT) ==="
        iptables -L INPUT -n --line-numbers

        echo
        echo "=== Protection HTTPS IDEOLAB ACTIVE ==="
        
