当前位置: 首页 > article >正文

【Linux】-学习笔记10

第八章、Linux下的火墙管理及优化

1.什么是防火墙

从功能角度来讲
         防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出

从功能实现角度来讲
        火墙是系统内核上的一个模块netfilter(数据包过滤机制)
        通过netfiler来管理kernelspace中的策略

2.netfilter简介

Netfilter是Linux 2.4.x引入的一个子系统

它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪等等netfilter分析OSI七层协议的2、3、4层

netfiler可以直接分析数据包头部数据,包括硬件地址,软件地址、TCP、UDP、ICMP等数据包的信息都可以进行过滤分析

Iinux的netfilter机制可以进行的工作有:

  • 拒绝让Internet的数据包进入主机的某些端口。
  • 拒绝让某些来源ip的数据包进入。
  • 拒绝让带有某些特殊标志(fag)的数据包进入,最常拒绝的就是带有SYN的主动连接的标志。
  • 分析硬件地址(MAC)来决定连接与否。
  • 地址转换。

防火墙并不能有效阻挡病毒或木马程序,并且防火墙对于内部LAN的攻击无能为力

3.netfilter策略管理工具

netfilter这个内核网络栈过滤框架的使用需要通过iptables或nftables来进行

与netfilter进行交互工具常用种类:

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

4.netfilter的五类HOOK函数及iptables的默认列表和链

