日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
實(shí)現(xiàn)一個(gè)網(wǎng)橋式防火墻

傳統(tǒng)防火墻和網(wǎng)橋式防火墻有什么區(qū)別呢?通常一個(gè)防火墻象一個(gè)路由器一樣工作:內(nèi)部系統(tǒng)被設(shè)置為將防火墻看做是通向外部網(wǎng)絡(luò)的網(wǎng)關(guān),并且外部的路由器被設(shè)置為將防火墻看做是連往內(nèi)部被保護(hù)的網(wǎng)絡(luò)的網(wǎng)關(guān)。一個(gè)網(wǎng)橋則是一個(gè)聯(lián)結(jié)一個(gè)或多個(gè)網(wǎng)段的設(shè)備,在各個(gè)網(wǎng)段之間轉(zhuǎn)發(fā)數(shù)據(jù),而網(wǎng)絡(luò)中其他設(shè)備并不會(huì)感覺(jué)到存在一個(gè)網(wǎng)橋。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),大洼企業(yè)網(wǎng)站建設(shè),大洼品牌網(wǎng)站建設(shè),網(wǎng)站定制,大洼網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,大洼網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

換句話說(shuō),一個(gè)路由器將兩個(gè)網(wǎng)絡(luò)連接在一起,在兩者之間傳輸數(shù)據(jù);一個(gè)網(wǎng)橋則更象一段網(wǎng)線,將一個(gè)網(wǎng)絡(luò)的兩個(gè)部分連接在一起。一個(gè)網(wǎng)橋防火墻則象網(wǎng)橋一樣工作,而不被兩端設(shè)備發(fā)現(xiàn),但是同樣具有過(guò)濾通過(guò)它的數(shù)據(jù)包的功能。

為什么會(huì)需要實(shí)現(xiàn)網(wǎng)橋式防火墻呢?一般有以下幾個(gè)原因

* 你可以在網(wǎng)絡(luò)中添加一個(gè)防火墻而不需要修改網(wǎng)絡(luò)中任何設(shè)備的參數(shù)。
* 你可能希望保護(hù)網(wǎng)絡(luò)的某一個(gè)部分而卻沒(méi)有權(quán)利控制外部路由的參數(shù)信息。

我遇到的問(wèn)題

我的辦公室是一個(gè)ADSL連接到Demon互聯(lián)網(wǎng),同時(shí)有16個(gè)IP地址的子網(wǎng)可供使用。因?yàn)橛?guó)ISP的特殊原因,線路和路由器是由英國(guó)電信公司安裝和擁有,因此我們有權(quán)利配置外部路由器來(lái)指定誰(shuí)是內(nèi)部網(wǎng)絡(luò)的網(wǎng)關(guān),這樣我只有兩種選擇:

* 直接將每臺(tái)主機(jī)和ADSL路由器相連接,并且獨(dú)立地為每臺(tái)主機(jī)使用iptables來(lái)設(shè)置防火墻規(guī)則。
* 另外一種選擇是使用NAT功能的防火墻來(lái)帶動(dòng)內(nèi)部網(wǎng)絡(luò)訪問(wèn)互聯(lián)網(wǎng)。

第一種方法是不可接受的,因?yàn)檫@樣將大大增加出錯(cuò)和系統(tǒng)管理開(kāi)銷。第二種方法也優(yōu)缺點(diǎn),雖然大多數(shù)應(yīng)用都能被NAT方式支持,但是也有例外,例如視頻流和VPN等等。一個(gè)網(wǎng)橋防火墻則能解決這些問(wèn)題,防火墻能架設(shè)在ADSL路由器和內(nèi)部網(wǎng)絡(luò)之間來(lái)保護(hù)網(wǎng)絡(luò),但同時(shí)不需要修改配置。最后一個(gè)障礙是在標(biāo)準(zhǔn)的Linux內(nèi)核中完全旁路了iptables,因此你能使用網(wǎng)橋或者是iptables防火墻,但是不能同時(shí)使用該功能。

解決方案

