Linux---防火墙

2024-06-11 00:04
文章标签 linux 防火墙

本文主要是介绍Linux---防火墙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 目录

    文章目录

    前言

    一.静态防火墙:iptables

    iptables五链

    iptables 四表

     iptables控制类型

    iptables命令配置


前言

这儿主要介绍Linux系统本身提供的软件防火墙的功能,即数据包过滤机制。 数据包过滤,也就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决定该连接为放行或抵挡的机制。由于这种方式可以直接分析数据包头部数据,包括硬件地址,软件地址,TCP、UDP、ICMP等数据包的信息都可以进行过滤分析,因此用途非常广泛。


一.静态防火墙:iptables

        iptables 不是防火墙,而是客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的安全框架netfilter中。

iptables 特点:

  • netfilter位于内核空间中,而iptables是控制netfilter的工具,位于用户空间。
  • 通过iptables可以编写某些规则并保存到netfilter中,从而起到防护效果。
  • netfilter/iptables组成Linux平台下的包过滤防火墙,可以完成包过滤,NAT等功能。
  • iptables默认默认允许访问,需要拒绝的采取限制。

iptables五链

        五链实际是五规则链的简称,而每个规则链由多个规则组成;每个数据包被iptables过滤时都要经过如下五个规则链的筛选:

规则链位置作用场景
PREROUTING链数据包进入网络接口后,路由决策前可以用于修改数据包的目的地址(DNAT),改变数据包的路由路径用户目标NAT
INPUT链数据包在被路由到本地系统之后过滤进入本地服务器的数据包防火墙规则,允许或拒绝进入本地系统的流量
FORWARD链数据包在路由决策之后控制通过本地系统转发的数据包路由器或网关上,用于控制数据包的转发
OUTPUT链数据包由本地系统产生,经过路由决策之前控制本地系统发出的数据包允许或拒绝本地系统发送的流量
POSTROUTING链据包离开网络接口之前可以用于修改数据包的源地址,改变数据包离开系统时的地址信息用户源NAT

iptables 四表

        在Linux中的iptables中,表(tables)是用于组织规则链的结构。iptables包含四个主要的表,每个表专门用于不同类型的数据包处理。以下是主要的四个表:

功能默认链应用场景作用
filter表主要用于数据包过滤INPUT、FORWARD、OUTPUT根据定义的规则决定是否接受、拒绝或丢弃数据包防火墙规则
nat表用于网络地址转换(NAT)PREROUTING、POSTROUTING、OUTPUT改数据包的源地址或目的地址,以实现地址映射和端口转发NAT
mangle表用于对数据包进行修改PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD可以修改数据包的TTL值等需要对数据包的服务质量(QoS)进行控制或流量整形时
raw表对数据包的状态跟踪机制PREROUTING、OUTPUT可以决定数据包是否被状态跟踪机制处理,通常用于实现高性能的处理需要对状态跟踪机制进行细粒度控制时

 数据包到达防火墙根据下图进行匹配:

 iptables控制类型

        iptables的每张表包含不同的控制类型,不同的控制类型允许管理员对数据包执行不同的操作。以下是iptables的主要控制类型:

  •  Accept:允许数据包通过
  • Drop:丢弃数据包
  • Reject:拒绝数据包通过
  • Snat:修改数据包源IP
  • Dnat:修改目标IP
  • Masquerade:伪装成一个非固定的公网IP
  • Log:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

iptables命令配置

基本语法:

iptables [选项] 命令 [链] [匹配条件] [目标]iptables -t 表名 【参数】 规则链名  -p 协议名 -s 源IP --sport 源端口 -d 目标IP --dport 目标端口 -j 动作参数:
-A:在指定链的末尾插入指定的规则
-D:在指定的链中删除 一个或多个指定规则
-I: 在指定链中的指定位置插入一条或多条 规则
-R: 替换/修改第几条规则

常见选项:

 演示案例:

#允许所有IP访问3306端口
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT#允许指定IP访问3306端口
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT#显示规则
iptables -L#保存规则#删除INPUT链表中的规则
iptables -D INPUT -p tcp --dport 3306 -j ACCEPT

注意:iptables的匹配规则是自上而下匹配,当遇见如下情况:如Mysql数据库的3306端口已经开放,但是仍然无法通过3306端口远程连接,此时可能是在开放3306的规则之前的某些规则阻止了连接。

上述情况解决办法如下:在INPUT链表首部插入规则

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

 或者可以逐一在每条规则之前插入规则来测试阻止连接的规则是哪一条

#在在 INPUT 链的第2个位置插入一条允许所有 IP 地址访问 3306 端口的规则
iptables -I INPUT 2 -p tcp --dport 3306 -j ACCEPT

找到阻止连接的规则后可以删除阻止连接的规则

#删除链表指定位置的规则
sudo iptables -D INPUT 2

 


总结

这篇关于Linux---防火墙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049649

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

Linux 下的Vim命令宝贝

vim 命令详解(转自:https://www.cnblogs.com/usergaojie/p/4583796.html) vi: Visual Interface 可视化接口 vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式)输入模式末行模式 模式转换: 编辑-->输入: i: 在当前光标所在字符的前面,转为输入模式

Linux和Mac分卷压缩

使用 zip 命令压缩文件 使用 zip 命令压缩文件,并结合 split 命令来分卷: zip - largefile | split -b 500k 举例: zip - ./tomcat.dmg |split -b 500k 上述命令将文件 largefile 压缩成 zip 包并分卷成不超过 500k 的文件,分解后文件名默认是 x* ,后缀为 2 位a-z 字母,如 aa、ab。

Linux文本三剑客sed

sed和awk grep就是查找文本当中的内容,最强大的功能就是使用扩展正则表达式 sed sed是一种流编辑器,一次处理一行内容。 如果只是展示,会放在缓冲区(模式空间),展示结束后,会从模式空间把结果删除 一行行处理,处理完当前行,才会处理下一行。直到文件的末尾。 sed的命令格式和操作选项: sed -e '操作符 ' -e '操作符' 文件1 文件2 -e表示可以跟多个操作

Linux中拷贝 cp命令中拷贝所有的写法详解

This text from: http://www.jb51.net/article/101641.htm 一、预备  cp就是拷贝,最简单的使用方式就是: cp oldfile newfile 但这样只能拷贝文件,不能拷贝目录,所以通常用: cp -r old/ new/ 那就会把old目录整个拷贝到new目录下。注意,不是把old目录里面的文件拷贝到new目录,