mirror of
https://github.com/deunix-educ/Fail2banMqttActionBanishment.git
synced 2026-08-24 03:11:58 +02:00
First commit
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
|
||||
# firewall-filters.conf — règles spécifiques aux services
|
||||
# Chargé par fw.sh après les protections de base.
|
||||
# Variables disponibles : $ETH_IF, $VPN_IF, $WG_IF
|
||||
|
||||
IP="x.x.x.x"
|
||||
VPN_NET="10.8.0.0/24"
|
||||
VPN_PORT="1194"
|
||||
|
||||
WG_NET="10.10.0.0/24"
|
||||
WG_PORT="51820"
|
||||
WG_WEB_PORT="51821"
|
||||
|
||||
PORTAINER_PORT="9000"
|
||||
PORTAINER_SSL_PORT="9443"
|
||||
|
||||
SSH_PORT="22"
|
||||
|
||||
echo " [Services : SSH / HTTP / OpenVPN / Coturn / MQTT]"
|
||||
|
||||
# ─── SSH ──────────────────────────────────────────────────────────────────────
|
||||
iptables -A INPUT -i $ETH_IF -p tcp --dport $SSH_PORT \
|
||||
-m conntrack --ctstate NEW \
|
||||
-m connlimit --connlimit-above 4 --connlimit-mask 32 -j LOG_DROP
|
||||
iptables -A INPUT -i $ETH_IF -p tcp --dport $SSH_PORT \
|
||||
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
# ─── HTTP / HTTPS ─────────────────────────────────────────────────────────────
|
||||
iptables -A INPUT -i $ETH_IF -p tcp --dport 80 \
|
||||
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
iptables -A INPUT -i $ETH_IF -p tcp --dport 443 \
|
||||
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
# ─── MOSQUITTO TLS (accessible depuis internet) ───────────────────────────────
|
||||
iptables -A INPUT -i $ETH_IF -p tcp --dport 8883 \
|
||||
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
#iptables -A INPUT -i $ETH_IF -p tcp --dport 8884 \
|
||||
# -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
# ─── COTURN ───────────────────────────────────────────────────────────────────
|
||||
# Signaling STUN/TURN
|
||||
iptables -A INPUT -i $ETH_IF -p udp --dport 3478 \
|
||||
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
iptables -A INPUT -i $ETH_IF -p tcp --dport 3478 \
|
||||
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
# Relai TURN UDP — hashlimit par IP source (anti-amplification)
|
||||
iptables -A INPUT -i $ETH_IF -p udp --dport 49152:65535 \
|
||||
-m hashlimit --hashlimit-name coturn-relay \
|
||||
--hashlimit-upto 100/s --hashlimit-burst 200 \
|
||||
--hashlimit-mode srcip -j ACCEPT
|
||||
|
||||
# ─── REDIS : DROP explicite depuis internet ────────────────────────────────────
|
||||
# Redis doit rester sur 127.0.0.1 ou socket Unix — cette règle est un filet de sécurité
|
||||
iptables -A INPUT -i $ETH_IF -p tcp --dport 6379 -j DROP
|
||||
|
||||
# ─── Transmission (décommenter si actif) ──────────────────────────────────────
|
||||
#iptables -A INPUT -i $ETH_IF -p tcp --dport 51413 \
|
||||
# -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
# ─── MAIL (décommenter si besoin) ─────────────────────────────────────────────
|
||||
#iptables -A INPUT -i $ETH_IF -p tcp --dport 465 \
|
||||
# -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
#iptables -A INPUT -i $ETH_IF -p tcp --dport 993 \
|
||||
# -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
# ─── WIREGUARD ──────────────────────────────────────────────────────────────────
|
||||
#iptables -A INPUT -i $ETH_IF -p udp --dport $WG_PORT \
|
||||
# -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
#iptables -I INPUT -i $WG_IF -p tcp --dport $WG_WEB_PORT -j ACCEPT
|
||||
#iptables -I INPUT -i $WG_IF -p tcp --dport $PORTAINER_PORT -j ACCEPT
|
||||
#iptables -I INPUT -i $WG_IF -p tcp --dport $PORTAINER_SSL_PORT -j ACCEPT
|
||||
|
||||
# ─── DOCKER USER ──────────────────────────────────────────────────────────────────
|
||||
iptables -I DOCKER-USER -i $ETH_IF -j DROP
|
||||
iptables -I DOCKER-USER -i $WG_IF -j RETURN # VPN autorisé
|
||||
iptables -I DOCKER-USER -i lo -j RETURN # loopback autorisé
|
||||
|
||||
# ─── OPENVPN ──────────────────────────────────────────────────────────────────
|
||||
iptables -A INPUT -i $ETH_IF -p udp --dport $VPN_PORT \
|
||||
-m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
|
||||
|
||||
# Accès complet au serveur depuis les clients VPN
|
||||
iptables -A INPUT -i $VPN_IF -j ACCEPT
|
||||
iptables -A OUTPUT -o $VPN_IF -j ACCEPT
|
||||
|
||||
# ─── FORWARD VPN → internet ───────────────────────────────────────────────────
|
||||
iptables -A FORWARD -i $VPN_IF -o $ETH_IF \
|
||||
-m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
|
||||
iptables -A FORWARD -i $ETH_IF -o $VPN_IF \
|
||||
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
iptables -t nat -A POSTROUTING -s $VPN_NET -o $ETH_IF -j MASQUERADE
|
||||
Reference in New Issue
Block a user