幸運(yùn)的是,有一個(gè)項(xiàng)目專門(mén)實(shí)現(xiàn)支持iptables的網(wǎng)橋,因此任何穿過(guò)網(wǎng)橋的數(shù)據(jù)包可以被遞交給iptables規(guī)則進(jìn)行過(guò)濾處理。結(jié)果是防火墻可以是完全透明于網(wǎng)絡(luò)的,不需要特殊的路由功能。就互聯(lián)網(wǎng)而言,防火墻并不存在,除了特定的連接被阻塞。網(wǎng)橋軟件是一個(gè)內(nèi)核補(bǔ)丁來(lái)支持已有的網(wǎng)橋代碼可以連同iptables一起工作。方便的是開(kāi)發(fā)者已經(jīng)制作了RPM形式的支持網(wǎng)橋防火墻的內(nèi)核。但不方便的是相關(guān)文檔太少,因此該文章就是幫助那些希望實(shí)現(xiàn)網(wǎng)橋式防火墻的人們。

橋接和路由 - 是如何工作的

簡(jiǎn)單的說(shuō),Linux網(wǎng)橋?qū)崿F(xiàn)一般是在具有一個(gè)或多個(gè)網(wǎng)絡(luò)接口的設(shè)備上實(shí)現(xiàn)的,通過(guò)檢測(cè)多個(gè)網(wǎng)段的活動(dòng)性,橋接代碼學(xué)習(xí)到哪個(gè)MAC地址從哪個(gè)接口可以到達(dá),并且使用該信息來(lái)判斷是否要中繼一個(gè)數(shù)據(jù)包到另外一個(gè)網(wǎng)段。網(wǎng)橋接口本身是沒(méi)有分配IP地址的,但是整個(gè)網(wǎng)橋被配置作為防火墻的單個(gè)接口。

在橋接情況下目的地址為橋設(shè)備本身的數(shù)據(jù)需要經(jīng)過(guò)filter表的INPUT規(guī)則鏈和mangle表的PREROUTING規(guī)則鏈;從橋設(shè)備自身發(fā)出的數(shù)據(jù)需要經(jīng)過(guò)filter表的OUTPUT規(guī)則鏈和mangle表的PREROUTING規(guī)則鏈;而流經(jīng)橋設(shè)備的數(shù)據(jù)則要分別經(jīng)過(guò)mangle表的PREROUTING規(guī)則鏈和filter表的FORWARD規(guī)則鏈和mangle表的POSTROUTING規(guī)則鏈。

網(wǎng)絡(luò)拓樸

我分配得到的靜態(tài)IP地址范圍為xxx.xxx.xxx.48-63,也就是子網(wǎng)掩碼為255.255.255.240。我決定將整個(gè)IP分割為兩個(gè)網(wǎng)段:xx.xxx.xxx.48-56用于防火墻以外,這包括ADSL路由器自身的IP地址 (xxx.xxx.xxx.49);xxx.xxx.xxx.57-62用在防火墻之后部分。需要注意的是這并不是真正的子網(wǎng)劃分,因?yàn)樗鼈兪怯芯W(wǎng)橋而不是路由器連接的。

防火墻規(guī)則

防火墻規(guī)則定義如下:

#!/bin/sh
#
# rc.firewall - Initial SIMPLE IP Firewall test script for 2.4.x
#
# Author: David Whitmarsh
# (c) 2001, 2002 Sparkle Computer Co ltd.
# based on rc.firewall by Oskar Andreasson
# parts (c) of BoingWorld.com, use at your own risk,
# do whatever you please with
# it as long as you don't distribute this without due credits to
# BoingWorld.com and Sparkle Computer Co Ltd
#

###########
# Configuration options, these will speed you up getting this script to
# work with your own setup.

#
# your LAN's IP range and localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP adress. the same as netmask 255.255.255.0
#
# BR_IP is used to access the firewall accross the network
# For maxium security don't set one up - but then you must do
# everything directly on the firewall.

BR_IP="xxx.xxx.xxx.57"
BR_IFACE=br0

LAN_BCAST_ADDRESS="xxx.xxx.xxx.63"
INTERNAL_ADDRESS_RANGE="xxx.xxx.xxx.56/29"

INET_IFACE="eth1"
LAN_IFACE="eth0"

LO_IFACE="lo"
LO_IP="127.0.0.1"

IPTABLES="/sbin/iptables"

#########
# Load all required IPTables modules
#

#
# Needed to initially load modules
#
/sbin/depmod -a

#
# Adds some iptables targets like LOG, REJECT
#
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT

#
# Support for connection tracking of FTP and IRC.
#
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc

#
# Take down the interfaces before setting up the bridge
#

