Linux防火墙之iptables(上)

防火墙是什么

防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。 

安全技术的分类

1.入侵检测机制 特点:阻断,量化,定位来自内外的网络的威胁情况。

提供报警和时候监督,类似于监控。

2.入侵防御,以透明模式工作,分析数据包的内容,一切进入本机的内容进行防护,木马,蠕虫,系统漏洞进行分析判断,然后进行阻断,主动防护机制。部署在整个架构,或者是集群的入口处。(必经之路)

3.防火墙:隔离功能,工作在网络或者主机的边缘。

对网络或者主机进出的数据包按照一定规则进行检测。(网络层转发的数据包)

我们在工作当中,一般对防火墙的设置都是白名单(拒绝所有,允许个别)

4.防水墙,透明模式,华为的ensp监控就是防火墙。一切对于防水墙都是透明的。

在事前,事中,包括事后,都可以进行检测。

防火墙的种类

通过保护范围,可以将防火墙分为两类:

主机防火墙(firewalld),仅为当前主机服务

网络防火墙(iptables)包过滤防火墙。访问控制,每个数据包的源IP地址,目的IP地址,端口号,协议等进行组合式监控,由此来监控数据包是否允许通过。

通信的五要素和四要素分别是什么???

五要素:源/目的IP 源/目的端口 协议

四要素:源/目的IP 源/目的端口

 iptables的简介 

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
 

Iptables的四表五链

四表:

表名 作用
raw 连接跟踪,跟踪数据的一种机制。配置了之后,可以加快防火墙的穿越速度(关闭raw里面的追踪)
mangle 修改数据包的标记位规则
nat 地址转换的规则表
filter 包过滤规则表。根据预定义的规则,人工设置的规则,对符合条件的数据包进行过滤,也是iptables的默认表

四个表是有优先级的:

raw--->mangle--->nat--->filter

五链

链名 作用

prerouting链:

处理数据包进入本机之间的规则

input链:

处理数据包进入本机的规则

FORWARD:

处理数据包转发到其他主机的规则

output:

处理本机发出的数据包的规则,一般不做处理

一般对出口不做限制

postouting:

处理数据包离开本机之后的规则 NAT

匹配流程

Linux防火墙之iptables(上)_第1张图片

四表五链的关系

 规则表的作用:容纳各种规则链

规则链的作用:容纳各种防火墙的规则

简单记忆就是:表中有链,链中有规则

iptables管理选项

格式:

 命令格式:
 iptables  [-t 表名]    管理选项    [链名]     [匹配条件]     [-j 控制类型]

Linux防火墙之iptables(上)_第2张图片

管理选项 作用
-A 在指定链的末尾进行追加
-I 在指定链的行插入新的规则。可以指定插入规则的位置。
-P 修改默认策略(链的策略)
-D 删除
-R 修改,替换规则
-L 查看指定链的规则
-n 以数字形式显示规则
-v 查看详细信息
--line-numbers 给每个链中的规则进行编号查看。
-F 清空指定链当中的规则(慎用)
-X 清空自定义链的规则
-t 指定表名

匹配条件

匹配条件 作用
-p 指定数据包的协议类型
-s 指定数据包的源IP地址
-d 指定数据包的目的IP地址
-i 指定数据包进入本机的网络接口
-o 指定数据包离开本机的时候使用的网络接口
--sporrt 指定源端口
--dport 指定目的端口号

iptables控制类型(都是大写)

格式:

-j:控制类型

控制类型 作用
ACCEPT 允许数据包通过
DROP 拒绝数据包的通过,直接丢弃数据包,不给任何回应的信息
REJECT 拒绝,拒绝数据包通过,但是会给一个回显信息(回应信息)
SNAT 修改数据包的源地址
DNAT 修改数据包的目的地址

DROP 和REJECT的区别前者是直接丢弃传输过来的数据包,并且不给予回应,使访问主机卡在访问页面没有任何提示。后者是拒绝该数据包的通过,并且给予访问主机提示,该访问被拒绝。 

