<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bruno Valentin &#187; bridge</title>
	<atom:link href="http://www.brunovalentin.com/tag/bridge/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brunovalentin.com</link>
	<description>Linux, La sécurité informatique, Le Mac et l'investigation numérique</description>
	<lastBuildDate>Fri, 02 Jul 2010 13:33:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Bridge Firewall sous Linux</title>
		<link>http://www.brunovalentin.com/linux/bridge-firewall-linux/</link>
		<comments>http://www.brunovalentin.com/linux/bridge-firewall-linux/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 16:24:14 +0000</pubDate>
		<dc:creator>Bruno Valentin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Sécurité info]]></category>
		<category><![CDATA[bridge]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://eee/blog/?p=105</guid>
		<description><![CDATA[Lors de la mise en place d'un serveur firewall, il est primordial de le protéger. Si le firewall est clairement identifiable sur le réseau par son adresse IP, il y a de fortes chances qu'il subisse des attaques de la part d'individus malveillants, désireux de pénétrer illégitimement dans le réseau protégé. Pour éviter de dévoiler l'adresse IP du firewall (NAT par exemple), il est possible d'utiliser le serveur en tant que Bridge. Un bridge relaye de façon transparente les données entre ses deux interfaces, sans qu'il soit nécessaire de lui attribuer une adresse IP. 

Cet article traite de la mise en place d'un bridge sous Linux, qui pourra être inséré de manière transparente dans un réseau afin de le protéger. La configuration des machines clientes n'aura pas à être modifiée comme c'est le cas lorsqu'on utilise la translation d'adresses (NAT).]]></description>
			<content:encoded><![CDATA[<h2>Installation logicielle</h2>
<p>L&#8217;installation d&#8217;un bridge ethernet sous Linux Debian nécessite l&#8217;utilisation du package <strong>bridge-utils</strong>. Il peut être installé via la commande apt-get.</p>
<p><code>apt-get install bridge-utils</code></p>
<h2>Configuration du bridge</h2>
<p>La configuration du bridge s&#8217;effectue au moyen de l&#8217;utilitaire <strong>brctl</strong>.</p>
<p>Il est tout d&#8217;abord nécessaire de créer le bridge br0<br />
<code>/usr/sbin/brctl addbr br0</code></p>
<p>Il faut ensuite ajouter au bridge les interfaces ethernet qui doivent en faire partie.<br />
<code>/usr/sbin/brctl addif br0 eth0<br />
/usr/sbin/brctl addif br0 eth1</code></p>
<p>L&#8217;adresse 0.0.0.0 est assignée à chaque interface faisant partie du bridge.<br />
<code>/sbin/ifconfig eth0 0.0.0.0<br />
/sbin/ifconfig eth1 0.0.0.0</code></p>
<p>Puis le bridge lui-même peut être configuré. A ce moment, on peut lui attribuer une adresse IP et définir le masque réseau.<br />
<code>/sbin/ifconfig br0 10.203.16.2 netmask 255.0.0.0 broadcast 10.255.255.255</code></p>
<p>La passerelle par défaut doit ensuite être définie<br />
<code>/sbin/route add default gw 10.201.16.45</code></p>
<h2>Firewall</h2>
<p>Le firewall doit ensuite être mis en place pour assurer le relai et le filtrage des paquets entre les interfaces.<br />
Un script de configuration du firewall (basique) à travers les iptables est fourni ci-dessous.</p>
<p><code>#!/bin/sh<br />
EXT_IF="eth0"<br />
INT_IF="eth1"</code></p>
<p><code>#############################################<br />
# F O R W A R D I N G<br />
echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br />
</code></p>
<p><code>#############################################<br />
# A N T I - S P O O F I N G</code><br />
<code># Je veux pas de spoofing</code></p>
<p><code>if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]<br />
then<br />
Â for filtre in /proc/sys/net/ipv4/conf/*/rp_filter<br />
Â do<br />
Â Â  echo 1 &gt; $filtre<br />
Â done<br />
fi</code></p>
<p><code># pas de icmp<br />
#echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_all<br />
#echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts</code></p>
<p><code>#############################################</code><br />
<code># M O D U L E S</code></p>
<p><code>modprobe ip_tables<br />
modprobe ip_nat_ftp<br />
modprobe ip_nat_irc<br />
modprobe iptable_filter<br />
modprobe iptable_nat<br />
modprobe ip_conntrack<br />
modprobe ipt_state</code></p>
<p><code>#############################################<br />
# D E F A U L T   P O L I C I E S</code></p>
<p><code># vidage des règles<br />
iptables -F<br />
iptables -t nat -F<br />
iptables -X<br />
iptables -t nat -X</code></p>
<p><code># politique par dÃ©faut<br />
iptables -P INPUT DROP<br />
iptables -P FORWARD DROP<br />
iptables -P OUTPUT DROP</code></p>
<p><code># log des paquets droppes<br />
iptables -N LOG_DROP<br />
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '<br />
iptables -A LOG_DROP -j DROP</code></p>
<p><code># log des paquets acceptes<br />
iptables -N LOG_ACCEPT<br />
iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] : '<br />
iptables -A LOG_ACCEPT -j ACCEPT</code></p>
<p><code># log des paquets rejectes<br />
iptables -N LOG_REJECT<br />
iptables -A LOG_REJECT -j LOG --log-prefix '[IPTABLES REJECT] : '<br />
iptables -A LOG_REJECT -j REJECT</code></p>
<p><code> </code></p>
<p><code>#############################################<br />
# L O C A L H O S T<br />
# allow lo on the router<br />
iptables -A INPUT -i lo -j ACCEPT<br />
iptables -A OUTPUT -o lo -j ACCEPT</code></p>
<p><code>#############################################<br />
# N E T B I O S<br />
# NETBIOS dÃ©sactivÃ©<br />
iptables -A FORWARD -p udp --dport 137 -j DROP<br />
iptables -A FORWARD -p udp --sport 137 -j DROP<br />
iptables -A FORWARD -p udp --dport 138 -j DROP<br />
iptables -A FORWARD -p udp --sport 138 -j DROP<br />
iptables -A FORWARD -p tcp --dport 139 -j DROP<br />
iptables -A FORWARD -p tcp --sport 139 -j DROP</code></p>
<p><code>iptables -A INPUT -p udp --dport 137 -j DROP<br />
iptables -A INPUT -p udp --sport 137 -j DROP<br />
iptables -A INPUT -p udp --dport 138 -j DROP<br />
iptables -A INPUT -p udp --sport 138 -j DROP<br />
iptables -A INPUT -p tcp --dport 139 -j DROP<br />
iptables -A INPUT -p tcp --sport 139 -j DROP</code></p>
<p><code>#############################################<br />
# O U T P U T<br />
# allow output on the router<br />
iptables -A OUTPUT -j ACCEPT</code></p>
<p><code>#############################################<br />
# I N P U T<br />
# allow ICMP replies to the router<br />
iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT</code></p>
<p><code># allow ssh on the router _itself_ (INPUT!)<br />
iptables -A INPUT -p tcp --dport 60022 -m physdev --physdev-in $INT_IF -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 60022 -m physdev --physdev-in $EXT_IF -j ACCEPT</code></p>
<p><code># allow DNS requests<br />
iptables -A INPUT -p udp --sport 53 -m physdev --physdev-in $EXT_IF -j ACCEPT</code></p>
<p><code># allow dhcp on the router _itself_ (INPUT!)<br />
iptables -A INPUT -p udp --dport 67:68 --sport 67:68 -m physdev --physdev-in $INT_IF -j ACCEPT<br />
iptables -A INPUT -p udp --dport 67:68 --sport 67:68 -m physdev --physdev-in $EXT_IF -j ACCEPT</code></p>
<p><code># allow DNS Server on the router<br />
iptables -A INPUT -p udp --sport 1024: --dport 53 -m physdev --physdev-in $INT_IF -j ACCEPT<br />
iptables -A INPUT -p udp --sport 1024: --dport 53 -m physdev --physdev-in $EXT_IF -j ACCEPT</code></p>
<p><code># reject all other connections to the router<br />
iptables -A INPUT -p tcp -m physdev --physdev-in $EXT_IF -j LOG_DROP<br />
iptables -A INPUT -p tcp -m physdev --physdev-in $INT_IF -j LOG_DROP<br />
iptables -A INPUT -p udp -m physdev --physdev-in $EXT_IF -j LOG_DROP<br />
iptables -A INPUT -p udp -m physdev --physdev-in $INT_IF -j LOG_DROP</code></p>
<p><code>#############################################<br />
# F O R W A R D<br />
iptables -A FORWARD -p tcp -m physdev --physdev-in $INT_IF --physdev-out $EXT_IF<br />
Â Â -j ACCEPT<br />
iptables -A FORWARD -p tcp -m state --state RELATED,ESTABLISHED -m physdev<br />
Â             --physdev-in $EXT_IF --physdev-out $INT_IF -j ACCEPT<br />
iptables -A FORWARD -p udp -m physdev --physdev-in $INT_IF --physdev-out $EXT_IF<br />
Â Â -j ACCEPT<br />
iptables -A FORWARD -p udp -m physdev --physdev-in $EXT_IF --physdev-out $INT_IF<br />
Â Â -j ACCEPT<br />
iptables -A FORWARD -p icmp -m physdev --physdev-in $INT_IF --physdev-out $EXT_IF<br />
Â Â -j ACCEPT<br />
iptables -A FORWARD -p icmp -m state --state RELATED,ESTABLISHED -m physdev<br />
Â              --physdev-in $EXT_IF --physdev-out $INT_IF -j ACCEPT<br />
</code><br />
<code># reject all other connections<br />
iptables -A FORWARD -p tcp -m physdev --physdev-in $EXT_IF -j LOG_REJECT<br />
iptables -A FORWARD -p udp -m physdev --physdev-in $EXT_IF -j LOG_REJECT<br />
iptables -A FORWARD -p tcp -m physdev --physdev-in $INT_IF -j LOG_REJECT<br />
iptables -A FORWARD -p udp -m physdev --physdev-in $INT_IF -j LOG_REJECT<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brunovalentin.com/linux/bridge-firewall-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