ifdown $INET_IFACE
ifdown $LAN_IFACE
ifconfig $INET_IFACE 0.0.0.0
ifconfig $LAN_IFACE 0.0.0.0

# Clean up for a restart

$IPTABLES -F
$IPTABLES -X
#
# Set default policies for the INPUT, FORWARD and OUTPUT chains
#

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

# Our interfaces don't have IP addresses so we have to start with the mangle
# PREROUTING table

$IPTABLES -t mangle -P PREROUTING DROP

# Now we are pretty secure, let's start the bridge
# This will create a new interface

brctl addbr $BR_IFACE

# and add the interfaces to it
brctl addif $BR_IFACE $INET_IFACE
brctl addif $BR_IFACE $LAN_IFACE

# make us visible to the network again (optional)
if [ "$BR_IP" != "" ] ; then
ifconfig $BR_IFACE $BR_IP
else
# otherwise we must at least bring the interface up for the bridge to work.
ifconfig $BR_IFACE up
fi

# Block obvious spoofs

$IPTABLES -t mangle -A PREROUTING -s 192.168.0.0/16 -j DROP
$IPTABLES -t mangle -A PREROUTING -s 10.0.0.0/8 -j DROP
$IPTABLES -t mangle -A PREROUTING -s 172.16.0.0/12 -j DROP

# Accept internal packets on the internal i/f
$IPTABLES -t mangle -A PREROUTING -i $LAN_IFACE -s $INTERNAL_ADDRESS_RANGE -j ACCEPT

# Accept external packets on the external i/f

$IPTABLES -t mangle -A PREROUTING -i $INET_IFACE ! -s $INTERNAL_ADDRESS_RANGE -j ACCEPT

#
# Accept the packets we actually want to forward
#

$IPTABLES -A FORWARD -p ALL -s $INTERNAL_ADDRESS_RANGE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level 7 --log-prefix "IPT FORWARD packet died: "

#
# Create separate chains for ICMP, TCP and UDP to traverse
#

$IPTABLES -N icmp_packets
#
# ICMP rules
#

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT # echo reply
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT # dest unreachable
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 5 -j ACCEPT # redirect
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT # time exceeded
$IPTABLES -A FORWARD -p ICMP -j icmp_packets

#
# UDP ports
#
$IPTABLES -N udpincoming_packets

$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT # DNS
$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT # ntp
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 2074 -j ACCEPT # speakfreely
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 4000 -j ACCEPT #icq

$IPTABLES -A FORWARD -p UDP -j udpincoming_packets

#

$IPTABLES -N tcp_packets

#
# The allowed chain for TCP connections
#

$IPTABLES -N allowed
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

# TCP rules
#

#
# Bad TCP packets we don't want
#

$IPTABLES -A tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
$IPTABLES -A tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A tcp_packets -p TCP -s 0/0 -d springfield.sparkle-cc.co.uk --dport 80 -j allowed # smtp
$IPTABLES -A tcp_packets -p TCP -s 0/0 -d lisa.sparkle-cc.co.uk --dport 6346 -j allowed # gnutella
$IPTABLES -A tcp_packets -p TCP -s 0/0 -d springfield.sparkle-cc.co.uk --dport 25 -j allowed # smtp

$IPTABLES -A FORWARD -p TCP -j tcp_packets

#
# Input to the firewall itself. Leave these out if you don't want the firewall
# to be visible on the network at all.
# Note that the PREROUTING restrictions above mean that only packets form inside
# the firewall can fulfill the source condition. So the firewall machine should not be
# visible to the internet.
#

$IPTABLES -A INPUT -p ALL -i $BR_IFACE -s $INTERNAL_ADDRESS_RANGE -d $LAN_BCAST_ADDRESS -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $BR_IFACE -s $INTERNAL_ADDRESS_RANGE -d $BR_IP -j ACCEPT

# But you *will* need this

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -d $LO_IP -j ACCEPT

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level 7 --log-prefix "IPT INPUT packet died: "

#
# OUTPUT chain
#

$IPTABLES -A OUTPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
$IPTABLES -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $BR_IP -j ACCEPT
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level 7 --log-prefix "IPT OUTPUT packet died: "

這里的樣本防火墻腳本類似于傳統(tǒng)的防火墻設(shè)置,摘抄于Oskar Andreasson's iptables tutorial

基本的防火墻策略為:

