Firewall IpTables

Bonjour,

Je viens partager mon script iptables et apporter des nouveautés ou corriger si il le faut.

#!/bin/bash

VERT="\\033[1;32m"
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
### IPTABLE
# Provides: iptables
# Description: Gestions des iptables du serveur.
# toute les ouvertures de port, les bannissements
# les drop les rejects... seront indiques ici.
### END INFO

#Netoyage des regles si execution manuel
#iptables -F
#iptables -X

echo -e "$VERT""LOAD"
# On refuse tout
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
echo -e "$ROUGE""- Interdire toutes les connexions entrantes et sortantes: [OK]"

# On ne ferme pas les connexions etablie
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo -e "$ROUGE""- Ne pas casser les connexions etablies: [OK]"
 
# Loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
echo -e "$ROUGE""- Loopback autorise: [OK]"

# SSH // Pour plus de sécurité et eviter les robots scan, changer le port par défaut (etc/ssh/sshd_config).
iptables -A INPUT -p tcp --dport 1337 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 22,1337 -j ACCEPT
echo -e "$ROUGE""- SSH IN/OUT: [OK]"

# Sortie DNS
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 953 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 953 -j ACCEPT
iptables -A INPUT -p udp --dport 953 -j ACCEPT
iptables -A OUTPUT -p udp --dport 953 -j ACCEPT
echo -e "$ROUGE""- DNS 53 - 953: [OK]"

# Sortie NTP
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
echo -e "$ROUGE""- NTP OUT: [OK]"

#DHCP
iptables -I INPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
echo -e "$ROUGE""- DHCP: [OK]"

# ICMP
iptables -A OUTPUT -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT
echo -e "$ROUGE""- ICMP sur destination-unreachable, time-exceeded et parameter-problem: [OK]"

# Autoriser le monitoring OVH
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s 5.135.74.212 -j ACCEPT
iptables -A INPUT -p tcp -s 178.32.31.73 -j ACCEPT
iptables -A INPUT -p tcp -s 94.23.76.117 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -s netmon-1-gra.ovh.net -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -s netmon-1-gra.ovh.net -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -s netmon-1-rbx.ovh.net -j ACCEPT
echo -e "$ROUGE""- Monitoring OVH: [OK]"

# Teamspeak 3
# Port voix IP
iptables -A INPUT -p udp --dport 9987 -j ACCEPT
# Port transfert de fichier
iptables -A INPUT -p tcp --dport 30033 -j ACCEPT
# Unknown doc TS
iptables -A INPUT -p tcp --dport 41144 -j ACCEPT
iptables -A OUTPUT -m multiport -p udp --dports 2011:2110 -j ACCEPT
# Port TS3 Query default port
iptables -A INPUT -p tcp --dport 10011 -j ACCEPT
#iptables -t filter -A INPUT -s VOTRE_IP -p tcp --dport 10011 -j ACCEPT #IP FIXE
# license & weblist teamspeak 3
iptables -A INPUT -p tcp -d accounting.teamspeak.com --sport 2008 -j ACCEPT
iptables -A OUTPUT -p tcp -d accounting.teamspeak.com --dport 2008 -j ACCEPT
iptables -A OUTPUT -p udp -d weblist.teamspeak.com --dport 2010 -j ACCEPT
iptables -A OUTPUT -p tcp -d weblist.teamspeak.com --dport 2010 -j ACCEPT
echo -e "$ROUGE""- TEAMSPEAK: [OK]"

# HTTP(S)
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
echo -e "$ROUGE""- Port 80 - 443: [OK]"

# FTP
#modprobe ip_conntrack_ftp
iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp -m tcp --sport 1024 --dport 1024 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 1024 --dport 1024 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
echo -e "$ROUGE""- Autoriser serveur FTP: [OK]"

# Mail
#iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
#iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
#iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
#iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
#iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT
#iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
#echo -e "$ROUGE""- Autoriser serveur Mail: [OK]"

# Iptable une IP
iptables -A INPUT -s xx.xx.xx.xx -j DROP
echo -e "$ROUGE""- Bloquer ip/plage: [OK]"

