Linux网络服务之iptables防火墙工具

news2024/9/20 14:25:51

I P T A B L E S

  • 一、防火墙简介
    • 1.1 netfilter
    • 1.2 firewalld和iptables
  • 二、iptables工具简述
    • 2.1 定义
    • 2.2 三种报文流向
    • 2.3 iptables的表、链结构(非常重要)
      • 2.3.1 "四表" ----- 规则表
      • 2.3.2 "五链" ----- 规则链
  • 三、iptables配置
    • 3.1 基本语法
      • 3.1.1 管理选项部分
      • 3.1.2 匹配条件部分
      • 3.1.3 处理动作部分
    • 3.2 查看规则
    • 3.3 添加规则
    • 3.4 根据规则编号删除 清空 替换规则
      • 3.4.1 查看规则编号
      • 3.4.2 替换
      • 3.4.3 删除
      • 3.4.4 清空
    • 3.5 默认策略
      • 3.5.1 简介
      • 3.5.2 查看与配置
    • 3.6 基本匹配条件
    • 3.7 扩展匹配条件
      • 3.7.1 隐性
        • .1 端口匹配
        • .2 TCP标志匹配
        • .3 ICMP类型匹配
      • 3.7.2 显示扩展模块
        • .1 multiport扩展 多端口
        • .2 iprange扩展 IP范围
        • .3 mac扩展 MAC地址(一般不用)
        • .4 string扩展 字符串
        • .5 time模块
        • .6 connlimit扩展 连接数量
        • .7 state 连接状态(重要)

一、防火墙简介

在这里插入图片描述

1.1 netfilter

Netfilter是一个Linux内核功能,用于在网络数据包从网络堆栈进入或离开时进行包过滤和操作。
Netfilter内称为防火墙的“内核态”。

1.2 firewalld和iptables

Firewalld和Iptables都不是防火墙,是防火墙管理工具,被称为防火墙的“用户态”。
Centos 7中默认管理防火墙规则的工具是firewalld。

二、iptables工具简述

2.1 定义

由软件包iptables提供的命令行工具。
工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。

2.2 三种报文流向

  • 流入本机:PREROUTING --> INPUT–>用户空间进程
  • 流出本机:用户空间进程 -->OUTPUT–> POSTROUTING
  • 转发:PREROUTING --> FORWARD --> POSTROUTING
#查看有没有安装
iptables --version 

在这里插入图片描述

2.3 iptables的表、链结构(非常重要)

在这里插入图片描述

2.3.1 “四表” ----- 规则表

规则表功能
filter表过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
nat表地址转换规则表
mangle表给数据包设置标记
raw表关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security表用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现

规则表间的顺序: raw --> mangle–> nat–>filter

规则表的作用容纳各种规则链

2.3.2 “五链” ----- 规则链

规则链功能
INPUT链处理入站数据包
OUTPUT链处理出站数据包
FORWARD链处理转发数据包
PREROUTING链在进行路由选择前处理数据包
PROROUTING链在进行路由选择后处理数据包

规则链的作用:容纳各种防火墙规则,对数据包进行过滤或处理。

链的分类依据:处理数据包的不同时机。

三、iptables配置

#前期准备
systemctl  stop firewalld

3.1 基本语法

iptables  [-t 规则表]  管理选项  [规则链]  [匹配条件]  [-j 处理动作]


iptables -t filter -A INPUT -s 192.168.0.1 - DROP

3.1.1 管理选项部分

管理选项用法示例
-A向规则链中添加一条规则,末尾追加
-I在规则链的指定位置插入一条规则,未指定序号默认作为第一条
-F 清除链中所有规则
-P设置规则链的默认策略
-D从规则链中删除一条规则
-R替换规则链中的一条规则
-L列出规则链中的所有规则
-n所有字段以数字形式显示
-v显示详细信息
- -line-number查看规则编号
-N创建一个新的自定义规则链
-X删除一个自定义规则链
-Z清空规则链中所有规则的数据包和字节数统计
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号
-E重新命名规则链
#允许来自192.168.1.0/24子网的数据包进入INPUT链
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