4.1五类hook函数

  • NF_IP_PRE ROUTING:位于路由之前,报文一致性检査之后(报文一致性检查包括: 报文版本、报文长度和checksum
  • NF IP LOCAL_IN:位于报文经过路由之后,并且目的是本机的。
  • NF _IP FORWARD:位于在报文路由之后,目的地非本机的。
  • NF IP_LOCAL_OUT:由本机发出去的报文,并且在路由之前。
  • NF IP POST ROUTING:所有即将离开本机的报文。

5.什么是内核空间的iptables

iptables 是基于Netfilter框架实现的报文选择系统

iptables用于报文的过滤、网络地址转换和报文修改等功能

iptables 本质上是包含了5个规则表,而规则表则包含了一些列的报文的匹配规则以及操作目

  • raw表:第一优先级的表,设置raw表规则后,不会对数据包进行链接跟踪和NAT转换,使用于PREROUTING和OUTPUT链,对应的动作为NOTRACK。
  • mangle表:第二优先级的表,根据规则,修改数据包的TOS(TypeOfService,服务类型)、TTL(TimeToLive,生存周期)以及设置Mark标记,以实现Qos以及策略路由等。
  • nat表:第三优先级的表,网络地址转换表,用于修改源和目的的地址,分SNAT(源目的地址转换)和DNAT(目的地址转换)。
  • filter表:第四优先级的表,用于控制到达链(forward链、input链、output链)上的数据包,是放行(accepte)、丢弃(drop)或者拒绝(reject)。
  • security表:最不常用的表(通常,我们说iptables只有4张表,security表是新加入的特性),用于在数据包上应用SELinux。

6.iptbales服务

6.1iptables简介

iptables服务是用户管理内核空间的iptables的管理工具,通过iptables书写内核空间的iptables策略

iptables的规则是至上而下的读取方式,遇到与数据包信息匹配的规则后直接采用

iptables的规则默认保存在内存中,如果需要永久保存需要把策略以字符的形式保存到/etc/sysconfig/iptables中

为了设置iptables的环境,我们将火墙关闭,并且禁用

systemctl disable --now firewalld
​
systemctl mask firewalld   #mask选项用于将服务单元文件链接到/dev/null,这是一种更严格的禁用方式。

iptables and ip6tables misc utilities   #下载

并且启动,查看状态

iptables -L   #查看状态

iptables  -F    #--flush [chain]清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则

刷新后,没有进行永久的保存

cat /etc/sysconfig/iptables

查询后依然可以查看

但是进行永久保存后

 service iptables save

其中的策略已经被更新

6.2iptables命令的语法格式和常用参数

6.2.1添加策略
iptables -A INPUT -p tcp 22 -j ACCEPT  #用于放行 HTTP(Hyper - Text Transfer Protocol)服务相关的网络流量。它允许目的端口为 80 的 TCP 数据包进入系统。
​
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   
​
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
​
iptables -A INPUT -i lo -j ACCEPT    #这条规则是针对本地回环接口(lo)的。本地回环接口的 IP 地址通常是 127.0.0.1。
​
iptables -A INPUT  -s 172.25.254.100 -p tcp --dport 53 -j ACCEPT   #允许来自特定源 IP 地址(172.25.254.100)的、协议为 TCP 且目的端口为 53 的数据包进入系统。端口 53 通常与 DNS(Domain Name System)服务相关,TCP 协议的端口 53 主要用于区域传输等复杂的 DNS 操作。
​
iptables -A INPUT -j REJECT   #对于进入本机的所有网络数据包(因为前面没有添加其他诸如协议、端口、源地址等限定条件),都会直接向发送方发送拒绝响应,告知对方数据包不能进入本机,相当于阻断了所有外来的网络连接请求进入系统。

查看

6.2.2修改策略

修改之前的端口80为8080

iptables -R INPUT 2 -p tcp --dport 8080 -j ACCEPT

6.2.3策略的删除
iptables -D INPUT 6

删除后查看

6.2.4插入策略
iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT

6.2.5修改默认规则
iptables -P FORWARD DROP

修改之前

修改之后

6.2.6添加一个新的策略表
iptables -N lee

新建之前有三张表

添加一个lee表

修改表的名字

iptables -E lee tim

删除表

iptables -X tim

7.firewalld

7.1.firewald服务管理方式与iptables的管理方式区别

iptables是基于Linux内核的Netfilter子系统构建的,直接操作Netfilter;而firewalld则通过libnftables库与Netfilter交互,提供了一个更高的抽象层。

iptables使用基于表的规则集,包括filter、nat、mangle、raw及securty五个表;firewalld采用基于区域的规则集,包括default、public、internal、external和dmz五个区域。

iptables的配置较为复杂,需要用户掌握特定的命令行语法;firewalld提供了更直观和灵活的配置方式,支持命令行和图形界面。

由于firewalld通过libnftables库与Netfilter交互,其性能相对于直接操作Netfilter的iptables来说较低。

由于firewalld通过libnftables库与Netfilter交互,其性能相对于直接操作Netfilter的iptables来说较低。

7.2firewalld域介绍

区域默认规则策略
阻塞区域(block)拒绝流入的流量,除非与流出的流量相关
工作区域(work)拒绝流入的流量,除非与流出的流量相关
家庭区域(home)拒绝流入的流量,除非与流出的流量相关
公共区域(public)不相信网络上的任何计算机,只有选择接受传入的网络连接
隔离区域(DMZ)隔离区域也称为非军事区域,内外网络之间增加的一层网络起到缓冲作用。对 于隔离区域,只有选择接受传入的网络连接。
信任区域(trusted)允许所有的数据包。
丢弃区域(drop)拒绝流入的流量,除非与流出的流量相关
内部区域(internal)等同于home区域
外部区域(external)拒绝流入的流量,除非与流出的流量有关;而如果流量与ssh服务相关则允许流量

firewalld中默认使用的域是pubic
firewalld默认提供的九个zones的调用文件都保存在"/usr/lib/firewalld/zones/"目录下


http://www.kler.cn/a/446791.html

相关文章:

  • [python SQLAlchemy数据库操作入门]-02.交易数据实体类建立
  • 2024年合肥师范学院信息安全小组内部选拔赛(c211)WP
  • 电源芯片MPQ2179A(TI)
  • Go框架比较:goframe、beego、iris和gin
  • GIT命令使用手册(详细实用版)
  • 分布式链路追踪-03-Jaeger、Zipkin、skywalking 中的 span 是如何设计的?
  • 呼入机器人:24小时客户服务的未来趋势
  • 秒优科技-供应链管理系统 login/doAction SQL注入漏洞复现
  • Oracle筑基篇-通过一个事务流程筑基Oracle
  • 基于mmdetection进行语义分割(不修改源码)
  • 怎么通过亚矩阵云手机实现营销?
  • Go框架比较:goframe、beego、iris和gin
  • jvm栈帧中的动态链接
  • [Unity Shader]【图形渲染】 数学基础4 - 矩阵定义和矩阵运算详解
  • SQLAlchemy 2.0 高级特性详解
  • SpringMVC 进阶学习笔记
  • 【Python】【数据分析】深入探索 Python 数据可视化:Seaborn 可视化库详解
  • (OCPP服务器)SteVe编译搭建全过程
  • 阿里数据仓库-数据模型建设方法总结
  • 计算无人机俯拍图像的地面采样距离(GSD)矩阵
  • 在uniapp Vue3版本中如何解决webH5网页浏览器跨域的问题
  • SpringBoot Redis 消息队列
  • uni APP关联服务空间
  • 机器学习-正则化技术
  • 算法题型整理—双指针
  • FreeRtos实时系统: 四.中断