Linux之防火墙详解

什么是防火墙

  • 防火墙时位于内部网外部网之间的屏障,它按照系统管理员预先定义好的规则控制数据包的进出

在这里插入图片描述

  • 火墙系统内核上的一个模块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这个内核网络栈过滤框架使用需要通过iptablesnftables进行

netfilter进行交互工具常用种类

  • iptables服务使用iptables交互,rhel6之前系统默认使用此服务管理手段丰富配置比较复杂
  • firewalld服务使用nftables交互,rhel6之后的版本默认使用此服务,配置类似windows火墙功能模块度高使用简单

在这里插入图片描述

  • iptablesfirewalld不是真正的防火墙,它们都只是用来定义防火墙策略管理工具,即只是一种服务,而真正使用规则干活的是内核的netfilter

netfilter5类hook函数

  • hook函数也叫规则链

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

防火墙规则

  • 放行
  • 阻止,拒绝
    • 拒绝返回信息拒绝
    • 阻止直接丢包

策略匹配原则

  • 防火墙从上至下顺序来读取配置策略
  • 找到匹配项后就立即结束配置工作并去执行匹配项中定义的行为即放行或阻止
  • 如果在读取完所有的策略没有匹配项,就去执行默认的策略

iptables

  • iptables从上至下顺序来读取配置策略
  • 找到匹配项后就立即结束配置工作并去执行匹配项中定义的行为即放行或阻止
  • 如果在读取完所有的策略没有匹配项,就去执行默认的策略
  • iptables规则默认保存在内存中,如果需要永久保存需要把策略保存到/etc/sysconfig/iptables
#永久保存
[root@server1 ~]# service iptables save

iptables流量处理动作

规则链匹配后应采用以下几种动作处理匹配流量

  • accept允许流量通过
  • reject拒绝流量通过拒绝后回复拒绝信息
  • log记录日志信息
  • drop拒绝流量通过流量丢弃不回复

iptables表

  • 表中可以有多种hook函数每个规则链中里可以有多个策略

5种规则表

  • raw表第一优先级不会数据包进行跟踪和nat转换,使用output,prerouting对应的动作notrack
  • mangle表第二优先级,主要用于修改数据包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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^~^前行者~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值