#删除允许来自192.168.1.0/24子网的数据包进入INPUT链的规则
iptables -D INPUT -s 192.168.1.0/24 -j ACCEPT

#在INPUT链的第2条规则之前插入一条允许来自192.168.1.0/24子网的数据包进入的规则
iptables -I INPUT 2 -s 192.168.1.0/24 -j ACCEPT

#将INPUT链中的第2条规则替换为拒绝来自192.168.1.0/24子网的数据包的规则
iptables -R INPUT 2 -s 192.168.1.0/24 -j DROP)
#列出INPUT链中的所有规则
iptables -L INPUT

#清空INPUT链中的所有规则
iptables -F INPUT

#清空INPUT链的数据包和字节数统计
iptables -Z INPUT

#将INPUT链的默认策略设置为DROP,即拒绝所有数据包
iptables -P INPUT DROP

#将FORWARD链重命名为NFORWARD
iptables -E FORWARD NFORWARD
#创建一个名为MYCHAIN的新规则链
iptables -N MYCHAIN
#删除名为MYCHAIN的自定义规则链
iptables -X MYCHAIN

3.1.2 匹配条件部分

指定匹配条件的选项功能
-p指定要匹配的 协议类型,例如TCP、UDP、ICMP等
-s指定IP地址或地址范围
-d指定 目标IP地址或地址范围
-i <网络接口>指定 输入网络接口
-o<网络接口>指定 输出网络接口
-m指定 扩展模块,用于进一步定义匹配条件
- -icmp-type指定ICMP类型
- -sport指定源端口号或端口范围
- - dport指定目标端口号或端口范围

3.1.3 处理动作部分

处理动作功能
DROP直接 丢弃数据包,不给出任何回应信息
REJECT 拒绝数据包通过,会给数据发送端一个响应信息
ACCEPT允许数据包通过(默认)
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则
MASQUERADE伪装成一个非固定公网IP地址

3.2 查看规则

iptables -vnL #查看所有规则表的规则

-v 详细信息
-n 数字形式显示
-L 查看规则列表

在这里插入图片描述

iptable -vnL -t [规则表]  #查看规则表的规则链,默认filter表

在这里插入图片描述

3.3 添加规则

#一般只对INPUT和PREROUTING规则链进行处理
#不处理OUTPUT POSTROUTING FORWARD
#新增规则,filter表为例

#拒绝来自 192.168.91.101的通信
iptables [-t filter]  -A INPUT -s 192.168.2.100 -j DROP/REJECT
#插入规则

#将IP地址为192.168.2.101的源地址的流量丢弃
iptables -I INPUT 编号 -s 192.168.2.101 -j DROP 

3.4 根据规则编号删除 清空 替换规则

3.4.1 查看规则编号

iptables -vnL --line-numbers #查看规则编号

在这里插入图片描述

3.4.2 替换

iptables -R <规则链> <规则编号> <新规则>
#举个例子

iptables -R INPUT 3 -p tcp --dport 22 -j ACCEPT 
#替换INPUT链中第3条规则,将其内容改为允许TCP协议的SSH流量(端口22)通过

3.4.3 删除

iptables -D <规则链> <要删除的规则>

或者

iptables  -D <规则链> n #n为规则编号

3.4.4 清空

iptables -F  #清空除默认策略外的所有规则

3.5 默认策略

3.5.1 简介

默认策略是指当没有明确的匹配规则时,iptables 对进出系统的网络流量采取的默认处理方式

有3种基本的默认策略:ACCEPT、DROP 和 REJECT。

  1. ACCEPT:允许所有的数据包通过防火墙。

  2. DROP:阻止所有的数据包通过防火墙。

  3. REJECT:默认策略为 REJECT 与 DROP 类似,阻止所有的数据包通过防火墙。但不同的是,当数据包被拦截时,会向源主机发送一个拒绝响应消息

