Linux iptables防火墙设置与NAT服务配置
-
摘要: linux教程,NAT服务器,iptables防火墙设置与NAT服务配置, 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。
一.防火墙的概述
(一).防火墙的简介
防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。它可以根据网络传输的类型决定IP包是否可以传进或传出内部网。
防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作。如果都不满足,则将数据包丢弃,从而保护网络的安全。
通过使用防火墙可以实现以下功能:
可以保护易受攻击的服务;
控制内外网之间网络系统的访问;
集中管理内网的安全性,降低管理成本;
提高网络的保密性和私有性;
记录网络的使用状态,为安全规划和网络维护提供依据。
(二).防火墙的分类
防火墙技术根据防范的方式和侧重点的不同而分为很多种类型,但总体来讲可分为包过滤防火墙和代理服务器两种类型。
(三).防火墙的工作原理
1.包过滤防火墙工作原理
① 数据包从外网传送到防火墙后,防火墙抢在IP层向TCP层传送前,将数据包转发给包检查模块进行处理。
② 首先与第一个过滤规则比较。
③ 如果与第一个模块相同,则对它进行审核,判断是否转发该数据包,这时审核结果是转发数据包,则将数据包发送到TCP层进行处理,否则就将它丢弃。
④ 如果与第一个过滤规则不同,则接着与第二个规则相比较,如果相同则对它进行审核,过程与③相同。
⑤ 如果与第二个过滤规则不同,则继续与下一个过滤规则比较,直到与所有过滤规则比较完成。要是所有过滤规则都不满足,就将数据包丢弃。
2.代理服务型防火墙工作原理
代理服务型防火墙是在应用层上实现防火墙功能的。它能提供部分与传输有关的状态,能完全提供与应用相关的状态和部分传输的信息,它还能处理和管理信息。
它的具体工作原理参见11.1.2节。
二.iptables简介
netfilter/iptables(下文简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换NAT等功能。 Iptables/netfilter包过滤防火墙其实是由两个组件构成的,一个是netfilter,一个是iptables。
三.iptables基础
(一).规则(rules)
规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表
中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
(二).链(chains)
链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
摘要: (三).表(tables) 表(tables)提供特定的功能,iptables内置了3个表,即filter表、nat表和mangle表,分别用于实现包过滤,网络地址转换和包重构的功能。
(三).表(tables)
表(tables)提供特定的功能,iptables内置了3个表,即filter表、nat表和mangle表,分别用于实现包过滤,网络地址转换和包重构的功能。
1.filter表
2.nat表
3.mangle表
(四).iptables传输数据包的过程
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图10-4所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
四.关闭系统防火墙
(一).iptables命令格式
执行“setup”命令启动文字模式配置实用程序,在“选择一种工具”中选择“防火墙配置”,然后选择“运行工具”按钮 。出现防火墙的配置界面,将“安全级别”设为“禁用”,然后选择“确定”即可。 iptables的命令格式较为复杂,一般的格式如下:
iptables [-t表] -命令 匹配 操作
1.表选项
表选项用于指定命令应用于哪个iptables内置表,iptables内置包括filter表、nat表和mangle表。
2.命令选项
3.匹配选项
4.动作选项
(二).iptables的使用
1.定义默认策略
当数据包不符合链中任一条规则时,iptables将根据该链预先定义的默认策略来处理数据包,默认策略的定义格式如下。
iptables [-t表名] <-P> <链名> <动作>
参数说明如下。
[-t表名]:指默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。
<-P>:定义默认策略。
<链名>:指默认策略将应用于哪个链,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。
<动作>:处理数据包的动作,可以使用ACCEPT(接受数据包)和DROP(丢弃数据包)。
2.查看iptables规则
查看iptables规则的命令格式为:
iptables [-t表名] <-L> [链名]
参数说明如下。
[-t表名]:指查看哪个表的规则列表,表名用可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认查看filter表的规则列表。
<-L>:查看指定表和指定链的规则列表。
[链名]:指查看指定表中哪个链的规则列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING,如果不指明哪个链,则将查看某个表中所有链的规则列表。
3.增加、插入、删除和替换规则
相关规则定义的格式为:
iptables [-t表名] <-A | I | D | R> 链名 [规则编号] [-i | o 网卡名称] [-p 协议类型] [-s 源IP地址 | 源子网] [--sport 源端口号] [-d目标IP地址 | 目标子网] [--dport目标端口号] <-j动作>
摘要: 参数说明如下。 [-t表名]:定义默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。 -A:新增加一
参数说明如下。
[-t表名]:定义默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。
-A:新增加一条规则,该规则将会增加到规则列表的最后一行,该参数不能使用规则编号。
-I:插入一条规则,原本该位置上的规则将会往后顺序移动,如果没有指定规则编号,则在第一条规则前插入。
-D:从规则列表中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
-R:替换某条规则,规则被替换并不会改变顺序,必须要指定替换的规则编号。
<链名>:指定查看指定表中哪个链的规则列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。
[规则编号]:规则编号用于插入、删除和替换规则时用,编号是按照规则列表的顺序排列,规则列表中第一条规则的编号为1。
[-i | o 网卡名称]:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出。网卡名称可以使用ppp0、eth0和eth1等。
[-p 协议类型]:可以指定规则应用的协议,包含TCP、UDP和ICMP等。
[-s 源IP地址 | 源子网]:源主机的IP地址或子网地址。
[--sport 源端口号]:数据包的IP的源端口号。
[-d目标IP地址 | 目标子网]:目标主机的IP地址或子网地址。
[--dport目标端口号]:数据包的IP的目标端口号。
<-j动作>:处理数据包的动作,各个动作的详细说明可以参考表10-3。
4.清除规则和计数器
在新建规则时,往往需要清除原有的、旧的规则,以免它们影响新设定的规则。如果规则比较多,一条条删除就会十分麻烦,这时可以使用iptables提供的清除规则参数达到快速删除所有的规则的目的。定义参数的格式为:
iptables [-t表名] <-F | Z>
参数说明如下。
[-t表名]:指定默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。
-F:删除指定表中所有规则。
-Z:将指定表中的数据包计数器和流量计数器归零。
五.NAT服务
(一).什么是私有地址
私有地址(Private address)属于非注册地址,是专门为组织机构内部使用而划定的。使用私有IP地址是无法直接连接到Internet的,但是能够用在公司内部的Intranet的IP地址上 。
(二).什么是NAT
NAT是将一个地址域(如专用Intranet)映射到另一个地址域(如Internet)的标准方法。它是一个根据RFC 1631开发的IETF标准,允许一个IP地址域以一个公有IP地址出现在Internet上。NAT可以将内部网络中的所有节点的地址转换成一个IP地址,反之亦然。它也可以应用到防火墙技术里,把个别IP地址隐藏起来不被外部发现,使外部无法直接访
问内部网络设备。
(三).NAT的工作原理
1.静态网络地址转换
① 在NAT服务器上建立静态NAT映射表。
② 当内部主机(IP地址为192.168.16.10)需要建立一条到Internet的会话连接时,首先将请求发送到NAT服务器上。NAT服务器接收到请求后,会根据接收到的请求数据包检查NAT映射表。
③ 如果已为该地址配置了静态地址转换,NAT服务器就使用相对应的内部公有IP地址,并转发数据包,否则NAT服务器不对地址进行转换,直接将数据包丢弃。NAT服务器使用202.96.128.2来替换内部私有IP(192.168.16.10)的过程如图10.13所示。
④ Internet上的主机接收到数据包后进行应答(这时主机接收到202.96.128.2的请求)。
⑤ 当NAT服务器接收到来自Internet上的主机的数据包后,检查NAT映射表。如果NAT映射表存在匹配的映射项,则使用内部私有IP替换数据包的目的IP地址,并将数据包转发给内部主机。如果不存在匹配映射项则将数据包丢弃。
摘要: 2.动态网络地址转换 ① 当内部主机(IP地址为192.168.16.10)需要建立一条到Internet的会话连接时,首先将请求发送到NAT服务器上。NAT服务器接收到请求后,
2.动态网络地址转换
① 当内部主机(IP地址为192.168.16.10)需要建立一条到Internet的会话连接时,首先将请求发送到NAT服务器上。NAT服务器接收到请求后,根据接收到的请求数据包检查NAT映射表。
② 如果还没有为该内部主机建立地址转换映射项,NAT服务器就会决定对该地址进行转换(建立192.168.16.10:2320←→202.96.128.2:2320的映射项,并记录会话状态)。如果已经存在该映射项,则NAT服务器使用该记录进行地址转换,并记录会话状态。然后NAT服务器利用转换后的地址发送数据包到Internet主机上。
③ Internet主机接收到信息后,进行应答,并将应答信息回传给NAT服务器。
④ 当NAT服务器接收到应答信息后,检查NAT映射表。如果NAT映射表存在匹配的映射项,则使用内部公有IP替换数据包的目的IP地址,并将数据包转发给内部主机。如果不存在匹配映射项则将数据包丢弃。
3.网络地址端口转换
① 当内部主机(IP地址为192.168.16.10,使用端口1235)需要与Internet上的某主机(IP地址为202.18.4.6,端口为2350)建立连接时,首先将请求发送到NAPT服务器上。NAPT服务器接收到请求后,会根据接收到的请求数据包检查NAPT映射表。
②如果还没有为该内部主机建立地址转换映射项,NAPT服务器就会为这个传输创建一个Session,并且给这个Session分配一个端口3200,然后改变这个数据包的源端口为3200。所以原来的192.168.16.10:1235→202.18.4.6:2350数据包经过转换后变为了202.96.128.2:3200→202.18.4.6:2350。
③ Internet主机接收到信息后进行应答,并将应答信息回传给NAPT服务器。
④ 当NAPT服务器接收到应答信息后,检查NAPT映射表。如果NAPT映射表存在匹配的映射项,则使用内部公有IP替换数据包的目的IP地址,并将数据包转发给内部主机。如果不存在匹配映射项则将数据包丢弃。
六.使用iptables实现NAT服务
(一).配置网络环境
(1)配置网卡eth0
DEVICE=eth0 #网卡的设备别名
BOOTPROTO=static #网卡的IP地址是静态指定
BROADCAST=192.168.16.255 #网卡的网络地址
HWADDR=00:0C:29:FD:D3:29 #网卡的MAC地址
IPADDR=192.168.16.1 #网卡的IP地址
NETMASK=255.255.255.0 #网卡的子网掩码
NETWORK=192.168.16.0 #网卡的网络地址
ONBOOT=yes #系统启动时激活该网卡
TYPE=Ethernet #网卡的类型是以太网
(2)配置网卡eth1
DEVICE=eth1 #网卡的设备别名
BOOTPROTO=static #网卡的IP地址是静态指定
BROADCAST=172.16.1.255 #网卡的网络地址
HWADDR=00:0C:29:FD:D3:33 #网卡的MAC地址
IPADDR=172.16.1.1 #网卡的IP地址
NETMASK=255.255.255.0 #网卡的子网掩码
NETWORK=172.16.1.0 #网卡的网络地址
ONBOOT=yes #系统启动时激活该网卡
TYPE=Ethernet #网卡的类型是以太网
(3)为系统指定DNS服务器
nameserver 61.144.56.101
nameserver 202.96.128.68
(4)使网络配置生效
重启Linux或运行命令“/etc/init.d/network restart”使以上配置生效 。
(二).建立ADSL连接
1.rp-pppoe的安装
默认情况下Red Hat Enterprise Linux安装程序会将rp-pppoe软件安装在系统上,可使用下面的命令检查系统是否已经安装了rp-pppoe软件或查看已经安装了何种版本。
rpm -q rp-pppoe
如果系统还未安装rp-pppoe软件,可将Red Hat Enterprise Linux 5第1张安装盘放入光驱,加载光驱后在光盘的Server目录下找到rp-pppoe软件的RPM安装包文件rp-pppoe-3.5-32.1.i386.rpm,使用下面的命令安装rp-pppoe软件。
-
摘要: rpm -ivh /mnt/Server/rp-pppoe-3.5-32.1.i386.rpm 2.设置ADSL连接参数 (三).rp-pppoe的控制脚本 1.ADSL拨号 adsl-start 2.查看当前连接的状态如果要查看当前ADSL连接的状态
rpm -ivh /mnt/Server/rp-pppoe-3.5-32.1.i386.rpm
2.设置ADSL连接参数
(三).rp-pppoe的控制脚本
1.ADSL拨号
adsl-start
2.查看当前连接的状态如果要查看当前ADSL连接的状态,执行命令“adsl-status”即可。
3.断开连接
如果要断开ADSL连接,执行命令“adsl-stop”即可。
(四).使用iptables实现NAT
使用iptables实现NAT的具体步骤如下。
① 打开内核的路由功能。要实现NAT功能,首先要将文件/proc/sys/net/ipv4/ip_forward设置为1(默认是0),才能打开内核的路由功能。具体的命令如下。
echo "1">/proc/sys/net/ipv4/ip_forward
② 实现IP伪装。在nat表中的POSTROUTING链加入一条规则,这条规则的内容是所有由ppp0接口送出的包会被伪装(MASQUERADE),这样就能使用iptables实现NAT命令了。具体的命令如下。。
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
(五).NAT客户端的配置
1.Linux中NAT客户端的配置
(1)设置默认网关的IP地址
编辑文件/etc/sysconfig/network,然后使用GATEWAY选项来指定默认网关的IP地址。
② 设置DNS服务器的IP地址
在Linux中配置DNS客户端的方法很简单,可直接编辑文件/etc/resolv.conf,然后使用nameserver选项来指定DNS服务器的IP地址 。
2.Windows 2000/XP/2003中NAT客户端的配置
(六).启动时自动拨号和配置NAT服务器
为了能让Linux服务器在启动后自动拨号和配置NAT服务器,可添加以下命令到/etc/rc.d/rc.local文件的末尾(后面介绍iptables的技巧实例,也可以添加到这个文件中)。
/sbin/adsl-start
echo "1">/proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
七.iptables技巧实例
(一).禁止客户机访问不健康网站
【例1】添加iptables规则禁止用户访问域名为www.playboy.com的网站,然后查看filter表的FORWARD链规则列表。
iptables -I FORWARD -d www.playboy.com -j DROP
iptables -t filter -L FORWARD
【例2】添加iptables规则禁止用户访问IP地址为202.17.61.4的网站,然后查看filter表的FORWARD链规则列表。
iptables -I FORWARD -d 202.17.61.4 -j DROP
iptables -t filter -L FORWARD
(二).禁止某些客户机上网
【例1】添加iptables规则禁止IP地址为192.168.1.200的客户机上网,然后查看filter表的FORWARD链规则列表。
iptables -I FORWARD -s 192.168.1.200 -j DROP
iptables -t filter -L FORWARD
【例2】添加iptables规则禁止192.168.2.0子网里所有的客户机上网,然后查看filter表的FORWARD链规则列表。
iptables -I FORWARD -s 192.168.2.0/24 -j DROP
iptables -t filter -L FORWARD
(三).禁止客户机访问某些服务
【例1】禁止192.168.1.0子网里所有的客户机使用FTP协议下载(即封闭TCP协议的21端口),然后查看filter表的FORWARD链规则列表。
iptables -I FORWARD -s 192.168.1.0/24 -p tcp --dport 21 -j DROP
iptables -t filter -L FORWARD
【例2】禁止192.168.1.0子网里所有的客户机使用Telnet协议连接远程计算机(即封闭TCP协议的23端口),然后查看filter表的FORWARD链规则列表。
iptables -I FORWARD -s 192.168.1.0/24 -p tcp --dport 23 -j DROP
iptables -t filter -L FORWARD
(四).强制访问指定的站点
【例】强制所有的客户机访问210.21.118.68这台Web服务器,然后查看nat表的PREROUTING链规则列表。
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 210.21.118.68:80
iptables -t nat -L PREROUTING
(五).禁止客户机使用QQ
iptables -I FORWARD -p tcp --dport 8000 -j DROP
iptables -I FORWARD -p udp --dport 8000 -j DROP
iptables -I FORWARD -d tcpconn.tencent.com -j DROP
摘要: iptables -I FORWARD -d tcpconn2.tencent.com -j DROP iptables -I FORWARD -d tcpconn3.tencent.com -j DROP iptables -I FORWARD -d tcpconn4.tencent.com -j DROP iptables -I FORWARD -d http.tencent.com -j D
iptables -I FORWARD -d tcpconn2.tencent.com -j DROP
iptables -I FORWARD -d tcpconn3.tencent.com -j DROP
iptables -I FORWARD -d tcpconn4.tencent.com -j DROP
iptables -I FORWARD -d http.tencent.com -j DROP
iptables -I FORWARD -d http2.tencent.com -j DROP
(六).禁止使用ICMP协议
【例】禁止Internet上的计算机通过ICMP协议ping到NAT服务器的ppp0接口,但允许内网的客户机通过ICMP协议ping的计算机,然后查看filter表的INPUT链规则列表。
iptables -I INPUT -i ppp0 -p icmp -j DROP
iptables -t filter -L INPUT
(七).发布内部网络服务器
【例】禁止Internet上的计算机通过ICMP协议ping到NAT服务器的ppp0接口,但允许内网的客户机通过ICMP协议ping的计算机,然后查看filter表的INPUT链规则列表。
iptables -I INPUT -i ppp0 -p icmp -j DROP
iptables -t filter -L INPUT
(八).智能DNS服务
【例】将所有从eth0接口进入的DNS请求都发送到IP地址为61.144.56.101这台服务器解析,然后查看nat表的PREROUTING链规则列表。
iptables -t nat -I PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination 61.144.56.101:53
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to-destination 61.144.56.101:53
iptables -t nat -L PREROUTING
转载版权归 http://www.isstudy.com/所有-