视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
RHEL5.7下iptables防火墙配置(上)
2025-09-29 16:27:59 责编:小OO
文档
RHEL5.7下iptables防火墙配置(上)

    iptables是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。iptables 的一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤。您可以定制自己的规则来满足您的特定需求,从而只允许您想要的网络流量进入系统。另外,iptables 是免费的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决方案,并且其性能不输于一些专业的硬件防火墙。 

iptables的管理命令介绍

在iptables防火墙中,它所有功能都是通过命令的形式实现的,因此iptables命令格式非常重要。iptables命令的操作对象包括:

规则表(table):由规则链的集合组成,不同的规则表用于实现不同的功能

规则链(chain):由规则的集合组成,保存在规则表中;不同规则链代表了不同的数据包流向。

规则(rule):用于对防火墙策略进行设置,流经某个数据链的数据将按照先后顺序进行过滤。

一条完整的iptables命令由以下几个部分组成:

iptables [-t 表名] <命令> [链名] [规则号] [规则] [-j 目标]

-t选项用于指定所使用的表,iptables防火墙默认有filter、nat和mangle这3张表,也可以是用户自定义的表。表中包含了分布在各个位置的链,iptables命令所管理的规则就是存在于各种链中的。该选项不是必需的,如果未指定一个具体的表,则默认使用的是filter表。

命令选项是必须要有的,它告诉iptables要做什么事情,是添加规则、修改规则还是删除规则。有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作。还有一些命令要指定规则号。具体的命令选项名称及其与后续选项的搭配形式如下所示。

针对规则链<命令>的操作有:

-L 列出链中所有的规则

 -F 清除链中的所有规则

 -P 设置链的默认动作(ACCEPT/REJECT/DROP)

 -Z 计数器清零

 -N 定义一个新的规则链

 -X 删除定义的规则链

针对规则<命令>的操作有:

-A 追加一个规则 

-I 插入一个规矩 

-D 删除一个规则 

-R 在指定的链中用新的规则置换掉某一规则号的旧规则 

查询iptables防火墙的状态(列出所有规则)

iptables –L

由上图可知,iptables设有三个[链名],即input、forward和output,默认规则均为accept放行,我们可以分别通过这三个规则链调用不同的策略。

以上是有关iptables命令格式中有关命令和规则链选项部分的解释。iptables命令格式中的规则部分由很多选项构成,主要指定一些IP数据包的特征。例如,上一层的协议名称、源IP地址、目的IP地址、进出的网络接口名称等,下面列出构成[规则号] [规则]的常见选项。

-p <协议类型>:指定上一层协议,可以是icmp、tcp、udp和all。 

-s :指定源IP地址或子网。 

-d :指定目的IP地址或子网。 

-i <网络接口>:指定数据包进入的网络接口名称。 

-o <网络接口>:指定数据包出去的网络接口名称。 

注意:上述选项可以进行组合,每一种选项后面的参数前可以加"!",表示取反。

对于-p选项来说,确定了协议名称后,还可以有进一步的子选项,以指定更细的数据包特征。常见的子选项如下所示。

-p tcp --sport :指定TCP数据包的源端口。

 -p tcp --dport :指定TCP数据包的目的端口。

 -p tcp --syn:具有SYN标志的TCP数据包,该数据包要发起一个新的TCP连接。

 -p udp --sport :指定UDP数据包的源端口。

 -p udp --dport :指定UDP数据包的目的端口。

 -p icmp --icmp-type :指定icmp数据包的类型,可以是echo-reply、echo-request等。 

上述选项中,port可以是单个端口号,也可以是以port1:port2表示的端口范围。每一选项后的参数可以加"!",表示取反。

最后,iptables命令中的-j选项可以对满足规则的数据包执行指定的操作,其后的[-j 目标]可以是以下内容:

-j ACCEPT:将与规则匹配的数据包放行,并且该数据包将不再与其他规则匹配,而是跳向下一条链继续处理。

 -j REJECT:拒绝所匹配的数据包,并向该数据包的发送者回复一个ICMP错误通知。该处理动作完成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。

 -j DROP:丢弃所匹配的数据包,不回复错误通知。该处理动作完成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。

 -j LOG:将与规则匹配的数据包的相关信息记录在日志(/var/log/message)中,并继续与其他规则匹配。 

举例:

在配置iptables之前,首先查询iptabels软件包有没有安装(默认已安装)

rpm -q iptables

iptables服务启动脚本/etc/rc.d/init.d/iptables

配置文件位置 /etc/sysconfig/iptables-config

策略文件位置 /etc/sysconfig/iptables (默认文件不存在)

iptables命令即时生效,但是不保存的话重启后就会消失,保存命令:

iptables-save > /etc/sysconfig/iptables

将命令保存在iptables策略文件中,重启后可立即应用。也可以使用以下命令进行保存:

service iptables save

将iptables-save命令保存的防火墙策略恢复到当前系统中

iptables-restore

开启iptables防火墙

service iptables start 

基于单个服务器的iptables防火墙配置 

基于单个服务器防火墙的配置主要包括回环口的处理、状态检测以及协议和端口的处理。

例如一个普通的web服务器的典型防护配置:

iptables -A INPUT -i lo -j ACCEPT   \\\允许访问服务器的lo回环口

iptables -A INPUT -p tcp -m multiport --port 22,80 -j ACCEPT   \\\开放服务器的22和80端口

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT   \\\状态检测,允许建立连接和相关连接

iptables -P INPUT DROP  \\\不匹配以上条件的数据包全部丢弃

这里涉及到iptables防火墙的一些 [扩展规则],iptables软件包提供了一套扩展的规则选项。使用时需要通过-m选项指定模块的名称,再使用该模块提供的选项。下面列出几个模块名称和其中的选项,大部分的选项也可以通过"!"取反。

-m multiport --sports  

 功能:指定数据包的多个源端口,也可以以port1:port2的形式指定一个端口范围。

 -m multiport --dports 

 功能:指定数据包的多个目的端口,也可以以port1:port2的形式指定一个端口范围。

 -m multiport --ports 

 功能:指定数据包的多个端口,包括源端口和目的端口,也可以以port1:port2的形式指定一个端口范围。

 -m state --state 

 功能:指定满足某一种状态的数据包,state可以是INVALID、ESTABLISHED、NEW和RELATED等,也可以是它们的组合,用分隔。

 -m connlimit  --connlimit-above 

 功能:用于客户端到一台主机的TCP并发连接总数,n是一个数值。

 -m  mac  --mac-source  

 功能:指定数据包的源MAC地址。

现在我们在虚拟机环境下进行测试,仍然引用之前那个静态路由的环境 

在RHEL-B上输入刚才的4条命令

iptables -A INPUT -i lo -j ACCEPT  

iptables -A INPUT -p tcp -m multiport --port 22,80 -j ACCEPT   

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT   

iptables -P INPUT DROP  

查看INPUT规则: 

在RHEL-B上开启vsftpd和httpd服务(分别为21端口和80端口)

service httpd start 

service vsftpd start

在RHEL-A上使用命令测试,发现都是成功的

telnet 192.168.20.1 80 

telnet 192.168.20.1 22

使用ftp命令去连接

ftp 192.168.20.1 

发现许久连接不上,说明ftp的21端口没有开启。当然如果去ping的话,也是失败的。这意味着iptables防火墙的命令生效,只开放了ssh和http服务。

保存刚才的iptables策略,即会生成/etc/sysconfig/iptables文件

service iptables save 

 

 

这样一个简单的基于主机的iptables防火墙就配置成功了。下载本文

显示全文
专题