目录
一、概述
二、iptables
三、iptable的用法
一、概述
防火墙的作用
用于保护内网安全的一种设备
依据规则进行防护
用户定义规则
允许或拒绝外部用户访问
防火墙分类
逻辑上划分,防火墙可以大体分为主机防火墙和网络防火墙主机防火墙:针对于单个主机进行防护
网络防火墙:针对网络进行防护,处于网络边缘,防火墙背后是本地局域网网络防火墙主外(服务集体),主机防火墙主内(服务个人)
物理上划分,防火墙可分为硬件防火墙和软件防火墙
硬件防火墙:在硬件级别实现防火墙功能,另一部分基于软件实现,其性能高,硬件成本高
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,其性能相较于硬件防火墙低,成本较低,对于Linux系统已自带,直接使用即可
防火墙性能
吞吐量
并发连接
新建连接
时延
抖动
硬件防火墙
硬件防火墙定义
硬件防火墙是指把具备配置数据包通过规则的软件嵌入硬件设备中,为网络提供安全防护的硬件设备。多见于网络边缘。
硬件防火墙作用(拓扑图 ups)
软件防火墙
软件防火墙是单独使用具备配置数据包通过规则的软件来实现数据包过滤。多见于单主机系统或个人计算机
硬件防火墙与软件防火墙比较
硬件防火墙有独立的硬件设备,运算效率较高,价格略高,可为计算机网络提供安全防护。
软件防火墙必须部署在主机系统之上,相较于硬件防火墙运算效率低,在一定程度上会影响到主机系统性能,一般用 于单机系统或个人计算机中,不直接用于计算机网络中。
二、iptables
iptables是什么?
iptables不是防火墙,是防火墙用户代理
用于把用户的安全设置添加到“安全框架”中
“安全框架”是防火墙
“安全框架”的名称为netfilter
netfilter位于内核空间中,是Linux操作系统核心层内部的一个数据包处理模块
iptables是用于在用户空间对内核空间的netfilter进行操作的命令行工具
netfilter/iptables功能
netfilter/iptables可简称为iptables,为Linux平台下的包过滤防火墙,是开源的,内核自带的,可以代替成本较高的 企业级硬件防火墙,能够实现如下功能:
数据包过滤,即防火墙
数据包重定向,即转发
网络地址转换,即可NAT
注:平常我们使用iptables并不是防火墙的“服务”,而服务是由内核提供的。
iptables概念
iptables工作依据 规则(rules)
iptables是按照规则(rules)来办事的,而规则就是运维人员所定义的条件;规则一般定义为“如果数据包头符合这样的 条件,就这样处理这个数据包”。
规则存储在内核空间的数据包过滤表中,这些规则分别指定了源地址、目的地址,传输协议(TCP、UDP、ICMP)和服 务类型(HTTP、FTP)等。
当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,比如放行(ACCEPT)、拒绝(REJECT)、 丢弃(DROP)等
iptables中链的概念
在iptables中,链是规则的集合,它定义了数据包在iptables中的处理流程。每个数据包在经过iptables时,都会按照规则从一个链中的一个规则开始,然后依次检查和匹配其他规则,直到遇到一个匹配的规则,或者到达链的末尾。根据匹配结果,可以决定是允许数据包通过,还是拒绝或者进行其他操作。
iptables包含以下几种预定义链:
INPUT链:用于处理进入本机的数据包,包括通过网络接口进入的数据包。
OUTPUT链:用于处理从本机发出的数据包,包括通过网络接口发出的数据包。
FORWARD链:用于处理通过本机的数据包,但不是本机产生和消费的数据包。例如,当本机作为路由器或防火墙时,用于处理转发给其他主机的数据包。
此外,还有一些其他的特殊链,例如:
PREROUTING链:在数据包到达本机内核之前,在路由选择之前执行的链。
POSTROUTING链:在数据包离开本机内核之前,在路由选择之后执行的链。
NAT链:用于网络地址转换(NAT)操作的链,例如实现端口转发和IP伪装等功能。
用户也可以创建自定义链,并将规则添加到自定义链中,以实现更复杂和个性化的规则控制。自定义链可以在预定义链中被引用和调用,并允许更精细地控制数据包的处理流程。
iptables中表的概念
每个“规则链”上都设置了一串规则,这样的话,我们就可以把不同的“规则链”组合成能够完成某一特定功能集合分 类,而这个集合分类我们就称为表,iptables中共有5张表,学习iptables需要搞明白每种表的作用。
filter: 过滤功能,确定是否放行该数据包,属于真正防火墙,内核模块:iptables_filter
nat: 网络地址转换功能,修改数据包中的源、目标IP地址或端口;内核模块:iptable_nat
mangle: 对数据包进行重新封装功能,为数据包设置标记;内核模块:iptable_mangle
raw: 确定是否对数据包进行跟踪;内核模块:iptables_raw
security:是否定义强制访问控制规则;后加上的
iptables中表链之间的关系
我们在应用防火墙时是以表为操作入口的,只要在相应的表中的规则链上添加规则即可实现某一功能。那么我们就应 该知道哪张表包括哪些规则链,然后在规则链上操作即可。
filter表可以使用哪些链定义规则:INPUT,FORWARD,OUTPUT
nat表中可以使用哪些链定义规则:PREROUTING,OUTPUT ,POSTROUTING,INPUT
mangle 表中可以使用哪些链定义规则:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw表中可以使用哪些链定义规则:PREROUTING,OUTPUT
iptables规则匹配条件分类
基本匹配条件:
源地址,目标地址,源端口,目标端口等
基本匹配使用选项及功能
- -p protocal指定规则协议,tcp(传输层) udp(传输层) icmp(网络层) ip(网络层)
- -s source 指定数据包的源地址,192.168.1.10
- -d destination指定目的地址
- -i 输入网卡接口 如:lo本地回环,ens33
- -o 输出网卡接口 如:ens37,ens33等
- ! 取 反
基本匹配的特点是:无需加载扩展模块,匹配规则生效
扩展匹配条件:
扩展匹配又分为显示匹配和隐式匹配。
扩展匹配的特点是:需要加载扩展模块,匹配规则方可生效。
隐式匹配的特点:使用-p选项指明协议时,无需再同时使用-m选项指明扩展模块以及不需要手动加载扩展模块; 显示匹配的特点:必须使用-m选项指明要调用的扩展模块的扩展机制以及需要手动加载扩展模块。
隐式匹配选项及功能
-p tcp--sport 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围--dport 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围-p udp--sport 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围--dport 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围--icmp-type0/0: echo reply 允许其他主机ping8/0:echo request 允许ping其他主机
iptables规则中动作
iptables规则中的动作常称为target,也分为基本动作和扩展动作。
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给任何回应信息
REJECT:拒绝数据包通过,发送回应信息给客户端
SNAT:源地址转换
解释1:数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,接收方认为数据包的来源是被替换的那个IP主机,返回响应时,也以被替换的IP地址进行。
解释2:修改数据包源地址,当内网数据包到达防火墙后,防火墙会使用外部地址替换掉数据包的源IP地址(目的IP地址不变),使网络内部主机能够与网络外部主机通信。
MASQUERADE:伪装,类似于SNAT,适用于动态的、临时会变的ip地址上,例如:家庭使用的宽带。 用发送数据的网卡上的IP来替换源IP,对于IP地址不固定场合使用。
DNAT:目标地址转换
解释1:数据包从网卡发出时,修改数据包中的目的IP,表现为你想访问A,但因网关做了DNAT,把所有 访问A的数据包中的目的IP地址全部修改为B,实际最终访问的是B。
解释2:改变数据包目的地址,当防火墙收到来自外网的数据包后,会将该数据包的目的IP地址进行替换(源IP地址不变),重新转发到内网的主机。
REDIRECT:在本机做端口映射
LOG:在/var/log/message文件中记录日志信息,然后将数据包传递给下一条规则。
iptables基础语法结构:iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]
iptables链管理方法
-N, --new-chain chain:新建一个自定义的规则链;
-X, --delete-chain [chain]:删除用户自定义的引用计数为0的空链;
-F, --flush [chain]:清空指定的规则链上的规则;
-E, --rename-chain old-chain new-chain:重命名链;
-Z, --zero [chain [rulenum]]:置零计数器; 注意:每个规则都有两个计数器
packets:被本规则所匹配到的所有报文的个数; bytes:被本规则所匹配到的所有报文的大小之和;
-P, --policy chain target 制定链表的策略(ACCEPT|DROP|REJECT)
iptables规则管理
-A, --append chain rule-specification:追加新规则于指定链的尾部;
-I, --insert chain [rulenum] rule-specification:插入新规则于指定链的指定位置,默认为首部;
-R, --replace chain rulenum rule-specification:替换指定的规则为新的规则;
-D, --delete chain rulenum:根据规则编号删除规则;
-D, --delete chain rule-specification:根据规则本身删除规则;
iptables规则显示
-L, --list [chain]:列出规则;
-v, --verbose:详细信息;
-vv 更详细的信息
-n, --numeric:数字格式显示主机地址和端口号;
-x, --exact:显示计数器的精确值,而非圆整后的数据;
--line-numbers:列出规则时,显示其在链上的相应的编号;
-S, --list-rules [chain]:显示指定链的所有规则;
iptables -F #删除现有规则
三、iptable的用法
iptable -nL:查看iptables规则,可以快速列出防火墙规则,同时避免了名称解析的延迟
iptables -F:删除现有规则
192.168.115.3可以ping115.4 ,不可以ssh 192.168.115.4
iptables -I INPUT -s 192.168.115.3 -p tcp --dport 22 -j REJECT
验证
192.168.115.3 不可以ping 192.168.115.4,但是可以ssh 192.168.115.4
iptables -I INPUT -s 192.168.115.3 -p icmp -j REJECT
验证