3.5.2 查看与配置

查看

iptables -L #查看当前 iptables 的默认策略

在这里插入图片描述

设置默认策略

iptables -P INPUT <策略>
iptables -P OUTPUT <策略>
iptables -P FORWARD <策略>


INPUT 是针对进入系统的数据包,
OUTPUT 是针对离开系统的数据包,
FORWARD 是针对通过系统的数据包
策略可以是 ACCEPT、DROP 或 REJECT
#举个例子#

# 允许SSH进入
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许HTTP和HTTPS流量
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

清空和删除

无法直接清空或者删除默认策略,iptables -F也不行

只能将ACCEPT改成DROP/REJECT,或者反过来,某种意义上,也等同于删除

3.6 基本匹配条件

基本匹配条件功能
-s源IP地址或者不连续的IP地址
-d目标IP地址或者不连续的IP地址
-p指定协议
-i报文流入的接口;只能应用于数据报文流入环节,
-o报文流出的接口;只能应用于数据报文流出的环节

3.7 扩展匹配条件

3.7.1 隐性

man iptables-extensions
查看扩展帮助

.1 端口匹配

--sport--dport 必须配合-p <协议类型>使用

只能用于匹配连续的端口

--sport 源端口 
--dport 目的端口

可以匹配单个端口,也可以匹配端口范围,以源端口匹配为例:

格式含义
–sport 1000匹配源端口是1000的数据包
–sport 1000:3000匹配源端口是1000-3000的数据包
–sport 1000:匹配源端口是1000及以上的数据包
–sport :3000匹配源端口是3000及以下的数据包

.2 TCP标志匹配

 --tcp-flags TCP标志
TCP标志功能
SYN(同步)用于建立连接。
ACK(确认)用于确认收到的数据。
FIN(结束)用于关闭连接。
RST(复位)用于重置连接。
URG(紧急)用于指示数据中有紧急数据部分。
PSH(推送)用于强制接收方立即处理数据。
#iptables允许通过来自ens33接口的,具有FIN、RST、ACK和SYN标志的TCP包
#只有SYN标志的TCP包,拒绝建立连接
iptables -I INPUT -i ens33 -p tcp \--tcp-flags FIN,RST,ACK SYN -j ACCEPT

.3 ICMP类型匹配

--icmp -type 0/3/8
代码含义
8“Echo- Request” 表示请求
0“Echo- Reply” 表示回复
3"Dest ination-Unreachable"表示目标不可达
 举个例子
 
 #丢弃icmp的包,别人ping不通本机,本机也ping不通别人
 iptables -A INPUT -p icmp -j DROP
 ​
#禁止其他主机ping本机
 iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT 
 ​
 #当本机ping不通其它主机时提示目标不可达,此时其它主机需要配置关于icmp协议的控制类型为REJECT
 iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

3.7.2 显示扩展模块

显示扩展必须加 -m选项

.1 multiport扩展 多端口

可用于匹配非连续的端口,以离散的方式匹配,最多支持15个端口。

iptables -A INPUT  -s 192.168.2.101 -p tcp -m \
multiport --dports 22,80,3306 -j REJECT 
#拒绝来自源IP地址为192.168.2.101的TCP流量,并且目标端口号为22、80和3306

.2 iprange扩展 IP范围

iprange扩展功能模块用于在防火墙规则中匹配特定的IP地址范围

基本格式
-m iprange --src-range IP范围
iptables -A INPUT  -m ip range --src-range 192.168.91.101-192.168.91.103 -j REJECT 
# 拒绝来自源IP地址范围为192.168.91.101到192.168.91.103的所有流量,并且应用于INPUT链(也就是进入服务器的流量)
iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
#禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包