1.阻止不可能的IP地址的數(shù)據(jù)包。
2.允許所有防火墻內(nèi)部到外連的連接。
3.允許屬于內(nèi)部到外部的連接的反向數(shù)據(jù)進(jìn)入內(nèi)部網(wǎng)絡(luò)。
4.允許外部連接到特定的主機(jī)的特定端口。

變量定義

為了保證清晰性和可維護(hù)性,定義一些接口名和IP地址作為變量是很不錯(cuò)的想法。例子中使用了下面這些數(shù)據(jù):

BR_IP="xxx.xxx.xxx.57"
BR_IFACE=br0

LAN_BCAST_ADDRESS="xxx.xxx.xxx.63"
INTERNAL_ADDRESS_RANGE="xxx.xxx.xxx.56/29"

INET_IFACE="eth1"
LAN_IFACE="eth0"

LO_IFACE="lo"
LO_IP="127.0.0.1"

"xxx.xxx.xxx"表示網(wǎng)絡(luò)IP的前三個(gè)字段。$INTERNAL_ADDRESS_RANGE表示內(nèi)部網(wǎng)絡(luò)的IP范圍。

設(shè)置一個(gè)橋接設(shè)備

為了設(shè)置一個(gè)網(wǎng)橋,我們需要做以下一些工作。首先我們需要關(guān)閉網(wǎng)絡(luò)接口并將其IP設(shè)置去除:

ifdown $INET_IFACE
ifdown $LAN_IFACE
ifconfig $INET_IFACE 0.0.0.0
ifconfig $LAN_IFACE 0.0.0.0

如果你僅僅是通過(guò)telnet或ssh會(huì)話執(zhí)行了這些命令,那是不行的而應(yīng)該到主機(jī)的控制臺(tái)來(lái)進(jìn)行操作。下一步我們創(chuàng)建一個(gè)橋設(shè)備,并為其指定以太接口:

brctl addbr $BR_IFACE
brctl addif $BR_IFACE $INET_IFACE
brctl addif $BR_IFACE $LAN_IFACE

現(xiàn)在我們就可以啟動(dòng)橋接設(shè)備作為一個(gè)內(nèi)部接口:

ifconfig $BR_IFACE $BR_IP

阻止偽裝

我們可以在mangel PREROUTING規(guī)則鏈中阻塞偽造的數(shù)據(jù)包。通過(guò)在這里阻塞,我們同時(shí)可以抓獲流入和被轉(zhuǎn)發(fā)的數(shù)據(jù)包。我們使用mangle PREROUTING,而不是nat PREROUTING是因?yàn)樵贜AT表中只有第一個(gè)數(shù)據(jù)包被檢查。

下面的內(nèi)容確保只有具有河岸得分內(nèi)部地址的數(shù)據(jù)包被內(nèi)部接口所接受:

$IPTABLES -t mangle -A PREROUTING -i $LAN_IFACE -s $INTERNAL_ADDRESS_RANGE -j ACCEPT

下面命令阻止網(wǎng)橋外部接口接收具有內(nèi)部地址的數(shù)據(jù)包:

$IPTABLES -t mangle -A PREROUTING -i $INET_IFACE ! -s $INTERNAL_ADDRESS_RANGE -j ACCEPT

從內(nèi)部網(wǎng)絡(luò)中訪問(wèn)防火墻

也許你希望你的防火墻對(duì)于網(wǎng)絡(luò)是完全透明的,或者你也可能為了方便允許從內(nèi)部網(wǎng)絡(luò)直接連接網(wǎng)橋防火墻,下面的命令將只允許內(nèi)部網(wǎng)絡(luò)到防火墻的連接。當(dāng)然根據(jù)自己的實(shí)際情況對(duì)是否允許訪問(wèn)網(wǎng)橋防火墻的要求是不一樣的:

$IPTABLES -A INPUT -p ALL -i $BR_IFACE -s $INTERNAL_ADDRESS_RANGE -d $LAN_BCAST_ADDRESS -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $BR_IFACE -s $INTERNAL_ADDRESS_RANGE -d $BR_IP -j ACCEPT

前面我們已經(jīng)阻止了具有和接收接口不匹配的IP地址的數(shù)據(jù)包了。


新聞標(biāo)題:實(shí)現(xiàn)一個(gè)網(wǎng)橋式防火墻
網(wǎng)頁(yè)網(wǎng)址:http://m.5511xx.com/article/dhgpegi.html