Linux防火墙工具iptables基础介绍

iptables基础知识说明:

一.规则链:规则链是防火墙规则/策略的集合

INPUT:处理入站数据包

OUTPUT:处理出站数据包

FORWARD:处理转发数据包

POSTROUTING链:在进行路由选择后处理数据包

PREROUTING链:在进行路由选择前处理数据包

二.规则表:规则表是规则链的集合(优先顺序:raw、mangle、nat、filter)

raw表:确定是否对该数据包进行状态跟踪(OUTPUT、PREROUTING)

mangle表:为数据包设置标记(PREROUNTING、POSTROUTING、INPUT、OUPUT、FORWARD)

nat表:修改数据包中的源、目标IP地址或端口(PREROUTING、POSTROUTIN、OUTPUT)

filter表:确定是否放行该数据包(过滤)(INPUT FOREARD、OUTPUT)

规则链间的匹配顺序

入站数据:PREROUTING、INPUT

出站数据:OUTPUT、POSTROUTING

转发数据:PREROUTING、FORWARD、POSTROUTING

iptables命令的语法格式

iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]

注意:不指定表名时,默认表示filter表

不指定链名时,默认表示该表内所有链

除非设置规则链的缺省策略,否则需要指定匹配条件

四.命令选项

-A:在指定链的末尾添加(–apped)一条新的规则(注意与-I的插入位置区别)
-D:删除(–delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则
-I:在指定链中插入(–insert)一条新的规则,若未指定插入位置,则默认在链的开头插入
-R:修改、替换(–replace)指定链的某一条规则,按规则序号或内容确定要替换的规则

-L:列出(–list)指定链中所有的规则进行查看,若未指定链名,则列出表中所有链的内容
-F:清空(–flush)指定链中的所有规则,若未指定链名,则清空表中的所有链的内容
-N:新建(–new-chain)一条用户自己定义的规则链

-X:删除指定表中用户自定义的规则链
-P:设置指定链的默认策略(–policy)
-n:使用数字形式(–numeric)显示输出结果
-v:查看规则列表时显示详细(–verbose)的信息
-Z: 清空防火墙包的数量和字节数
-V:查看iptables命令工具的版本(–version)信息
-h:查看命令帮助信息(–help)

–line-numbers:查看规则表时,同时显示规则在链中的顺序号
其中-A  -I的区别在于,-A添加到链末尾,-I插入到链最前边。 防火墙规则是越前边的越先生效,存在生效次序的差别

五.通用(general)条件匹配

可直接使用,不依赖于其他的条件或扩展模块

包括网络协议、IP地址、网络接口等匹配方式

1.协议匹配

使用“-p 协议名”的形式

协议名可使用在“/etc/protocols”文件中定义的名称

常用的协议包括tcp、udp、icmp等

例:拒绝进入防火墙的所有icmp协议的数据包

iptables -I INPUT -p icmp -j REJECT

2.地址匹配

使用“-s源地址(–source)”、“-d 目标地址(–destination)”的形式

地址可以是单个IP地址、网络地址(带掩码长度)

例:拒绝转发来自192.168.1.11主机的数据

itables -A FORWARD -s 192.168.1.11 -j REJECT

3.网络端口匹配

使用“-i 网络接口名 (–in-interface)”、 “-o 网络接口名(–out-interface)”形式,分别对应接收、发送数据包的网络接口

例:丢弃10.20.30.0/24网段,并在2小时后解封

iptables -I INPUT -s 10.20.30.0/24 -j REJECT

iptables -I FORWARD -s 10.20.30.0/24 -j DROP

at now +2 hours

at > iptables -D INPUT 1

at > iptables -D FORWARD 1

(crtl + D 结束)

六.隐含(implicit)条件匹配

1.端口匹配

使用“–sport 源端口”、“–dport 目标端口”的形式

采用“端口1:端口2”的形式可以指定一个范围的端口

例:仅允许管理员从202.13.0.0/16使用ssh

iptables -A INPUT  118.114.245.37  -p tcp  22000 -s  -j ACCEPT

iptables -A INPUT -p tcp  22000 -j DROP

2.TCP标记匹配

使用“–tcp-flags 检查范围 被设置的标记”的形式

如“–tcp-flags SYN,RST,ACK SYN”表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件

例:拒绝从外网接口(eth1)直接访问防火墙备机的数据包,但是允许响应防火墙TCP请

求的数据包进入

iptables -P INPUT DROP

iptables -I INPUT -i eth1 -p tcp –tcp-flags SYN, RST, ACK SYN -j REJECT

iptables -I INPUT -i eth1 -p tcp –tcp-flags !–syn -j ACCEPT

(–syn的用法为兼容旧版本iptables的形式,此处等于–tcp-flags SYN, RST, ACK SYN)

3.ICMP类型匹配

使用“–icmp-type ICMP类型”的形式

ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply

例:禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机(允许接收ICMP

回应数据)

iptables -A INPUT -p icmp –icmp-type Echo-Request -j DROP

iptables -A INPUT -p icmp –icmp-type Echo-Reply -j ACCEPT

iptables -A INPUT -p icmp –icmp-type destination-Unreachable -j ACCEPT

七.显示条件匹配

1.MAC地址匹配

使用“-m mac”结合“–mac-source MAC地址”的形式

例:禁止转发来自MAC地址为00:0C:29:27:55:3F的主机的数据包

iptables -A FORWARD -m mac –mac-source 00:0C:29:27:55:3F -j DROP

2.多端口匹配

使用“-m multiport”结合“–sports 源端口列表”或者“–dports 目标端口列表”的形式

多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔

例:允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280

iptables -A INPUT -p tcp -m multiport –dport 20,21,25,110,1250:1280 -j ACCEPT

3.IP地址范围匹配

使用“-m iprange”结合“–src-range 源IP范围”或者“–dst-range 目标IP范围” 的形式

以“-”符号连接起始IP地址、结束IP地址

例:禁止转发源IP地址为192.168.1.20~192.168.1.99的TCP数据包

iptables -A FORWARD -p tcp -m iprange –src-range 192.168.1.20-192.168.1.99 -j DROP

4.数据包状态匹配

使用“-m state”结合“–state 状态类型”的形式

同时表示多种状态时以逗号“,”分隔

常见的数据包状态包括:NEW、ESTABLISHED、RELATED

例:拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包

iptables -A INPUT -p tcp -m state –state NEW -j DROP

iptables -A INPUT -p tcp -m state –state ESTABLISHED,RELATED -j ACCEPT

八.数据包控制

常见的数据包处理方式

ACCEPT:放行数据包

DROP:丢弃数据包,不给出任何回应信息

REJECT:拒绝数据包,必要时会给数据发送端一个响应信息

LOG:记录日志信息,并传递给下一条规则处理

用户自定义链名:传递给自定义链内的规则进行处理

SNAT:修改数据包的源地址信息

DNAT:修改数据包的目标地址信息

九.导入、导出防火墙规则

导出规则

iptables-save

结合重定向输出“>”符号保存规则信息

导入规则

iptables-restore

结合重定向输入“<”符号恢复规则信息

十.SNAT策略

SNAT策略的典型应用环境

局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理

源地址转换,Source Network Address Translation

修改数据包的源IP地址

前提条件

局域网各主机正确设置IP地址/子网掩码

局域网各主机正确设置默认网关地址

推荐实现步骤

1. 开启网关主机的路由转发功能

2. 添加使用SNAT策略的防火墙规则

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0-j SNAT –to-source 218.29.30.31

在路由选择之后进行处理,-s 特定局域网,-o需要从接口eth0外出的数据包–to-source 218.29.30.31网关主机外网口ip地址

十一.MASQUERADE(地址伪装)策略

只需将 “-j SNAT –to-source 218.29.30.31”的形式改为“-j MASQUERADE”即可

如果是通过ADSL拨号方式连接Internet,则外网接口名称通常为 ppp0、ppp1等

MASQUERADE策略应用示例

iptables -t nat -A POSTROUTING -s 192.168.1.0/24-o ppp0 -j MASQUERADE

十二.DNAT策略

DNAT策略的典型应用环境

在Internet中发布位于企业局域网内的服务器

DNAT策略的原理

目标地址转换,Destination Network Address Translation

修改数据包的目标IP地址

前提条件

局域网的Web服务器正确设置了IP地址/子网掩码

局域网的Web服务器正确设置了默认网关地址

推荐实现步骤

1. 确认已开启网关的路由转发功能

2. 添加使用DNAT策略的防火墙规则

规则示例:

iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp –dport 80 -j DNAT–to-destination192.168.1.6

(在路由选择之前进行处理,-i 外网接口进入的数据包,-d访问网关的公网ip地址的数据包,-dport访问标准Web服务端口的数据包,–to-destination内网中Web服务器的实际IP地址)

通过DNAT策略同时修改目标端口号

使用形式

只需要在“–to-destination”后的目标IP地址后面增加“:端口号”即可,即:

-j DNAT –to-destination 目标IP:目标端口

通过DNAT策略修改目标端口号的应用示例

从Internet中访问网关主机(218.29.30.31)的 2222 端口时,实际由运行在局域网主机(192.168.1.5)的 22 端口的应用程序提供服务

iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp –dport 2222 -j DNAT –to-destination 192.168.1.5:22

十三iptables的开启和关闭

1. Linux防火墙(Iptables)重启系统生效

  1. 开启: chkconfig iptables on
  2. 关闭: chkconfig iptables off

2.Linux防火墙(Iptables) 即时生效,重启后失效

  1. 开启: service iptables start
  2. 关闭: service iptables stop
时间: 2024-10-27 12:03:55

Linux防火墙工具iptables基础介绍的相关文章

Linux 防火墙工具--iptables

iptables介绍 iptables是基于内核的防火墙,功能非常强大,iptables内置了"三表五链" 三张表 1.filter     定义允许或者不允许的 2.nat       定义地址转换的 3.mangle     修改报文原数据 五个规则链 1.PREROUTING (路由前) 2.INPUT (数据包流入口) 3.FORWARD (转发管卡) 4.OUTPUT(数据包出口) 5.POSTROUTING(路由后) 对于filter来讲只能做在3个链上:INPUT ,FO

Linux防火墙(SElinux、netfilter)防火墙工具iptables

Linux防火墙 SElinux防火墙 SElinux是Linux系统特有的安全机制,一般装完系统后都会手动将它关闭: 查询状态 getenforce Enforcing:为开启状态,Permissive:为临时关闭状态,Disabled:为关闭状态: [[email protected] ~]# getenforce Enforcing [[email protected] ~]# 临时关闭 setenforce 0 [[email protected] ~]# getenforce Enfo

Linux防火墙简介 – iptables配置策略

Netfilter/iptables简介 ????要想真正掌握Linux防火墙体系,首先要搞清楚Netfilter和iptables的关系,Netfilter和iptables包含在Linux2.4以后的内核中,可实现防火墙.NAT和数据包分割的功能.Netfilter采用模块化设计,具有良好的可扩展性.Netfilter是一个框架,iptables则是我们用户层的工具,通过iptables我们可以配置很多规则,这些规则加载到Netfilter框架中生效. ????Netfilter可以和协议栈

Linux防火墙:iptables禁IP与解封IP常用命令

在Linux下,使用ipteables来维护IP规则表.要封停或者是解封IP,其实就是在IP规则表中对入站部分的规则进行添加操作. 要封停一个IP,使用下面这条命令: iptables -I INPUT -s ***.***.***.*** -j DROP 要解封一个IP,使用下面这条命令: iptables -D INPUT -s ***.***.***.*** -j DROP 参数-I是表示Insert(添加),-D表示Delete(删除).后面跟的是规则,INPUT表示入站,***.***

Linux防火墙之iptables入门

一.防火墙的概念 什么是防火墙?防火墙是一台或一组设备,用以在网络间实施访问控制策略:事实上一个防火墙能够包含OSI模型中的很多层,并且可能会涉及进行数据包过滤的设备,它可以实施数据包检查和过滤,在更高的层次中对某应用程序实现某一策略,或做更多类似的事情.防火墙的功能主要是隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则定义的行为进行处理的一组功能组件,基本上的实现都是默认情况下关闭所有的访问,只开放允许访问的策略:防火墙分主机防火墙.网络防火墙.硬件防

Linux防火墙(iptables )的功能详解二

iptables/netfilter的网络防火墙 接上文继续讲解网络防火墙和nat功能的基础功能: 网络防火墙的功能简单讲就是,所有经由本机的一个接口进来的报文在本地路由决策后路由的目标地址不是本机,需要帮忙转发到其它网络当中或来源网络中去的这种请求时的场景,我们就称为转发功能: 那么转发的报文必须是经由forward链(含三个链,prerouting,forward,postrouting),不过过滤只能在forward实现: 请注意:定义在forward链上的策略只对那些经由本机转发的报文才

Linux防火墙之iptables常用扩展处理动作

前文我们讲了iptables的扩展匹配,一些常用的扩展模块以及它的专有选项的使用和说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12285152.html:今天我们来说说iptables的处理动作:iptables的处理动作分基本处理动作和扩展处理动作,基本处理动作有ACCEPT和DROP 这两个动作很好理解,一个表示放行操作,一个表示丢弃操作.扩展处理动作有REJECT,这个动作表示拒绝,通常情况下建议都用DROP 去丢弃不想通过的报文,REJEC

Linux防火墙之iptables建立规则和链

在RHEL 7.0中安装启动iptables: yum install iptables-services                    #安装iptables systemctl mask firewalld.service              #屏蔽firewalld服务 systemctl enable iptables.service            #设置开机启动 systemctl enable ip6tables.service          #设置开机启动

linux防火墙之iptables

linux有两个防火墙机制,一个是selinux,一个是netfilter. selinux这种机制的限制太多,配置也特别繁琐,所以很少有人去应用它,我们一般都要把selinux关闭,以免引起不必要的麻烦.selinux可以用命令:setenforce 0临时关闭或者修改配置文件vim /etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled永久关闭. 下面主要讲netfilter防火墙:大家习惯叫它iptables,iptables是lin