Aller au contenu

iptables


niocs

Messages recommandés

Bonjour

Alors voila je me suis enfin décider à me mettre à iptables pour faire mon firewall.

J'ai donc crée un script pour les règles que voici

#!/bin/sh

###############################################
################ Configuration ################
###############################################

IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe

LAN_NET=10.0.0.0/24
LAN_IF=eth0

#DMZ_NET=192.168.1.0/24
#DMZ_IF=eth1

EXT_IF=ppp0

###############################################
############# Configuration /proc #############
###############################################
# Activation du forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward

# bloque icmp
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

###############################################
################ LES MODULES ##################
###############################################

# Les modules indispensables

$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE iptable_filter
$MODPROBE iptable_nat
$MODPROBE iptable_mangle
$MODPROBE ipt_LOG
$MODPROBE ipt_limit
$MODPROBE ipt_state

###############################################
########### LES REGLES DE FILTRAGE ############
###############################################

#=================================================#
# Suppression de toutes les règles des chaines prédéfinies #
#=================================================#

$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
# effacez les chaines utilisateur
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

#========================================================#
# Mise en place des règles par défaut : #
#========================================================#

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

#===========================================#
# L'interface loopback accpete tout traffic #
#===========================================#

$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

#===========================================================#
# Règles acceptant les paquets d'une connexion déjà établie #
#===========================================================#


$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED \
-j ACCEPT

#================================#
# Règles LAN vers EXT (Internet) #
#================================#

$IPTABLES -A FORWARD -i $LAN_IF -o $EXT_IF -j ACCEPT

#=====================#
# Règles EXT vers LAN #
#=====================#

$IPTABLES -A FORWARD -i $EXT_IF -o $LAN_IF --jump REJECT

#====================#
# Règles LAN vers fw #
#====================#

$IPTABLES -A INPUT -i $LAN_IF -p tcp --dport ssh -j ACCEPT

#====================#
# Règles EXT vers fw                        #
#====================#

$IPTABLES -A INPUT -i $EXT_IF -p tcp --dport ssh -j ACCEPT

#============#
# Règles nat               #
#============#

$IPTABLES -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp \
-j DNAT --dport www --to-destination 10.0.0.1
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp \
-j DNAT --dport mail --to-destination 10.0.0.1

#======================================================#
# Log des paquets refusés par toutes les autres règles # 
#======================================================#

$IPTABLES -A INPUT -j LOG
$IPTABLES -A OUTPUT -j LOG
$IPTABLES -A FORWARD -j LOG

Mais avec ceci je n'arrive plus à accéder à internet quelqu'un aurai t'il une idée???

Lien vers le commentaire
Partager sur d’autres sites


$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED \
-j ACCEPT

Où acceptes-tu les connexions sortantes?

IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Pour le reste, je n'ai pas regardé.

La mise en page n'est pas claire, et je ne vois pas à quoi servent les $ (passer /sbin/iptables en variable ne sert pas à grand chose, remplace par iptables).

Prends exemple sur le script d'Alexis de Lattre (google), si tu veux.

[EDIT]

# bloque icmp
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Pourquoi bloquer le ping comme cela?

De toute façon, l'icmp entrant va être droppé dans ta chaine INPUT.

[/EDIT]

neo

Lien vers le commentaire
Partager sur d’autres sites

IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

il ne reste que la state "INVALID", qui ne doit pas arriver souvent... limite autant pas mettre le --state ?

EDIT : surtout qu'en OUTPUT, les paquets qui sortent sont sencés être niquels, puisqu'ils viennent de la machin à protéger...

[EDIT]

# bloque icmp
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Pourquoi bloquer le ping comme cela?

De toute façon, l'icmp entrant va être droppé dans ta chaine INPUT.

[/EDIT]

neo

bloquer le ping c'est MAL (le ping c'est une norme... à la limite on peut faire du qos pour éviter les dos par ping...

(ou bien dans certains cas plus spécifiques de serveurs...)

Lien vers le commentaire
Partager sur d’autres sites

Bon, voilà ce que je te proposerais

#!/bin/sh

###############################################
################ Configuration ################
###############################################

IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe

LAN_NET=10.0.0.0/24
LAN_IF=eth0

#DMZ_NET=192.168.1.0/24
#DMZ_IF=eth1

EXT_IF=ppp0

###############################################
############# Configuration /proc #############
###############################################
# Activation du forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward

# bloque icmp
#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

###############################################
################ LES MODULES ##################
###############################################

# Les modules indispensables

$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE iptable_filter
$MODPROBE iptable_nat
$MODPROBE iptable_mangle
$MODPROBE ipt_LOG
$MODPROBE ipt_limit
$MODPROBE ipt_state

###############################################
########### LES REGLES DE FILTRAGE ############
###############################################

#=================================================#
# Suppression de toutes les règles des chaines prédéfinies #
#=================================================#

$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
# effacez les chaines utilisateur
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

#========================================================#
# Mise en place des règles par défaut : #
#========================================================#

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

#===========================================#
# L'interface loopback accpete tout traffic #
#===========================================#

$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

#===========================================================#
# Règles acceptant les paquets d'une connexion déjà établie #
#===========================================================#


$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -i EXT_IF -j ACCEPT
$IPTABLES -A FORWARD -o EXT_IF -j ACCEPT

#====================#
# Règles LAN vers fw #
#====================#

$IPTABLES -A INPUT -i $LAN_IF -p tcp --dport ssh -j ACCEPT

#====================#
# Règles EXT vers fw                        #
#====================#

$IPTABLES -A INPUT -i $EXT_IF -p tcp --dport ssh -j ACCEPT

#============#
# Règles nat               #
#============#

$IPTABLES -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp \
-j DNAT --dport www --to-destination 10.0.0.1
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp \
-j DNAT --dport mail --to-destination 10.0.0.1

#======================================================#
# Log des paquets refusés par toutes les autres règles # 
#======================================================#

$IPTABLES -A INPUT -j LOG
$IPTABLES -A OUTPUT -j LOG
$IPTABLES -A FORWARD -j LOG

Pour le ping, je rejoins remy. Pour un particulier, c'est déjà une première mesure de sécurité.

[EDIT]

Je ne connais pas la version de ton noyau, mieux vaut décommenter les lignes correspondant au chargement des modules, ce que je viens de corriger.

[/EDIT]

neo

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...