华子目录
什么是防火墙
防火墙时位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出

火墙是系统内核上的一个模块netfilter(数据包过滤机制)- 通过
netfilter来管理kernel space(内核空间)的策略
- 没有
火墙时,流量直接访问内核管理的服务- 有
火墙时,会在内核上开一个内核空间(记录了什么流量可以通过,什么流量不可以通过)。负责往内核空间里面写东西的是netfilter- 一个
linux内核上有2个网卡,只有开启内核路由转发功能,2个网卡才能通信
分类
硬件防火墙:由厂商设计好的主机硬件,其操作系统主要以提供数据包数据的过滤机制为主,并去掉不必要的功能软件防火墙:保护系统网络安全的一套软件
netfilter(数据包过滤)
定义
netfilter是一个工作在Linux内核的网络数据包处理框架,用于分析进入主机的网络数据包- 将
数据包的头部数据(硬件地址,软件地址,TCP,UDP,ICMP等)提取出来进行分析,来决定该连接为放行还是抵挡 netfilter分析OSI七层协议的2,3,4层
netfilter分析内容
拒绝让Internet的数据包进入主机的某些端口拒绝某些来源IP的数据包进入拒绝让带有某些特殊标志(flag)的数据包进入,如:带有SYN的主动连接标志- 分析
硬件地址(MAC地址)决定是否连接 - 可以做
nat地址转换
防火墙无法完成的任务
防火墙并不能杀毒或清除木马程序(假设主机开放了www服务,那么防火墙的设置一定是要将www服务的port开放给client端。假设www服务器有漏洞,或者请求www服务的数据包本身就是病毒的一部分时,防火墙时阻止不了的)防火墙无法阻止来自内部的攻击(防火墙对于内部的规则设置通常比较少,所以就很容易造成内部员工对于网络滥用的情况)
netfilter策略管理工具
netfilter这个内核网络栈过滤框架的使用需要通过iptables或nftables来进行
与netfilter进行交互工具常用种类
iptables服务使用iptables交互,rhel6之前系统默认使用此服务,管理手段丰富,配置比较复杂firewalld服务使用nftables交互,rhel6之后的版本默认使用此服务,配置类似windows火墙,功能模块度高,使用简单

iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的管理工具,即只是一种服务,而真正使用规则干活的是内核的netfilter
netfilter的5类hook函数
hook函数也叫规则链

电脑是客户端
input链:位于流量经过路由之后,并且目的ip是本机ipoutput链:由本机发出的流量,并且在路由之前forward链:位于在流量路由之后,目的ip不是本机ipprerouting链:位于路由之前,流量一致性检查之后postrouting链:所有即将离开本机的流量



防火墙规则
通(放行)堵(阻止,拒绝)拒绝:返回信息后拒绝阻止:直接丢包
策略匹配原则
防火墙会从上至下的顺序来读取配置的策略- 在
找到匹配项后就立即结束配置工作并去执行匹配项中定义的行为(即放行或阻止) - 如果在
读取完所有的策略后没有匹配项,就去执行默认的策略
iptables
iptables会从上至下的顺序来读取配置的策略- 在
找到匹配项后就立即结束配置工作并去执行匹配项中定义的行为(即放行或阻止) - 如果在
读取完所有的策略后没有匹配项,就去执行默认的策略 iptables的规则默认保存在内存中,如果需要永久保存需要把策略保存到/etc/sysconfig/iptables中
#永久保存
[root@server1 ~]# service iptables save
iptables流量处理动作
当规则链匹配后应采用以下几种动作来处理匹配的流量
accept:允许流量通过reject:拒绝流量通过,拒绝后回复拒绝信息log:记录日志信息drop:拒绝流量通过,流量丢弃不回复
iptables表
表中可以有多种hook函数,每个规则链中里可以有多个策略
5种规则表
raw表:第一优先级的表,不会对数据包进行跟踪和nat转换,使用output,prerouting,对应的动作为notrackmangle表:第二优先级的表,主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)值以及为数据包设置Mark标记,以实现Qos以及策略路由等- 由于需要
相应的路由设备支持,因此应用并不广泛,包含全部5个规则链
- 由于需要
nat表:第三优先级的表,网络地址转换表,用于修改源和目的地址,分snat(源地址转换)和dnat(目的地址转换)。包含三个规则链:output,prerouting,postrouting(和内核无关的数据包,主要做地址转换)filter表:第四优先级的表,用于对数据包过滤(外网进入内网时),根据具体的规则决定是否放行该数据包(如drop,accept,reject),包含三个规则链:input,forward,forward(经过内核处理过的所有网络包:input,output,forward)- 所谓的
防火墙其实基本上是指这张表上的过滤规则,常用
- 所谓的
security表:最不常用的表- 通常我们说的
iptables只有4张表,security表是新加入的特性,用于在数据包上应用selinux
- 通常我们说的
安装iptables
RHEL9,Centos7中默认使用的是firewalld,且与iptables之间有冲突,如果需要使用iptables需要先停止firewalld再进行安装
[root@server1 ~]# systemctl stop firewalld
[root@server1 ~]# systemctl disable firewalld
#锁服务,解锁服务使用unmask
[root@server1 ~]# systemctl mask firewalld.service
[root@server1 ~]# yum install iptables-services -y
[root@server1 ~]# systemctl enable --now iptables
[root@server1 ~]# systemctl is-active iptables
active
iptables策略文件
规则链存储文件在/etc/sysconfig/iptables
前三行为注释- 显示的是
filter表的规则链
[root@server1 ~]# cat /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
iptables命令的语法格式以及常用参数
永久保存策略
[root@server1 ~]# service iptables save #保存设置的规则
# 注意:保存设置的规则,否则重启后会恢复默认设置
格式
[root@server1 ~]# iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 控制动作
#-A添加策略
#-I在指定位置添加策略
#-D删除策略
#-R修改策略
#-j控制动作
参数
| 参数 | 作用 |
|---|---|
-t |
对指定的表进行操作,表必须是raw,nat,filter,mangle,security中的一个,默认是filter |
-p< |

最低0.47元/天 解锁文章
3703

被折叠的 条评论
为什么被折叠?



