Linux防火墙详解「建议收藏」

Linux防火墙详解「建议收藏」防火墙介绍inux防火墙主要工作在网络层,属于典型的包过滤防火墙。在RHEL中常用的有两种火墙工具iptables和firewalld,但软件本身其实并不具备防火墙功能,他们的作用都是在用户空间中管理和维护规则,只不过规则结构和使用方法不一样罢了,真正利用规则进行过滤是由内核netfilter完成的。netfilterIP信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在Lin

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

防火墙介绍

inux防火墙主要工作在网络层,属于典型的包过滤防火墙。在RHEL中常用的有两种火墙工具iptables和firewalld,但软件本身其实并不具备防火墙功能,他们的作用都是在用户空间中管理和维护规则,只不过规则结构和使用方法不一样罢了,真正利用规则进行过滤是由内核netfilter完成的。
netfilter IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的 链(chain)中。我马上会详细讨论这些规则以及如何建立这些规则并将它们分组在链中。
在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。如下图:
在这里插入图片描述

iptables和firewalld的区别

  1. 与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:

    FirewallD 使用区域和服务而不是链式规则。
    FirewallD可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效。

  2. Firewalld 跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。

  3. iptables 服务在 /etc/sysconfig/iptables 中储存配置,而 FirewallD 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里,使用 iptables 的时候每一个单独更改意味着清除所有旧有的规则和从 /etc/sysconfig/iptables 里读取所有新的规则,使用 firewalld 却不会再创建任何新的规则;仅仅运行规则中的不同。因此 FirewallD 可以在运行时改变设置而不丢失现行配置。

火墙策略之三链五表

netfilter是Linux 2.4内核引入的全新的包过滤引擎。由一些数据包过滤表组成,这些表包含内核用来控制信息包过滤的规则集。iptables等等都是在用户空间修改过滤表规则的便捷工具。

