防火墙是什么
防火墙(英语: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 |
匹配流程
四表五链的关系
规则表的作用:容纳各种规则链
规则链的作用:容纳各种防火墙的规则
简单记忆就是:表中有链,链中有规则
iptables管理选项
命令格式:
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
管理选项 | 作用 |
-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
[root@hj opt]# iptables -nL
数字化显示
注意:当-nL同时使用时,n一定要在L 的前面,否则会报错,使用-vnL时也是如此,L要在最后面
查看入口处规则
指定表查看(指定表中链的查看)
[root@hj opt]# iptables -vnL
#默认显示是filter表
[root@hj opt]# iptables -t nat -vnL
对表进行编号
[root@hj opt]# iptables -t filter -vnL --line-numbers
iptable命令匹配规则:
从上往下按照顺序匹配,匹配到了规则,后面的规则就不再匹配
这里我先将icmp协议关闭,然后再开启之后,也无法Ping通,是因为匹配规则是从上往下的顺序匹配,第一个匹配成功之后,接下来的规则就不再匹配
通过 iptables -vnL INPUT --line-numbers查看,第一个匹配规则是REJECT,匹配成功,接下来的规则便不再执行,即ACCEPT命令不再执行。
以上这种情况,可以用 -d 清空所有规则,再输入需要规则,但是太过于麻烦,有更优解:插入 ,即 iptables -I
iptables -I INPUT 1 -p icmp -j ACCPET
#此处的1,就是在INPUT(序号1)之前插入规则,即刻生效
对指定编号删除
iptables -D INPUT 2
代码逻辑:
先查--->根据编号--->指定删除
对行的编号进行修改(不推荐使用)
为了保险起见,我们可以尝试着先添加一条新的规则,确保新规则不会带来任何不利的影响再删除旧的规则(也能达到替换的效果)
iptables -R INPUT 1 -p icmp -j ACCEPT
查找--->编号--->修改
如图,将第一行的规则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
自定义的链无法使用,需要将自定义链添加到系统当中
添加系统当中后才能够使用
iptables -I INPUT 1 -p icmp -j zzr
如此,自定义链添加到系统中可以使用。
删除自定义链
因为创建自定义链时,是先创建,再添加到系统中,删除的话就按照上述步骤反推,先删除系统当中的自定义链,最后删除自定义链
iptables -D INPUT 1
删除自定义链
即可