快捷搜索:

Linux用IPtable实现防火墙

一样平常LINUX防火墙(iptalbes)的运用无非是用nat 表(PREROUTING、OUTPUT、POSTROUTING)和filter表(FORWARD、INPUT、OUTPUT)。我们只有知道了数据的流向才能精确的设置设置设备摆设摆设防火墙。现用一个比拟较较直不雅的图形解释数据的走向。(此处只作最基础的iptables数据流走向阐明。)

上图是你的家,蓝色的圈是你家院子,有两扇大年夜门①⑥收支,你家有两个房间,分手为eth0和 eth1房间,每个房间有两个门可以收支②③④⑤。左右是张三和李四的家,张三家和李四家之间的来回必须要过你家院子。

现假设,eth0网卡IP为:192.168.5.1链接内网,eth1网卡IP为:218.100.100.111链接互连网。

再假设,“张三家”为一个局域网,“李四家”为互连网。进我家院子用PREROUTING,出我家院子用FORWARD,进我家门用INPUT,出我家门用 OUTPUT。(当我们的操作是征对办事器本身而言的话,如SSH操作,此时肯定会用到PREROUTING、INPUT和OUTPUT,当数据只是经由过程办事器去造访其余机械时会用到PREROUTING和FORWARD。)

又假设,默认这六个门都是关的。天生如下代码。

###########################################################################

*nat

################################

:PREROUTING DROP [0:0]

:OUTPUT DROP [0:0]

:POSTROUTING DROP [0:0]

################################

-F

-Z

-X

### 今后要新增语句请在此处增添。

-L –v

COMMIT

################################################

*filter

##############################

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

##############################

-F

-Z

-X

### 今后要新增语句请在此处增添。

-L –v

COMMIT

##########################################################################

1、 局域网用户经由过程办事器共享上网

(即从张三家到李四家)

1)首先辈①号门,再从⑥号门走出。

-A PREROUTING –p tcp --dport 80 –j ACCEPT #容许TCP 80端口经由过程办事器

-A FORWARD –p tcp --dport 80 –j ACCEPT #容许TCP80 端口转发

-A FORWARD –p tcp --sport 80 –j ACCEPT #容许接管对方为TCP80端口反回的信息

2)其次,因为我们上网打的是域名,为此有一个公网DNS办事器为我们办事,那当然也要容许内网机械与DNS办事器的数据转发。DNS用UDP 53或者 TCP 53端口。两者用其一个就行。

-A PREROUTING –p udp --dport 53 –j ACCEPT

-A FORWARD –p udp --dport 53 –j ACCEPT

-A FORWARD –p udp --sport 53 –j ACCEPT

3)再次,因为局域网的地址在公网上是不被容许的,以是在出公网前应该把其地址转为办事器地址进行冒充。

-A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111

2、 容许局域网和公网可以造访办事器的SSH

假设SSH采纳默认端口TCP 22 。此要求相称于要进我的家的TCP 22号门,为此我们首先要进我家院子,然后再进我家门,着末走出我家门这样的历程。此操作是征对办事器本身的操作。

-A PREROUTING –p tcp --dport 22 –j ACCEPT

-A PREROUTING –p tcp --dport 110 –j ACCEPT

-A PREROUTING –p tcp --dport 25 –j ACCEPT

-A FORWARD –p tcp --dport 110 –j ACCEPT

-A FORWARD –p tcp --sport 110 –j ACCEPT

-A FORWARD –p tcp --dport 25 –j ACCEPT

-A FORWARD –p tcp --sport 25 –j ACCEPT

5、 内部机械对外宣布WEB。

要把内网机械192.168.5.179的WEB对外宣布的话,相称于是从外网造访内网。与第1步操作的局域网共享上网相同,只是造访的偏向改变了。不是从内网造访外网,而是从外网造访内网。

当公网造访办事器218.100.100.111时,防火墙把它映射到内网的192.168.5.179的TCP80上。当内网机械造访办事器218.100.100.111时,防火墙把它映射到内网的192.168.5.179的TCP80上。

-A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80

-A PREROUTING –i eth1 –p tcp –d 218.100.100.111 –dport 80 –j DNAT –to-destination 192.168.5.179:80

(以上两句必须写在 –A PREROUTING –p tcp --dport 80 –j ACCEPT 前面。)

TCP 80端口的转发在第1步就已做过,此处就不用重复制作了。别的在

-A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111 之后加上一句:

-A POSTROUTING –p tcp --dport 80 –j ACCEPT

为什么要加这句话呢,我的理解是这样的,

公网造访 [url]http://218.100.100.111[/url]时:(假设公网上用户的IP为199.199.199.199,端口12345为随机的孕育发生的。)

-A PREROUTING –p tcp --dport 80 –j ACCEPT

-A PREROUTING –p udp --dport 53 –j ACCEPT

-A PREROUTING –p tcp --dport 22 –j ACCEPT

-A PREROUTING –p tcp --dport 1863 –j ACCEPT

-A PREROUTING –p tcp --dport 443 –j ACCEPT

-A PREROUTING –p tcp --dport 8000 –j ACCEPT

-A PREROUTING –p udp --dport 8000 –j ACCEPT

-A PREROUTING –p udp --dport 4000 –j ACCEPT

-A PREROUTING –p tcp --dport 110 –j ACCEPT

-A PREROUTING –p tcp --dport 25 –j ACCEPT

-A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111

-A POSTROUTING –p tcp --dport 80 –j ACCEPT

-L –v

COMMIT

################################################

*filter

##############################

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

##############################

-F

-Z

-X

-A INPUT –p tcp --dport 22 –j ACCEPT

-A OUTPUT –p tcp --sport 22 –j ACCEPT

-A FORWARD –p tcp --dport 80 –j ACCEPT

-A FORWARD –p tcp --sport 80 –j ACCEPT

-A FORWARD –p udp --dport 53 –j ACCEPT

-A FORWARD –p udp --sport 53 –j ACCEPT

-A FORWARD –p tcp --dport 1863 –j ACCEPT

-A FORWARD –p tcp --sport 1863 –j ACCEPT

-A FORWARD –p tcp --dport 443 –j ACCEPT

-A FORWARD –p tcp --sport 443 –j ACCEPT

-A FORWARD –p tcp --dport 8000 –j ACCEPT

-A FORWARD –p tcp --sport 8000 –j ACCEPT

-A FORWARD –p udp --dport 8000 –j ACCEPT

-A FORWARD –p udp --sport 8000 –j ACCEPT

-A FORWARD –p udp --dport 4000 –j ACCEPT

-A FORWARD –p udp --sport 4000 –j ACCEPT

-A FORWARD –p tcp --dport 110 –j ACCEPT

-A FORWARD –p tcp --sport 110 –j ACCEPT

-A FORWARD –p tcp --dport 25 –j ACCEPT

-A FORWARD –p tcp --sport 25 –j ACCEPT

-L –v

COMMIT

##########################################################################

7、 其它留意事变

1)在应用iptables防火墙之前,必须先打开IP转发功能。

# echo “1” > /proc/sys/net/ipv4/ip_forward

2)以上内容(第6步天生的内容)保存到 /etc/sysconfig/iptables文件中。

3)每改动一次iptables文件后,都要重启iptalbes

# service iptables restart

您可能还会对下面的文章感兴趣: