Linuxiptables防火墙配置(语法介绍、两实例配置全过程)

tech2024-03-15  66

目录

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


1、发展

Linux2.0 的内核中开始集成了 Ipfwadm,Ipfwadm 通过三个规则栈: INPUT OUTPUT 、和 FORWARD 实现传统的数据包过滤技术。在 2.1 版本以后的 Linux 内核中 Ipfwadm 开始被 Ipchains 所代替, Ipchains Ipfwadm 相比具有两个优势: 在包过滤规则中可以明确定义多种协议,如, ICMP ,而不仅限于 TCP UDP 开发者增加了在几乎任何规则中使用否定的能力,如:可以通过声明一条规则“拒绝所有那些不是来自网络内部的外出数据包”来实现反欺骗。 2.3 版本的 Linux 内核开始, Linux 开发者开始致力于 Iptables 的工作, Iptables 主要针对商业环境下带状态检测的包过滤技术进行了增强。

2、策略分类 

Iptables防火墙中提供了3种策略规则表:FilterMangleNAT

FilterFilter表示专门过滤包的,内建三个链,可以对包进行DROPLOGACCEPTREJECT等操作。Mangle:这个表主要用来修改数据包包头中的某些值。如:TTLTOSMARKNATNAT表的主要用处是网络地址转换。

3、原理 

当一个包进来的时候,也就是从以太网卡进入防火墙,内核首先根据路由表决定包的目标。如果目标主机是本机,则如上图直接进入Input链,再由本地正在等待该包的进程接受。否则,如果从以太网卡进来的包目标不是本机,再看是否内核允许转发,如果不允许则DROP掉,如果允许转发,则送出本机。Linux防火墙主机自身产生包,由OUTPUT链出

4、命令用法及格式

#iptables [-t table] command [match] [ target]

其中:

1[-t table]选项 [-t table]选项允许使用filternatmangle3种可用的表选项。该选项不是必须的,如果未指定,则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不会在服务器和客户机上留下死套接字。

5、实例

5.1 允许内部网络访问

第一步,设置默认策略: iptables –P INPUT DROP iptables –P OUTPUT DROP iptables –P FORWARD DROP 第二步,允许所有来自防火墙的网络流量进入Internet;激活SPI,允许任何相关的返回流量回到防火墙。 iptables –A INPUT –i eth0 –s 202.101.123.1 –d any/0 –j ACCEPT iptables –A OUTPUT –m state --state ESTABLISHED, RELATED –j ACCEPT 第三步,实现内部网络接口和网络外部接口之间的数据转发;激活SPI iptables –A FORWARD –i eth1 –o eth0 –s 172.16.0.0/16 –d any/0 –j ACCEPT iptables –A FORWARD –m state --stae ESTABLISHED,RELATED –j ACCEPT

5.2 主要完成的内网访问外网的ping, ftp2120,telnet23的服务,括号中为端口号。外网访问防火墙的相应服务。其中为了使内网网段,内外网卡等作为变量。将它们定义为变量,内网网卡IPLAN_IP外网网卡IP为:INET_IP内网网段IPLAN_RANGE,允许被访问的外网IPOUTINET允许访问防火墙的外网IPININET

拓扑图如下:

配置步骤: 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 《防火墙技术》

最新回复(0)