目录
1、发展
2、策略分类
3、原理
4、命令用法及格式
5、实例
5.1 允许内部网络访问
5.2 主要完成的内网访问外网的ping, ftp(21,20),telnet(23)的服务,括号中为端口号。外网访问防火墙的相应服务。其中为了使内网网段,内外网卡等作为变量。将它们定义为变量,内网网卡IP为LAN_IP,外网网卡IP为:INET_IP,内网网段IP为LAN_RANGE,允许被访问的外网IP:OUTINET,允许访问防火墙的外网IP:ININET
在Iptables防火墙中提供了3种策略规则表:Filter、Mangle和NAT。
Filter:Filter表示专门过滤包的,内建三个链,可以对包进行DROP、LOG、ACCEPT和REJECT等操作。Mangle:这个表主要用来修改数据包包头中的某些值。如:TTL、TOS或MARK。NAT: NAT表的主要用处是网络地址转换。#iptables [-t table] command [match] [ target]
其中:
(1)[-t table]选项 [-t table]选项允许使用filter、nat和mangle等3种可用的表选项。该选项不是必须的,如果未指定,则filter用作缺省表。
(2)command命令 command命令是iptables中最重要的部分,它对指定了iptables命令的具体操作,例如,插入规则、将规则添加到规则链的末尾或删除规则。
常用参数: -A 将一条或多条规则附加到链的末尾。 -P 用于设置规则链中缺省执行的策略,即所有与链中任何规则都不匹配的数据包将被强制使用此链的策略。 -F 用于快速删除规则,如果指定了链名,该命令删除链中的所有规则;如果未指定链名,该命令删除所有链中的所有链中所有规则
(3)match匹配 iptables命令中由 match部分指定数据包所应具有的特征(如源和目的地地址、协议等),用于和规则的匹配。
常用参数: -i 指定本规则适用的进入/外出网络接口。通常有eth0、eth1、lo、ppp0等 -p 用于检查某些特定协议,包括TCP、UDP、ICMP,或者用逗号分隔的任意这3种协议的组合列表以及ALL ,可以使用!符号,表示不与该项匹配。 -s 用于匹配数据包的源主机名称、源IP地址或网络地址,可以使用!符号,表示不与该项匹配。 -d 用于匹配数据包的目的地主机名、目的地IP地址。该匹配还允许对某一范围内IP地址进行匹配,可以使用!符号,表示不与该项匹配。
(4)target目标选项 目标是规则中所指定的操作,与规则匹配的数据包将按照目标中定义的操作来执行。Match选项中必须使用大写的目标选项,如(ACCEPT、DROP、REJECT等。) ACCEPT:允许这个数据包通过。 DROP: 丢弃这个数据包。 REFECT:删除通过的数据包,该目标的工作方式与DROP相同,但它和DROP的不同在于,REJECT不会在服务器和客户机上留下死套接字。
拓扑图如下:
配置步骤: 1)初始化脚本 #清除所有防火墙规则,相当于默认的禁止规则 iptables –F iptables -P INPUT DROP # 丢弃输入的包 iptables -P OUTPUT DROP #丢弃输出的包 iptables -P FORWARD DROP # 丢弃所有转发的包 iptables -A INPUT -i lo -j ACCEPT #打开本次回环的输入 iptables -A OUTPUT -o lo -j ACCEPT #打开本地回环的输出 iptables -A INPUT -i eth0 -j ACCEPT #打开内网网卡的输入 iptables -A OUTPUT -o eth0 -j ACCEPT #打开内网网卡的输出 iptables -t nat -A POSTROUTING -s 192.168.10./24 -j SNAT --to 200.200.200.1 #将内网网段的ip地址改变为源地址为外网网卡的ip地址。相当于将内网的ip地址伪装为外网地址。 2)允许内网ping到外网机器 iptables -A FORWARD -i eth0 -p icmp -s 192.168.10.0/24 --icmp-type 8 -d any/0 -j ACCEPT iptables -A FORWARD -o eth0 -p icmp -s any/0 --icmp-type 0 -d 192.168.10.0/24 -j ACCEPT 3)允许外网ping到防火墙 iptables -A INPUT -i eth1 -p icmp -s any/0 --icmp-type 8 -d 200.200.200.1 -j ACCEPT iptables -A OUTPUT -o eth1 -p icmp -s 200.200.200.1 --icmp-type 0 -d amy/0 -j ACCEPT exit 0 4)允许内网访问外网的telnet服务 iptables -A FORWARD -i eth0 -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d any/0 --dport 23 -j ACCEPT iptables -A FORWARD -o eth0 -p tcp -s any/0 --sport 23 -d 192.168.10.0/24 --dport 1024:65535 -j ACCEPT 5)允许外网访问防火墙的telnet服务 iptables -A INPUT -i eth1 -p tcp -s any/0 --sport 1024:65535 -d 200.200.200.1 --dport 23 -j ACCEPT iptables -A OUTPUT -o eth1 -p tcp -s 200.200.200.1 --sport 23 -d any/0 --dport 1024:65535 -j ACCEPT 6)允许内网访问外网的ftp服务 #ftp #allow intranet ftp internet OUTINET=$1 LAN_RANGE=$2 UNPPORTS=1024:65535 iptables -A FORWARD -o eth0 -p tcp -s $OUTINET --sport 21 -d $LAN_RANGE - -dport $UNPPORTS -j ACCEPT iptables -A FORWARD -o eth0 -p tcp -s $OUTINET --sport 20 -d $LAN_RANGE -- dport $UNPPORTS -j ACCEPT iptables -A FORWARD -i eth0 -p tcp -s $LAN_RANGE --sport $UNPPORTS -d $OUTINET - -dport 21 -j ACCEPT iptables -A FORWARD -i eth0 -p tcp -s $LAN_RANGE --sport $UNPPORTS -d $OUTINET - -dport 20 -j ACCEPT exit 0 6)允许内网访问外网的ftp服务 #ftp #allow intranet ftp internet OUTINET=$1 LAN_RANGE=$2 UNPPORTS=1024:65535 iptables -A FORWARD -o eth0 -p tcp -s $OUTINET --sport 21 -d $LAN_RANGE - -dport $UNPPORTS -j ACCEPT iptables -A FORWARD -o eth0 -p tcp -s $OUTINET --sport 20 -d $LAN_RANGE -- dport $UNPPORTS -j ACCEPT iptables -A FORWARD -i eth0 -p tcp -s $LAN_RANGE --sport $UNPPORTS -d $OUTINET - -dport 21 -j ACCEPT iptables -A FORWARD -i eth0 -p tcp -s $LAN_RANGE --sport $UNPPORTS -d $OUTINET - -dport 20 -j ACCEPT exit 0 7)允许外网访问防火墙的ftp服务 #ftp #allow internet ftp intranet ININET=$1 INET_IP=$2 UNPPORTS=1024:65535 iptables -A INPUT -i eth1 -p tcp -s $ININET --sport $UNPPORTS -d $INET_IP --dport 21 -j ACCEPT iptables -A INPUT -i eth1 -p tcp -s $ININET --sport $UNPPORTS -d $INET_IP - -dport 20 -j ACCEPT iptables -A OUTPUT -o eth1 -p tcp -s $INET_IP --sport 21 -d $ININET --dport $UNPPORTS -j ACCEPT iptables -A OUTPUT -o eth1 -p tcp -s $INET_IP --sport 20 -d $ININET --dport $UNPPORTS -j ACCEPT exit 0转载自: 胡老师的PPT 《防火墙技术》