netfilter在数据包必须经过且可以读取规则的位置,共设有5个控制关卡。这5个关卡处的检查规则分别放在5个规则链中(有的叫钩子函数(hook functions)。也就是说5条链对应着数据包传输路径中的5个控制关卡,链中的规则会在对应的关卡检查和处理。任何一个数据包,只要经过本机,必然经过5个链中的某个或某几个。

PREROUTING 数据包刚进入网络接口之后,路由之前,
INPUT 数据包从内核流入用户空间。
FORWARD 在内核空间中,从一个网络接口进入,到另一个网络接口去。转发过滤。
OUTPUT 数据包从用户空间流出到内核空间。
POSTROUTING 路由后,数据包离开网络接口前。
默认表 表中存放数据
filter 经过本机内核的所有数据(input output forward)
nat 不经过内核的数据(postrouting prerouting input output)
mangle 当filter和nat表不够用时使用,表中记录对链数据的补充解释说明(input output forward postrouting prerouting)

iptables的使用

因为防火墙之间存在冲突,所以在使用iptables时须关闭并冻结firewalld

yum install iptables-services
systemctl mask firewalld
systemctl enable –now iptables.service

保存策略

** 方法一**
iptables-save > /etc/sysconfig/iptables
方法二
service iptables save

iptables命令

iptables
-t ##指定表名称
-n ##不做解析
-L ##查看
-A ##添加策略
-p ##指定协议
–dport ##指定目的地端口
-s ##指定来源
-j ##指定动作
ACCEPT ##允许
DROP ##丢弃
REJECT ##拒绝
SNAT ##源地址转换
DNAT ##目的地地址转换
-F ##清空表中策略
-N ##新建链
-E ##更改链名称
-X ##删除链
-D ##删除规则
-I ##插入规则
-R ##更改规则
-P ##更改默认规则
注意:火墙策略是由上到下读取,当第一条与第二条发生冲突时,第一条策略生效。

查看表filter策略
在这里插入图片描述
清空策略,在INPUT链中指定允许所有,查看策略(默认查看filter)
在这里插入图片描述
删除INPUT链中的第一条策略
在这里插入图片描述

iptables -P INPUT DROP 改变INPUT链的默认状态为丢弃

在这里插入图片描述

指定协议为tcp,端口为22的被允许
在这里插入图片描述

firewalld的使用

firewalld的开启与关闭

systemctl disable –now iptables.service 关闭
systemctl unmask firewalld.service 解冻
systemctl enable –now firewalld.service 开启
systemctl mask iptables.service 冻结

firewall的模式

trusted 信任模式:接受所有连接
home 家庭网络:允许ssh,mdns, ipp-client, samba-client, dhcp-client
work 工作网络:允许ssh, ipp-client, dhcp-client
public 公共模式:ssh,dhcp-client
dmz 军工级:ssh
block 拒绝所有
drop 丢弃,所有的连接都不回复
intter 内部网络:ssh,mdns,ipp-client,samba-client
externa l ipv4网络地址伪装发送 sshd

管理命令

    firewall-cmd --state    ##查看火墙状态
    firewall-cmd --get-active-zones    ##查看当前火墙中生效的域
    firewall-cmd --get-default-zone    ##查看默认域
    firewall-cmd --list-all    ##查看默认域中的火墙策略
    firewall-cmd --list-all --zone=work    ##查看指定域的火墙策略
    firewall-cmd --set-default-zone=trusted    ##设定默认域
    firewall-cmd --get-services    ##查看所有可以设定的服务
    firewall-cmd --permanent --remove-service=cockpit    ##移除服务(刷新后生效)
    firewall-cmd --reload    重启服务
    firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block    ##指定数据来源访问指定域
    firewall-cmd --reload    
    firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block    ##删除自定域中的数据来源
    firewall-cmd --permanent --remove-interface=ens224 --zone=public    ##删除指定域的网络接口
    firewall-cmd --permanent --add-interface=ens224 --zone=block    ##添加指定域的网络接口
    firewall-cmd --permanent --change-interface=ens224 --zone=public    ##更改网络接口到指定域

高级规则

firewall-cmd –direct –get-all-rules :查看高级规则

firewalld中的NAT地址转换

firewall-cmd –add-masquerade
firewall-cmd –reload

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190678.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月16日 上午8:43
下一篇 2026年2月16日 上午9:15


相关推荐

  • 面试官问:如何防超卖,有几种实现方式

    面试官问:如何防超卖,有几种实现方式

    2022年2月20日
    75
  • MAC下Myeclipse SVN插件安装(亲测成功)[通俗易懂]

    MAC下Myeclipse SVN插件安装(亲测成功)[通俗易懂]今天在mac上安装MyEclipse后安装SVN插件,按照网上的教程

    2022年7月21日
    14
  • OpenClaw 部署实战系列一(选型)

    OpenClaw 部署实战系列一(选型)

    2026年3月13日
    1
  • java int和Integer的区别

    java int和Integer的区别1 区别 Integer 是 int 的包装类 int 则是 java 的一种基本数据类型 Integer 变量必须实例化后才能使用 而 int 变量不需要 Integer 实际是对象的引用 当 new 一个 Integer 时 实际上是生成一个指针指向此对象 而 int 则是直接存储数据值 Integer 的默认值是 null int 的默认值是 02 比较 2 1 由于 Integer 变量实际上是对一个 Integer 对象的引

    2026年3月18日
    3
  • 函数依赖关系的例子_部分函数依赖

    函数依赖关系的例子_部分函数依赖这里写自定义目录标题完全函数依赖、部分函数依赖和传递函数依赖举例1.完全依赖:2.部分函数依赖:传递函数依赖:完全函数依赖、部分函数依赖和传递函数依赖举例1.完全依赖:通过{学生学号,选修课程名}可以得到{该生本门选修课程的成绩},而通过单独的{学生学号}或者单独的{选修课程名}都无法得到该成绩,则说明{该生本门选修课程的成绩}完全依赖于{学生学号,选修课程名}2.部分函数依赖:通过{学生学号,课程号}可以得到{该生姓名},而通过单独的{学生学号}已经能够得到{该生姓名},则说明{该生姓

    2025年5月25日
    5
  • nfs图片服务器

    nfs图片服务器最近公司需要 图片从应用里面分离出来 如果将图片服务和应用服务放在同一个服务器的话 应用服务器很容易会因为图片的高 I O 负载而崩溃 因此对于有些大型网站项目 我们有必要将图片服务器和应用服务器分离 下图是我画的一个简单的用户 应用服务器 nfs 图片服务器的一个流转草图 从图片上分析 nbsp 192 168 1 252 作为服务器 nbsp 192 168 1 251 作为客户端

    2025年9月18日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号