.3 mac扩展 MAC地址(一般不用)

mac模块用于匹配和处理MAC地址相关的防火墙规则,可以限制特定MAC地址的访问或过滤特定MAC地址的流量。

基本格式
-m mac --mac-source XX:XX:XX:XX:XX:XX  #根据源MAC地址匹配
-m mac --mac-destination XX:XX:XX:XX:XX:XX#根据目标MAC地址匹配

.4 string扩展 字符串

string模块用于在数据包的内容中搜索指定的字符串,并根据匹配结果执行相应的操作。

基本格式
-m string --string 字符串 --algo bm/kmp 
#bm kmp为字符串检测算法
iptables -A INPUT -p tcp --dport 80 -m string --string "example" --algo bm -j DROP
#对于目标端口为80的TCP流量,在数据包的内容中搜索字符串"example"
#如果匹配成功,则使用DROP动作丢弃该数据包

.5 time模块

time模块用于根据时间条件匹配数据包,可以限制特定时间段内进出防火墙的数据包。

基本格式
-m time --匹配选项 匹配条件
匹配选项含义
- -timestart指定开始时间
- -timestop指定结束时间
- -datestart指定开始日期
- -datestop指定结束日期
- -daysMon-Fri
iptables -A INPUT -m time --timestart 08:00 --timestop 17:00 \
--datestart 2023-08-01 --datestop 2023-08-31 --days Mon-Fri -j ACCEPT

#在2023年8月1日至2023年8月31日期间的每个工作日的08:00至17:00之间,接受(ACCEPT)输入的数据
#如果不在指定的日期和时间范围内或不是工作日,则不匹配该规则

.6 connlimit扩展 连接数量

connlimit扩展模块用于限制连接数量,根据活动连接数量的条件来控制数据包的流动。

基本格式
-m connlimit --connlimit-匹配选项 匹配条件
匹配选项功能
above n指定连接数量超过n个时触发匹配
upto n指定连接数量小于n个时触发匹配
equal n指定连接数量等于n个时触发匹配
maks指定连接数量的掩码来匹配连接数量
举个例子

iptables -A INPUT -p tcp --syn --dport 80 \
-m connlimit --connlimit-above 10 -j REJECT
#对于TCP协议、目标端口为80的数据包,如果活动连接的数量超过10个,则拒绝该连接

iptables -A INPUT -p tcp --syn --dport 22 \
-m connlimit --connlimit-above 5 --connlimit-mask 16 -j REJECT
#对于TCP协议、目标端口为22(SSH)的数据包
#如果同一子网的连接数量超过5个,拒绝连接

.7 state 连接状态(重要)

state模块用于匹配连接的状态,根据连接的状态来过滤数据包。

基本格式
 --state state 连接状态
常见连接状态含义
NEW与任何连接无关的,还没开始连接
ESTABLISHED响应请求或者已建立连接的,连接态
RELATED与已有连接有相关性的(如FTP主被动模式的数据连接),衍生态,一般与ESTABLISHED 配合使用
INVALID不能被识别属于哪个连接或没有任何状态
UNTRACKED未进行追踪的连接,如:raw表中关闭追踪
举个例子

iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
#对于输入的数据包,如果连接状态是NEW(新建连接)或ESTABLISHED(已建立连接),允许该数据包通过
#补充知识
#字符界面 但是需要用到图形化时
yum install  x11-forwarding -y  #

systemctl start firewalld

export DISPLAY=192.168.2.1:0.0
#真机地址

yum install firewall-config -y

system-config-firewall

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/902811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

适合低成本兼职的十个职业,做得好可能比上班挣得还多

这个年头干点什么兼职或者副业比较合适的&#xff0c;其实做兼职和副业就那么几条原则&#xff1a;最好是轻资产或者不投入资金&#xff0c;因为这个年代是现金流和储蓄为王&#xff0c;不能乱投资&#xff0c;一旦出了差错&#xff0c;更是雪上加霜。还有就是最好在网络上做兼…