粗略查看默认规则

iptables -L

Linux防火墙之iptables(上)_第3张图片

[root@hj opt]# iptables -nL
数字化显示

Linux防火墙之iptables(上)_第4张图片

 注意:当-nL同时使用时,n一定要在L 的前面,否则会报错,使用-vnL时也是如此,L要在最后面

查看入口处规则

Linux防火墙之iptables(上)_第5张图片

指定表查看(指定表中链的查看) 

[root@hj opt]# iptables  -vnL
#默认显示是filter表

Linux防火墙之iptables(上)_第6张图片

[root@hj opt]# iptables -t nat  -vnL

Linux防火墙之iptables(上)_第7张图片

对表进行编号

[root@hj opt]# iptables -t filter -vnL --line-numbers

Linux防火墙之iptables(上)_第8张图片

iptable命令匹配规则:

从上往下按照顺序匹配,匹配到了规则,后面的规则就不再匹配

Linux防火墙之iptables(上)_第9张图片

这里我先将icmp协议关闭,然后再开启之后,也无法Ping通,是因为匹配规则是从上往下的顺序匹配,第一个匹配成功之后,接下来的规则就不再匹配Linux防火墙之iptables(上)_第10张图片

通过 iptables -vnL INPUT --line-numbers查看,第一个匹配规则是REJECT,匹配成功,接下来的规则便不再执行,即ACCEPT命令不再执行。

Linux防火墙之iptables(上)_第11张图片

以上这种情况,可以用 -d 清空所有规则,再输入需要规则,但是太过于麻烦,有更优解:插入 ,即 iptables -I

iptables -I INPUT 1 -p icmp -j ACCPET
#此处的1,就是在INPUT(序号1)之前插入规则,即刻生效

Linux防火墙之iptables(上)_第12张图片

对指定编号删除

iptables -D INPUT 2

代码逻辑:

先查--->根据编号--->指定删除

Linux防火墙之iptables(上)_第13张图片

对行的编号进行修改(不推荐使用)

为了保险起见,我们可以尝试着先添加一条新的规则,确保新规则不会带来任何不利的影响再删除旧的规则(也能达到替换的效果)

iptables -R INPUT 1 -p icmp -j ACCEPT

Linux防火墙之iptables(上)_第14张图片

查找--->编号--->修改

如图,将第一行的规则REJECT修改为 ACCEPT

以上都是IP+端口的匹配

下面介绍 IP+端口+网段+接口(网卡设备)

根据mac地址匹配

[root@hj ~]# iptables -A INPUT -i ens33 -s 20.0.0.0/24 -j DROP

整个20.0.0.0网段的数据都不能从ens33设备走

192.168.233.0整个网段不能用tcp.

当有两个端口时,小的端口在前,大的端口在后

-m:扩展模块,明确指定类型,多端口 MAC地址,IP范围

[root@hj ~]# iptables -A INPUT -p tcp -m multiport ==dport 80,22,21,53 -j REJECT
#要用逗号隔开

根据范围匹配

根据IP范围匹配

自定义链

通常是五链,但是Linux可以自定义链

#1.添加自定义链
iptables -N zzr
#zzr为自定义链名
iptables -vnL
#查看即可
iptables -I zzr 1 -p icmp -j ACCEPT

Linux防火墙之iptables(上)_第15张图片

自定义的链无法使用,需要将自定义链添加到系统当中

添加系统当中后才能够使用

iptables -I INPUT 1 -p icmp -j zzr

Linux防火墙之iptables(上)_第16张图片

如此,自定义链添加到系统中可以使用。

删除自定义链

因为创建自定义链时,是先创建,再添加到系统中,删除的话就按照上述步骤反推,先删除系统当中的自定义链,最后删除自定义链

iptables -D INPUT 1

Linux防火墙之iptables(上)_第17张图片

删除自定义链

Linux防火墙之iptables(上)_第18张图片

即可

你可能感兴趣的:(linux,服务器,运维)