Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Iptables Openwrt Aucune connexion ...


Messages recommandés

Posté(e)

eth0.0 est dans le bridge ethernet br-lan (qui doit contenir les interfaces wifi également)

 

si la cible tcpmss n'existe pas dans ta version d'iptables, commente cette ligne en rajoutant un # devant

iptables -t nat -A POSTROUTING -o $ifwan -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu[/code]

 
[code]Loading defaults
Loading synflood protection
Adding custom chains
Loading zones
Loading forwarding
Loading redirects
Loading rules
Loading includes
iptables v1.4.0: Couldn't load match `tcpmss':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables v1.4.0: Couldn't load target `zone_lan':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables v1.4.0: Couldn't load target `reject':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables v1.4.0: Couldn't load target `reject':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.0: Couldn't load target `zone_lan_forward':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.0: Couldn't load target `zone_wan':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables v1.4.0: Couldn't load target `reject':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables v1.4.0: Couldn't load target `reject':File not found

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.0: Couldn't load target `zone_wan_forward':File not found

Try `iptables -h' or 'iptables --help' for more information.

 

manifestement, les scripts d'initialisation de la fonera font appel aux chaines utilisateurs zone_lan, zone_wan_forward, zone_lan_forward reject déclarées. On peut renommer ces chaines utilisateurs dans le script que je t'ai écrit mais il faudrait savoir exactement comment la fonera gère l'initialisation de son pare-feu pour éviter les problèmes auxquels tu te retrouves confronté.

 

les messages iptables: No chain/target/match by that name sont sans conséquence (correspond à des tentatives de flush de chaines qui n'existent plus ou pas encore)

 

si on imagine que les chaines utilisateurs suivantes correspondent à

zone_lan = LAN_IN

zone_wan = WAN_IN

zone_lan_forward = chaine de forward lan vers wan

zone_wan_forward = chaine de forward wan vers lan

reject = log-and-drop

 

on peut modifier le script donné et espérer que cela fonctionne (mais sans connaitre plus le mode de fonctionnement d'init de la fonera, on est un peu dans le vague)

ifwan=eth0.1
iflan=br-lan

#############################################
#RAZ des chaines
iptables -F
iptables -X
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING

#Definition des politiques par defaut
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

################################
#Activation du masquerade sur $ifwan
#iptables -t nat -A POSTROUTING -o $ifwan -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
iptables -t nat -A POSTROUTING -o $ifwan -j MASQUERADE
#######################################
#RAZ et creation des chaines utilisateur
iptables -X reject
iptables -N reject

iptables -X zone_wan
iptables -N zone_wan

iptables -X zone_wan_forward
iptables -N zone_wan_forward

iptables -X zone_lan
iptables -N zone_lan

iptables -X zone_lan_forward
iptables -N zone_lan_forward

########################################
#Connexions sortantes de la fonera
########################################
iptables -A OUTPUT -o lo -j ACCEPT
#requetes DNS, raffiner en indiquant les DNS du FAI avec une option -d
iptables -A OUTPUT -o $ifwan -p udp --dport 53 -j ACCEPT
#requete DHCP, raffiner en INPUT avec l'adresse MAC de la freebox par exemple
iptables -A OUTPUT -o $ifwan -p udp --dport 67 -j ACCEPT
#connexion de la fonera vers le LAN accepté
iptables -A OUTPUT -o $iflan -j ACCEPT

#le reste va en log
iptables -A OUTPUT -j reject


########################################
#Connexions entrantes sur la fonera, redirection en fonction de la provenance: LAN ou WAN
#########################################
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $ifwan -j zone_wan
iptables -A INPUT -i $iflan -j zone_lan

###########################################
#Connexion entrante sur WAN
###########################################
#Seules les connexions établies sont autorisées
iptables -A zone_wan -m state --state ESTABLISHED,RELATED -j ACCEPT
#reponse DHCP de la freebox, saisir l'adresse mac de celle-ci et décommenter la ligne
iptables -A zone_wan -p udp --sport 67 -j ACCEPT

######################################
#Connexion entrante sur LAN
######################################
#Tout est autorisé en provenance du LAN
iptables -A zone_lan -j ACCEPT

#le reste est envoyé en log
iptables -A INPUT -j reject

########################################
#Connexions routées par la fonera
########################################
iptables -A FORWARD -i $ifwan -o $iflan -j zone_wan_forward
iptables -A FORWARD -i $iflan -o $ifwan -j zone_lan_forward

#######################################
# zone wan_forward
#######################################
#les retours de connexions établies sont acceptées
iptables -A zone_wan_forward -m state --state ESTABLISHED,RELATED -j ACCEPT
#les nouvelles connexions sont rejetées
iptables -A zone_wan_forward -m state --state NEW -j reject

########################################
#zone lan_forward
########################################
#les connexions sortantes sont autorisées
iptables -A zone_lan_forward -j ACCEPT

#le reste est envoyé en log
iptables -A FORWARD -j reject


######################################
#chaine de logging
######################################
#on logge les paquets
iptables -A reject -j LOG
#iptables -A reject -j DROP

######################################
#Activation de l'ip forwarding
######################################
echo 1 > /proc/sys/net/ipv4/ip_forward

 

les paquets ne sont pas droppés dans la chaine reject et simplement loggés (dans /var/log/syslog)

la politique par défaut de OUTPUT est à ACCEPT et zone_lan accepte toutes les connexions entrantes, tu ne devrais aps avoir de souci de connexion en provenance de ton lan normalement

 

vérifie ce qui est loggué pour affiner les règles

Posté(e)

Avec le dernier script j'ai internet et tout marche pendant ce temps =)

 

j'ai plusieurs erreur :

 

iptables: No chain/target/match by that name
iptables: No chain/target/match by that name

 

Je n'ai pas de log dans /var/log/syslog

 

et je crois avoir trouver le script par defaut :

 

#!/bin/sh 
# Copyright © 2008 John Crispin <blogic@openwrt.org>

. /etc/functions.sh

IPTABLES="echo iptables"
IPTABLES=iptables

config_clear
include /lib/network
scan_interfaces

CONFIG_APPEND=1
config_load firewall

config fw_zones
ZONE_LIST=$CONFIG_SECTION

CUSTOM_CHAINS=1
DEF_INPUT=DROP
DEF_OUTPUT=DROP
DEF_FORWARD=DROP

load_policy() {
config_get input $1 input
config_get output $1 output
config_get forward $1 forward

DEF_INPUT="${input:-$DEF_INPUT}"
DEF_OUTPUT="${output:-$DEF_OUTPUT}"
DEF_FORWARD="${forward:-$DEF_FORWARD}"
}

create_zone() {
local exists

[ "$1" == "loopback" ] && return

config_get exists $ZONE_LIST $1
[ -n "$exists" ] && return
config_set $ZONE_LIST $1 1 

$IPTABLES -N zone_$1
$IPTABLES -N zone_$1_MSSFIX
$IPTABLES -N zone_$1_ACCEPT
$IPTABLES -N zone_$1_DROP
$IPTABLES -N zone_$1_REJECT
$IPTABLES -N zone_$1_forward
$IPTABLES -A zone_$1_forward -j zone_$1_$5
$IPTABLES -A zone_$1 -j zone_$1_$3
$IPTABLES -A output -j zone_$1_$4
$IPTABLES -N zone_$1_nat -t nat
$IPTABLES -N zone_$1_prerouting -t nat
[ "$6" == "1" ] && $IPTABLES -t nat -A POSTROUTING -j zone_$1_nat
}

addif() {
local network="$1"
local ifname="$2"
local zone="$3"

local n_if n_zone
config_get n_if core "${network}_ifname"
config_get n_zone core "${network}_zone"
[ -n "$n_zone" ] && {
	if [ "$n_zone" != "$zone" ]; then
		delif "$network" "$n_if" "$n_zone"
	else
		return
	fi
}

logger "adding $network ($ifname) to firewall zone $zone"
$IPTABLES -A input -i "$ifname" -j zone_${zone}
$IPTABLES -I zone_${zone}_MSSFIX 1 -o "$ifname" -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
$IPTABLES -I zone_${zone}_ACCEPT 1 -o "$ifname" -j ACCEPT
$IPTABLES -I zone_${zone}_DROP 1 -o "$ifname" -j DROP
$IPTABLES -I zone_${zone}_REJECT 1 -o "$ifname" -j reject
$IPTABLES -I zone_${zone}_ACCEPT 1 -i "$ifname" -j ACCEPT
$IPTABLES -I zone_${zone}_DROP 1 -i "$ifname" -j DROP
$IPTABLES -I zone_${zone}_REJECT 1 -i "$ifname" -j reject
$IPTABLES -I zone_${zone}_nat 1 -t nat -o "$ifname" -j MASQUERADE 
$IPTABLES -I PREROUTING 1 -t nat -i "$ifname" -j zone_${zone}_prerouting 
$IPTABLES -A forward -i "$ifname" -j zone_${zone}_forward
uci_set_state firewall core "${network}_ifname" "$ifname"
uci_set_state firewall core "${network}_zone" "$zone"
ACTION=add ZONE="$zone" INTERFACE="$network" DEVICE="$ifname" /sbin/hotplug-call firewall
}

delif() {
local network="$1"
local ifname="$2"
local zone="$3"

logger "removing $network ($ifname) from firewall zone $zone"
$IPTABLES -D input -i "$ifname" -j zone_$zone
$IPTABLES -D zone_${zone}_MSSFIX -o "$ifname" -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
$IPTABLES -D zone_${zone}_ACCEPT -o "$ifname" -j ACCEPT
$IPTABLES -D zone_${zone}_DROP -o "$ifname" -j DROP
$IPTABLES -D zone_${zone}_REJECT -o "$ifname" -j reject
$IPTABLES -D zone_${zone}_ACCEPT -i "$ifname" -j ACCEPT
$IPTABLES -D zone_${zone}_DROP -i "$ifname" -j DROP
$IPTABLES -D zone_${zone}_REJECT -i "$ifname" -j reject
$IPTABLES -D zone_${zone}_nat -t nat -o "$ifname" -j MASQUERADE 
$IPTABLES -D PREROUTING -t nat -i "$ifname" -j zone_${zone}_prerouting 
$IPTABLES -D forward -i "$ifname" -j zone_${zone}_forward
uci_revert_state firewall core "${network}_ifname"
uci_revert_state firewall core "${network}_zone"
ACTION=remove ZONE="$zone" INTERFACE="$network" DEVICE="$ifname" /sbin/hotplug-call firewall
}

load_synflood() {
local rate=${1:-25}
local burst=${2:-50}
echo "Loading synflood protection"
$IPTABLES -N syn_flood
$IPTABLES -A syn_flood -p tcp --syn -m limit --limit $rate/second --limit-burst $burst -j RETURN
$IPTABLES -A syn_flood -j DROP
$IPTABLES -A INPUT -p tcp --syn -j syn_flood
}

fw_set_chain_policy() {
local chain=$1
local target=$2
[ "$target" == "REJECT" ] && {
	$IPTABLES -A $chain -j reject
	target=DROP
}
$IPTABLES -P $chain $target
}

fw_defaults() {
[ -n "$DEFAULTS_APPLIED" ] && {
	echo "Error: multiple defaults sections detected"
	return;
}
DEFAULTS_APPLIED=1

load_policy "$1"

echo 1 > /proc/sys/net/ipv4/tcp_syncookies
for f in /proc/sys/net/ipv4/conf/*/accept_redirects 
do
	echo 0 > $f
done
for f in /proc/sys/net/ipv4/conf/*/accept_source_route 
do
	echo 0 > $f
done                                                                   

uci_revert_state firewall core
uci_set_state firewall core "" firewall_state 

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

$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -X

config_get_bool drop_invalid $1 drop_invalid 1

[ "$drop_invalid" -gt 0 ] && {
	$IPTABLES -A INPUT -m state --state INVALID -j DROP
	$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
	$IPTABLES -A FORWARD -m state --state INVALID -j DROP
}

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

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

config_get syn_flood $1 syn_flood
config_get syn_rate $1 syn_rate
config_get syn_burst $1 syn_burst
[ "$syn_flood" == "1" ] && load_synflood $syn_rate $syn_burst

echo "Adding custom chains"
fw_custom_chains

$IPTABLES -N input
$IPTABLES -N output
$IPTABLES -N forward

$IPTABLES -A INPUT -j input
$IPTABLES -A OUTPUT -j output
$IPTABLES -A FORWARD -j forward

$IPTABLES -N reject
$IPTABLES -A reject -p tcp -j REJECT --reject-with tcp-reset
$IPTABLES -A reject -j REJECT --reject-with icmp-port-unreachable

fw_set_chain_policy INPUT "$DEF_INPUT"
fw_set_chain_policy OUTPUT "$DEF_OUTPUT"
fw_set_chain_policy FORWARD "$DEF_FORWARD"
}

fw_zone() {
local name
local network
local masq

config_get name $1 name
config_get network $1 network
config_get masq $1 masq
load_policy $1

[ -z "$network" ] && network=$name
create_zone "$name" "$network" "$input" "$output" "$forward" "$masq"
fw_custom_chains_zone "$name"
}

fw_rule() {
local src 
local src_ip
local src_mac
local src_port
local src_mac
local dest
local dest_ip
local dest_port
local proto
local target
local ruleset

config_get src $1 src
config_get src_ip $1 src_ip
config_get src_mac $1 src_mac
config_get src_port $1 src_port
config_get dest $1 dest
config_get dest_ip $1 dest_ip
config_get dest_port $1 dest_port
config_get proto $1 proto
config_get target $1 target
config_get ruleset $1 ruleset

src_port_first=${src_port%-*}
src_port_last=${src_port#*-}
[ "$src_port_first" -ne "$src_port_last" ] && { \
	src_port="$src_port_first:$src_port_last"; }

dest_port_first=${dest_port%-*}
dest_port_last=${dest_port#*-}
[ "$dest_port_first" -ne "$dest_port_last" ] && { \
	dest_port="$dest_port_first:$dest_port_last"; }

ZONE=input
TARGET=$target
[ -z "$target" ] && target=DROP
[ -n "$src" -a -z "$dest" ] && ZONE=zone_$src
[ -n "$src" -a -n "$dest" ] && ZONE=zone_${src}_forward
[ -n "$dest" ] && TARGET=zone_${dest}_$target
add_rule() {
	$IPTABLES -I $ZONE 1 \
		${proto:+-p $proto} \
		${src_ip:+-s $src_ip} \
		${src_port:+--sport $src_port} \
		${src_mac:+-m mac --mac-source $src_mac} \
		${dest_ip:+-d $dest_ip} \
		${dest_port:+--dport $dest_port} \
		-j $TARGET 
}
[ "$proto" == "tcpudp" -o -z "$proto" ] && {
	proto=tcp
	add_rule
	proto=udp
	add_rule
	return
}
add_rule
}

fw_forwarding() {
local src
local dest
local masq

config_get src $1 src
config_get dest $1 dest
config_get_bool mtu_fix $1 mtu_fix 0
[ -n "$src" ] && z_src=zone_${src}_forward || z_src=forward
[ -n "$dest" ] && z_dest=zone_${dest}_ACCEPT || z_dest=ACCEPT
$IPTABLES -I $z_src 1 -j $z_dest
[ "$mtu_fix" -gt 0 -a -n "$dest" ] && $IPTABLES -I $z_src 1 -j zone_${dest}_MSSFIX
}

fw_redirect() {
local src
local src_ip
local src_port
local src_dport
local src_mac
local dest_ip
local dest_port dest_port2
local proto

config_get src $1 src
config_get src_ip $1 src_ip
config_get src_port $1 src_port
config_get src_dport $1 src_dport
config_get src_mac $1 src_mac
config_get dest_ip $1 dest_ip
config_get dest_port $1 dest_port
config_get proto $1 proto
[ -z "$src" -o -z "$dest_ip" ] && { \
	echo "redirect needs src and dest_ip"; return ; }

src_port_first=${src_port%-*}
src_port_last=${src_port#*-}
[ "$src_port_first" -ne "$src_port_last" ] && { \
	src_port="$src_port_first:$src_port_last"; }

src_dport_first=${src_dport%-*}
src_dport_last=${src_dport#*-}
[ "$src_dport_first" -ne "$src_dport_last" ] && { \
	src_dport="$src_dport_first:$src_dport_last"; }

dest_port2=$dest_port
dest_port_first=${dest_port2%-*}
dest_port_last=${dest_port2#*-}
[ "$dest_port_first" -ne "$dest_port_last" ] && { \
	dest_port2="$dest_port_first:$dest_port_last"; }

add_rule() {
	$IPTABLES -A zone_${src}_prerouting -t nat \
		${proto:+-p $proto} \
		${src_ip:+-s $src_ip} \
		${src_port:+--sport $src_port} \
		${src_dport:+--dport $src_dport} \
		${src_mac:+-m mac --mac-source $src_mac} \
		-j DNAT --to-destination $dest_ip${dest_port:+:$dest_port}

	$IPTABLES -I zone_${src}_forward 1 \
		${proto:+-p $proto} \
		-d $dest_ip \
		${src_ip:+-s $src_ip} \
		${src_port:+--sport $src_port} \
		${dest_port2:+--dport $dest_port2} \
		${src_mac:+-m mac --mac-source $src_mac} \
		-j ACCEPT 
}
[ "$proto" == "tcpudp" -o -z "$proto" ] && {
	proto=tcp
	add_rule
	proto=udp
	add_rule
	return
}
add_rule
}

fw_include() {
local path
config_get path $1 path
[ -e $path ] && . $path
}

fw_addif() {
local up
local ifname
config_get up $1 up
config_get ifname $1 ifname
[ -n "$up" ] || return 0
(ACTION="ifup" INTERFACE="$1" . /etc/hotplug.d/iface/20-firewall)
}

fw_custom_chains() {
[ -n "$CUSTOM_CHAINS" ] || return 0
$IPTABLES -N input_rule
$IPTABLES -N output_rule
$IPTABLES -N forwarding_rule
$IPTABLES -N prerouting_rule -t nat
$IPTABLES -N postrouting_rule -t nat

$IPTABLES -A INPUT -j input_rule
$IPTABLES -A OUTPUT -j output_rule
$IPTABLES -A FORWARD -j forwarding_rule
$IPTABLES -A PREROUTING -t nat -j prerouting_rule
$IPTABLES -A POSTROUTING -t nat -j postrouting_rule
}

fw_custom_chains_zone() {
local zone="$1"

[ -n "$CUSTOM_CHAINS" ] || return 0
$IPTABLES -N input_${zone}
$IPTABLES -N forwarding_${zone}
$IPTABLES -N prerouting_${zone} -t nat
$IPTABLES -I zone_${zone} 1 -j input_${zone}
$IPTABLES -I zone_${zone}_forward 1 -j forwarding_${zone}
$IPTABLES -I zone_${zone}_prerouting 1 -t nat -j prerouting_${zone}
}

fw_init() {
DEFAULTS_APPLIED=

echo "Loading defaults"
config_foreach fw_defaults defaults
echo "Loading zones"
config_foreach fw_zone zone
echo "Loading forwarding"
config_foreach fw_forwarding forwarding
echo "Loading redirects"
config_foreach fw_redirect redirect
echo "Loading rules"
config_foreach fw_rule rule
echo "Loading includes"
config_foreach fw_include include
uci_set_state firewall core loaded 1
unset CONFIG_APPEND
config_load network
config_foreach fw_addif interface
}

fw_stop() {
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -X
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
uci_revert_state firewall core
}

 

Une question que je me pose ... mieux vaut droper les paquet ou reject ?

 

Merci =)

Posté(e)

/etc/functions.sh contient des fonctions utilisées dans le script ( assez intéressant d'ailleurs en terme de gestion des règles). Comment se gère nativement le firewall de la fonera? via des fichiers de configuration? une interface quelconque appelant des fonctions de ce script?

 

 

pour les logs, faut voir dans dmesg ou /var/log/ulog selon ce qui est utilisé par fonera

 

reject : envoi d'un tcp-rst aux tentatives de connexion => le port apprait fermé

drop: rien n'est envoyé en retour => le port apparait masqué

 

rappel sur iptables

table filter

chaine INPUT : ce qui rentre sur la fonera

chaine OUTPUT: ce qui sort de la fonera

chaine FORWARD: ce qui traverse la fonera

 

les chaines utilisateurs sont créées pour faciliter la gestion de zones (ce qui rentre sur l'interface lan et ce qui rentre sur l'interface lan par exemple)

 

table nat

chaine PREROUTING : permet de faire de la translation d'adresse réseau en modifiant l'adresse de destination avant de prendre les décisions de filtrage (DNAT)

chaine POSTROUTING: permet de modifier les paquets après les décisions de filtrage (SNAT et MASQUERADE)

 

il existe d'autres tables que je te laisse découvrir

http://www.linux-france.org/prj/inetdoc/gu...ables-tutorial/

Posté(e) (modifié)

Donc, d'après ce que j'ai compris :

 

Je doit mettre :

 

INPUT en drop, pour laissé rien rentré

OUTPUT en drop, pour laissé rien sortir

FORWARD en ACCEPT pour autorisé de eth0.0 a br-lan pour circuler.

 

Puis ouvrir le port 80 en input et output et voila bref

 

mais je comprend pas les ' zone_LAN, zone_wan '

je comprend pas trop leur utilité pourquoi une ' surcouche ' alors que j'ai l'impression que ceux de base suffise.

 

 

MErci

 

Edit :

J'ai trouver sa et sa ressemble assez a la config que me donne la fonera :

 

config defaults
option syn_flood	1
option input		ACCEPT
option output		ACCEPT 
option forward		REJECT

config zone
option name		lan
option input	ACCEPT 
option output	ACCEPT 
option forward	REJECT

config zone
option name		wan
option input	REJECT
option output	ACCEPT 
option forward	REJECT
option masq		1 

config forwarding 
option src      lan
option dest     wan
option mtu_fix	1

# We need to accept udp packets on port 68,
# see [url="https://dev.openwrt.org/ticket/4108"]https://dev.openwrt.org/ticket/4108[/url]
config rule
option src		wan
option proto		udp
option dest_port	68
option target		ACCEPT

# include a file with users custom iptables rules
config include
option path /etc/firewall.user


### EXAMPLE CONFIG SECTIONS
# do not allow a specific ip to access wan
#config rule
#	option src		lan
#	option src_ip	192.168.45.2
#	option dest		wan
#	option proto	tcp
#	option target	REJECT 

# block a specific mac on wan
#config rule
#	option dest		wan
#	option src_mac	00:11:22:33:44:66
#	option target	REJECT 

# block incoming ICMP traffic on a zone
#config rule
#	option src		lan
#	option proto	ICMP
#	option target	DROP

# port redirect port coming in on wan to lan
#config redirect
#	option src			wan
#	option src_dport	80
#	option dest			lan
#	option dest_ip		192.168.16.235
#	option dest_port	80 
#	option proto		tcp


### FULL CONFIG SECTIONS
#config rule
#	option src		lan
#	option src_ip	192.168.45.2
#	option src_mac	00:11:22:33:44:55
#	option src_port	80
#	option dest		wan
#	option dest_ip	194.25.2.129
#	option dest_port	120
#	option proto	tcp
#	option target	REJECT 

#config redirect
#	option src		lan
#	option src_ip	192.168.45.2
#	option src_mac	00:11:22:33:44:55
#	option src_port		1024
#	option src_dport	80
#	option dest_ip	194.25.2.129
#	option dest_port	120
#	option proto	tcp

 

Et j'ai remarqué que eth0.0 et br-lan on la même adresse mac c'est normal sa ? :/

Modifié par Lil Nes
Posté(e)
mais je comprend pas les ' zone_LAN, zone_wan '

 

ça permet d'assurer une lisibilité au script. ton routeur dispose d'au moins 2 interfaces d'entrées logiquement distinctes; spécifier des chaines utilisateur permet de ne pas spécifier dans la règle l'interface d'entrée => ça évite les erreurs en clarifiant le script.

 

idem pour le forward, il peut être dans les 2 sens du point de vue connexion: lan -> wan et wan-> lan

 

On peut très bien se passer des chaines utilisateur mais la lecture et la maintenance du script est moins facile.

 

Puis ouvrir le port 80 en input et output

 

ouvrir en input autorise les connexions entrantes sur le serveur web de la fonera, tu peux vouloir uniquement autoriser cet accès que depuis le lan et non depuis le wan

 

autoriser en output sur tcp dport 80 signifie que tu autorises la fonera à initier une connection sur une machine distante à destination du port 80 => cela peut être un serveur web ou autre chose.

Si ta fonera doit établir des connections http sortantes, il faut également qu'elle puisse émettre des requêtes DNS

 

Et j'ai remarqué que eth0.0 et br-lan on la même adresse mac c'est normal sa ?

 

oui puisque à la base ta fonera n'est qu'un bridge wifi-ethernet, les 2 ports ethernet appartiennent au même contrôleur. Tu en as transformé un en port WAN et l'autre en LAN avec le firmware openwrt => séparation logique au niveau de la couche 3 des interfaces

Posté(e) (modifié)

C'est bon j'ai bien compris le fonctionnement maintenant =) Merci beaucoup :P

 

juste une chose,

 

Par défaut tu as mis la politique OUTPUT en ACCEPTE, ok moi je l'ai mis en drop pour contrôler ce qui sors ( par ex bloquer les ports msn ).

Malgré que aucun port soit ouvert je trouve assez bisard que le net marche et utorrent aussi avec son port aléatoire ...

Il y a pas une petite erreur non ?

#requetes DNS, raffiner en indiquant les DNS du FAI avec une option -d
iptables -A OUTPUT -o $ifwan -p udp --dport 53 -j ACCEPT
#requete DHCP, raffiner en INPUT avec l'adresse MAC de la freebox par exemple
iptables -A OUTPUT -o $ifwan -p udp --dport 67 -j ACCEPT

 

 

Si je veux ouvrir un port je l'ouvre a quelle niveau ? car j'ai 2 tables d'entré, de sorti et de redirection :s

Pour le DNS j'en ai 2 donc sa me donne :

 

iptables -A OUTPUT -o $ifwan -p udp --dport 53 -d 212.27.53.252, 212.27.54.252 -j ACCEPT ?

 

Pour le DHCP ? pourquoi sachant que je n'utilise pas le DHCP de la freebox !? quelle est l'option a rajouter ?

 

Merci =)

 

Et bon réveillons a tous :P

Modifié par Lil Nes
Posté(e)

INPUT et OUTPUT concerne la fonera, pas les connexions qu'elle route

 

pour ouvrir un port de l'extérieur vers ton LAN, il faut

  • faire du DNAT dans la chaine PREROUTING de la table nat
    autoriser le flux dans la bonne chaine FORWARD (zone_lan_forward ou zone_wan_forward)

 

ta fonera émet une requête DHCP vers la freebox pour obtenir l'adresse WAN

en OUTPUT il faut autoriser les paquets UDP à destination du port 67 sur l'adresse de broadcast (255.255.255.255) (DHCP DISCOVER et DHCP REQUEST)

en INPUT, comme UDP n'est pas un protocole en mode connecté et que par conséquent le connection tracking peut être capricieux, il faut accepter l'offre DHCP OFFER et DHCP ACK de la freebox de manière explicite sur $ifwan (UDP sport 67 dport 68). Afin d'être certain de ne se voir offrir une adresse que de la freebox, tu peux raffiner la règle avec un match sur l'adresse MAC de l'émetteur (-m mac --mac-source xx:xx:xx:xx:xx:xx). Bon normalement, y'a un câble entre les 2 et le risque de DHCP spoofing est minime sur cette interface.

 

Si ta fonera agit en tant que relai DNS, il faut en effet qu'elle puisse émettre des requêtes DNS vers les serveurs de ton FAI. Tu ne peux spécifier plusieurs adresses destination avec une même règle (sauf à utiliser une plage adresse/masque); le plus simple est d'écrire une règle par adresse.

 

Si ta fonera doit pouvoir faire du http ou du ftp, pour se mettre à jour par exemple, tu devras l'autoriser en OUTPUT sur $ifwan

 

Pour l'instant, avec le script fourni

  • tout est autorisé dans le sens lan -> wan
    seuls les retours de connexion sont autorisés dans le sens wan->lan
    sur la fonera, tout est autorisé en provenance de $iflan et seuls les retours de connexion et les réponses DHCP le sont sur $ifwan

 

les règles étant parcourues dans l'ordre de leur écriture, si tu veux autoriser un flux dans zone_wan_forward, il faudra le faire avant cette ligne

iptables -A zone_wan_forward -m state --state NEW -j reject

  • 10 mois après...
Posté(e)

Salut,

Desolé de reUP ce sujet mais ta recherche pour tout bloquer le traffic et laissé passer juste le port 80 en tcp pour les pages web m intéresse. Hélas j ai rencontré aussi le problème de brique (iptables bloques tous et impossible de se reconnecter au routeur par ssh; obligé de faire un cour-circuit sur la pin 16 et la masse pour renvoyer un new firmeware meme avec l option boot sur on).

 

S i tu as reussi avec iptables pourrai tu me dire comment ?

 

D'avance merci beaucoup

Rejoindre la conversation

Vous publiez en tant qu’invité. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...