对话音视频牛哥:开发RTSP|RTMP直播播放器难不难?难在哪?

我关注的播放器指标 好多开发者跟我交流音视频相关技术的时候&#xff0c;经常问我的问题是&#xff0c;多久可以开发个商业级别的RTMP或RTSP播放器&#xff1f;你们是怎样做到毫秒级延迟的&#xff1f;为什么一个播放器&#xff0c;会被你们做到那么复杂&#xff1f;带着这些…

一文详解4种聚类算法及可视化(Python)

在这篇文章中&#xff0c;基于20家公司的股票价格时间序列数据。根据股票价格之间的相关性&#xff0c;看一下对这些公司进行聚类的四种不同方式。 苹果&#xff08;AAPL&#xff09;&#xff0c;亚马逊&#xff08;AMZN&#xff09;&#xff0c;Facebook&#xff08;META&…

裴蜀定理-拓展欧几里得算法--夏令营

题目 知识点 1.裴蜀定理&#xff1a; 欧几里得算法gcd辗转相除法 拓展欧几里得算法exgcd裴蜀定理 2.证明&#xff1a; 3.. 代码&#xff1a; int exgcd(int a, int b, int& x, int& y) {if (!b){x 1, y 0;return a;}int d exgcd(b, a % b, y, x);y - a / b * x;…

rabbitMq安装后无法启动可视化页面http://localhost:15672处理

本次安装环境信息&#xff1a; 系统&#xff1a;win10 64位专业版 erlang&#xff1a;otp_win64_23.0 rabbitMQ&#xff1a;rabbitmq-server-3.8.5 安装rabbitMQ需要依赖erlang语言环境&#xff0c;所以需要我们下载erlang的环境安装程序。 一、下载安装程序 rabbitMQ安装…

Lombok 同时使用 @Data 和 @Builder 的巨坑,千万别乱用!

1、Lombok 使用演示 Lombok 使⽤同时使⽤ Data 和 Builder &#xff0c;构建无参构造器报错&#xff01;编译不通过。如下图&#xff1a; Lombok 使⽤ Data 可以自动⽣成⽆参构造和类⾥⾯所有属性的 getter/setter ⽅法。可以简化我们代码的开发。&#xff08;IDEA 需要安装 L…

Redis主从复制搭建

Redis主从复制搭建 Redis虽然拥有非常高的性能&#xff0c;但是在实际的生产环境中&#xff0c;使用单机模式还是会产生不少问题的&#xff0c;比如说容易出现 单机故障&#xff0c;容量瓶颈&#xff0c;以及QPS瓶颈等问题。通常环境下&#xff0c;主从复制、哨兵模式、Redis…

从关键新闻和最新技术看AI行业发展(2023.6.23-7.9第二期) |【WeThinkIn老实人报】

Rocky Ding 公众号&#xff1a;WeThinkIn 写在前面 【WeThinkIn老实人报】是WeThinkIn的全新栏目&#xff0c;旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的…

中国大学生服务外包创新创业大赛丨借 AI 之力,助“记账”难题

一、中国大学生服务外包创新创业大赛 赛事介绍 中国大学生服务外包创新创业大赛&#xff0c;是响应国家关于鼓励服务外包产业发展、加强服务外包人才培养的相关战略举措与号召&#xff0c;举办的每年一届的全国性竞赛。 大赛均由中华人民共和国教育部、中华人民共和国商务部…

08.SpringBoot请求相应

文章目录 1 请求1.1 Postman1.2 简单参数1.2.1 原始方式1.2.2 SpringBoot方式1.2.3 参数名不一致 1.3 实体参数1.3.1 简单实体对象1.3.2 复杂实体对象 1.4 数组集合参数1.4.1 数组1.4.2 集合 1.5 日期参数1.6 JSON参数1.7 路径参数 2 响应2.1 ResponseBody注解2.2 统一响应结果…

