Hello

Que pensez-vous de ce script iptables ? quelles améliorations / changements apporteriez-vous ?

# Supprimer les règles actuelles
iptables -F


# Supprimer les règles actuelles
iptables -F


# Définir des stratégies de chaîne par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP


# Bloquer une adresse IP spécifique
#BLOCK_THIS_IP="x.x.x.x"
#iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP


# Autoriser le traffic entrant SSH
#iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT


# Autoriser le traffic entrant SSH d'un réseau spécifique
#iptables -A INPUT -p tcp -s 192.168.200.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT


# Autoriser le traffic entrant Tor
iptables -A INPUT -p tcp --dport 9050 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9050 -m state --state ESTABLISHED -j ACCEPT


# Autoriser le traffic entrant HTTP
iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT


# Autoriser le traffic entrant HTTPs
#iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

# MultiPorts (Autorise traffic entrant SSH, HTTP et HTTPS)
#iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT


# Autoriser le traffic sortant SSH
#iptables -A OUTPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT


# Autoriser le traffic sortant SSH sur un port spécifique
#iptables -A OUTPUT -p tcp -d 192.168.101.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT


# Autoriser le traffic sortant HTTPS
#iptables -A OUTPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A INPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT


# Equilibrer le traffic HTTPS sur plusieurs serveurs
#iptables -A PREROUTING -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
#iptables -A PREROUTING -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
#iptables -A PREROUTING -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443


# Ping de l'intérieur vers l'extérieur
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

# Ping de l'extérieur vers l'intérieur
#iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT


# Autoriser l'accès en boucle
iptables -A INPUT lo -j ACCEPT
iptables -A OUTPUT lo -j ACCEPT


# 15. Allow packets from internal network to reach external network.
# if eth1 is connected to external network (internet)
# if is connected to internal network (192.168.1.x)
iptables -A FORWARD eth1 -j ACCEPT


# Autoriser le traffic sortant DNS
#iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#iptables -A INPUT -p udp --sport 53 -j ACCEPT


# Autoriser les connexions NIS
# rpcinfo -p | grep ypbind ; This port is 853 and 850
#iptables -A INPUT -p tcp --dport 111 -j ACCEPT
#iptables -A INPUT -p udp --dport 111 -j ACCEPT
#iptables -A INPUT -p tcp --dport 853 -j ACCEPT
#iptables -A INPUT -p udp --dport 853 -j ACCEPT
#iptables -A INPUT -p tcp --dport 850 -j ACCEPT
#iptables -A INPUT -p udp --dport 850 -j ACCEPT


# Autoriser rsync depuis un réseau spécifique
#iptables -A INPUT -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT


# Autoriser uniquement les connexions MySQL depuis un réseau spécifique
#iptables -A INPUT -p tcp -s 192.168.200.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT


# Autoriser Sendmail ou Postfix
#iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT


# Autoriser IMAP et IMAPS

# IMAP / IMAP2
#iptables -A INPUT -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

# IMAPS
#iptables -A INPUT -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT


# Autoriser POP3 et POP3S
# POP3
#iptables -A INPUT -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
# POP3S
#iptables -A INPUT -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT


# Prévenir les attaques DoS
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT


# Transfert de port 422 à 22
#iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22
#iptables -A INPUT -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT


# Enregistrer les paquets perdus
#iptables -N LOGGING
#iptables -A INPUT -j LOGGING
#iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
#iptables -A LOGGING -j DROP

Déjà, je virerai toutes les lignes inutiles 😃

Ensuite, si c'est pour un serveur personnel sur lequel tu es le seul à installer/configurer des trucs, alors je virerai toutes les règles OUTPUT et autoriserai tout le trafic en output.

Après tout ça, on y verra déjà beaucoup plus clair 😉

En fait, c'est surtout qu'un firewall est tellement personnalisable que c'est difficile de te donner un avis sans savoir ce qu'héberge ton serveur.

Dans l'ensemble, il a l'air de faire le job ce script !

    Répondre…