#LOG IN/OUT
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
echo -e "$ROUGE""- Log des drops IN/OUT: [OK]"

### tcpdump -n  udp dst port 9987
### tcpdump -i venet0:0 | grep ICMP
### telnet accounting.teamspeak.com 2008 -b xx.xx.xxx

###### Fin Regles ######
echo -e "$VERT""Firewall mis a jour avec succes: [OK]"
echo -e "$NORMAL"""

[quote=“lowterie”]Bonjour,

Je viens partager mon script iptables et apporter des nouveautés ou corriger si il le faut.

[/quote]

iptables -A OUTPUT -p tcp -m multiport --dports 22,1337 -j ACCEPT
Là tu t’autorises à te connecter à des machines sur le ports 1337, c’est sans doute une bonne idée mais ça n’a rien à voir avec ton changement de port sur ta machine.

iptables -A INPUT -p tcp --sport 53 -j ACCEPT

Bon, là si je pars du port 53 de ma machine, je fais ce que je veux chez toi. Là encore ça n’est pas ce que tu veux. (Je n’ai pas regardé la suite)

salut,

Oui pour le port 1337 c’est bien voulu mais pour le port 53 … c’est une erreur de ma part donc je veux juste autoriser le service DNS.

C’est à dire, tu as un serveur sur ta machine, ou tu veux interroger des serveurs? Jette un oeil ici:
debian-handbook.info/browse/sta … ering.html
Le schema est… schématique mais donne une idée du processus.

Et c’est pas beau à voir. Grosse fatigue à l’idée de devoir commenter tout ça…
De toute façon, sans savoir précisément ce que ce jeu de règles est censé autoriser (ce que les commentaires insuffisamment précis ne permettent pas de savoir), c’est une perte de temps.

Bravo

T’as le mérite de partager.

[quote=“cleloup”]Bravo

T’as le mérite de partager.[/quote]
Non, il veut juste te dire que tel que tu as des erreurs de principe sur l’ensemble de tes règles, et que ty n’as pas dit quel était ton but précis: que veux tu autoriser, que veux tu interdire, quelle est cette machine? Est ce une passerelle? est ce un DNS? un serveur de courrier? un serveur de jeu? Bref, il n’est pas question de partage ou non mais juste de préciser ta demande. As tu regardé le lien et compris notamment le schéma?

[quote=“fran.b”][quote=“cleloup”]Bravo

T’as le mérite de partager.[/quote]
Non, il veut juste te dire que tel que tu as des erreurs de principe sur l’ensemble de tes règles, et que ty n’as pas dit quel était ton but précis: que veux tu autoriser, que veux tu interdire, quelle est cette machine? Est ce une passerelle? est ce un DNS? un serveur de courrier? un serveur de jeu? Bref, il n’est pas question de partage ou non mais juste de préciser ta demande. As tu regarder le lien et compris notamment le schéma?[/quote]

je lui donne un lien pour l’exemple.
http://www.thegeekstuff.com/scripts/iptables-rules

[quote=“cleloup”]
je lui donne un lien pour l’exemple.
http://www.thegeekstuff.com/scripts/iptables-rules[/quote]
Non, je t’assure que Pascal n’a absolument pas besoin de lien et qu’il domine le sujet. Vraiment.

Edit: Le lien que tu donnes est à voir plutôt comme une suite d’exemple plutôt qu’un script.

Je n’ai pas de mérite, j’aime bien partager. Mais contrairement à François je n’ai pas les qualités pédagogiques que peut apporter le travail dans l’enseignement.

[quote=“cleloup”]je lui donne un lien pour l’exemple.
http://www.thegeekstuff.com/scripts/iptables-rules[/quote]
Le problème des exemples, c’est qu’ils ne sont que cela : des exemples. Adapter un exemple pauvrement commenté à ses besoins est loin d’être trivial, et surtout un exemple n’aide pas à spécifier ses propres besoins. En plus, cet exemple-ci contient des erreurs grossières. Cela n’aide pas à comprendre ce qu’il faut faire et ne pas faire.