RHCE——二、时间服务器

时间服务器 一、时间服务器1、重要性2、Linux的系统时钟以及硬件时钟3、NTP网络时间协议4、Chrony介绍 二、chrony安装与配置1、安装2、Chrony配置文件分析3、实验3.1 实验13.2 实验2 三、chronyc命令1、查看时间服务器&#xff1a;2、chronyc sources输出分析3、其它命令4、常…

Docker网络的概念

一、说明 本文叙述Docker网络&#xff0c;介绍关于Docker网络、网桥网络、网桥网络、自定义网桥网络、主机网络、无网络 MACVLAN 和 IPVLAN 网络、叠加网络等网络模式。Docker 是一个用于开发、发布和运行应用程序的开放平台。 二、 什么是 Docker Networking&#xff1f; Doc…

如何在HTML里面使用session

原因在springboot项目里面不想使用jsp界面&#xff0c;怎么在HTML里面使用session呢&#xff1f; 借助sessionStorage方法&#xff0c;话不多说直接上代码 自定义一个js文件把这个代码放里面就可&#xff0c;根据具体业务来修改 // globalData 可以随便定义&#xff0c;调用的…

Facebook AI mBART:巴别塔的硅解

2018年&#xff0c;谷歌发布了BERT&#xff08;来自transformers的双向编码器表示&#xff09;&#xff0c;这是一种预训练的语言模型&#xff0c;在一系列自然语言处理&#xff08;NLP&#xff09;任务中对SOTA结果进行评分&#xff0c;并彻底改变了研究领域。类似的基于变压器…

Shell脚本基础教程

Shell脚本基础教程 Shell参数定义 定义变量 想要定义变量&#xff0c;只需要使用如下命令即可。 variable_namevariable_valuevariable_name表示变量名&#xff0c;variable_value表示变量值。注意&#xff0c;等号与变量名和变量值之间不能有空格。 变量名的命名需要遵循…

速通蓝桥杯嵌入式省一教程:(六)PWM输出

定时器除了用于最基本的定时器计时中断以外&#xff0c;还可以用于输出PWM(Pulse Width Modulation)波&#xff0c;即脉冲宽度调制波形&#xff0c;也就是频率与占空比均可改变的矩形波。下面我们就使用PA1端口生成PWM波。 在Cube中&#xff0c;首先需要将PA1设置成定时器的通…

Android LiveData原理之-setValue和数据倒灌原理分析

一图胜万言&#xff0c;直接上图吧&#xff01;有需要的同学们可以对着这张泳道图阅读源码&#xff0c;相信能够快速加深理解。

3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

1.Ubuntu Qt 配置交叉编译环境 1.1 ubuntu 20.04安装Qt sudo apt-get install qtcreator 1.2 配置QT GCC配置同上 最后配置Kits 上面设置完成之后 &#xff0c;设置Kits 中的Device(这是为了能够直接把项目部署到arm设备上) 点击NEXT之后会出现连接被拒绝&#xff0c;不用担…

IEC61499/ OPCUA pub/sub 测试

OpenDACS 是基于OPCUA 信息模型的IEC61499 分布式自动控制系统。本文介绍它如何采用Opcua Pub/Sub 实现分布式设备中功能块之间的通信。 4diac 构建IEC61499 系统和应用 系统结构 试验系统共有三台设备&#xff0c;为了实验方便&#xff0c;我们让它们在一台Linux PC 上运行…

智能文件改名,一键与上上级目录名称同步,让文件整理更加便捷

在整理文件时&#xff0c;经常会遇到需要将文件名称与上上级目录名称保持一致的情况。手动逐个修改文件名不仅费时费力&#xff0c;还容易出错。现在&#xff0c;我们为你带来了一款智能文件改名工具&#xff0c;让你能够一键将文件名称改成跟上上级目录名称一样&#xff0c;让…