防火墙 iptables的使用

目录

什么是防火墙

原理

代理

防火墙的工具

4表5列

五链:控制流量的时机

四个表:如何控制流量

​编辑

iptables 软件

格式

选项

查iptables  的规则

添加规则   A  I

删除规则   

清空规则

替换规则  R

修改默认规则(默认是允许通过 黑名单) P

设置黑名单

设置白名单

通用匹配   没有   指明模块

端口匹配: --sport 源端口、--dport 目的端口

ICMP 

192.168.17.55 可以ping通192.168.17.25   

192.168.17.25不能ping通192.168.17.55

​编辑

iprange

mac地址

格式

实例

string 字符串

time模块

connlimit  

stat

故障案例:启用了iptables state模块  用户访问有问题  查看日志 table full drop  pket


什么是防火墙

防火墙是一种技术,它通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性。防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验

waf   web网页   防火墙

原理

数据包

mac头部  ip头部  协议/端口  七层协议(http)真实数据  校验位

收包   拆包  检查没问题   装包

收包   拆包   检查有问题   隔离或者丢弃

4层原理    传输协议     端口号     开发者

7层原理      控制真实数据     http      dns

四层防火墙  通过  协议   端口号   ip   mac    控制流量

七层防火墙   可以控制真实数据

代理

正向代理:翻墙     代理的是(客户端)       

作用: 绕开防火墙限制   加快访问速度

反向代理:代理的是(服务器 ) 

作用:负载均衡 (负担分担)  

防火墙的工具

iptable  firewalld  nft  防火墙工具

[root@localhost~] # iptables --version
iptables v1.4.21

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中

Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统

netfilter  中的五个勾子函数

4表5列

表中有链,链中有规则

网卡------内核(netfilter)

五链:控制流量的时机

input:  进入本机的流量      

output:出本机的流量

forward:转发数据包(流量)

pre-routing: 路由选择前      

post-routing:  路由选择后

流量:发给你的   需要你转发的

选择合理的  链   做规则

表的作用是  存放链

链决定了在什么地方控制流量

表中链  链中有规则

四个表:如何控制流量

raw表:确定是否对该数据包进行状态跟踪  (跟踪)

mangle表:为数据包设置标记优先级                        (标记)

nat表:修改数据包中的源,目标ip地址或端口    (地址转换)

filter表:确定是否放行该数据包(过滤)     (是否允许流量通过)  

iptables 软件

格式

iptables  -t  指定表   子命令  指定链    规则  -j   跳转

iptablestableconmmandchain

parameter

target
-t filter 

-A

-D

-I

-R

-L

-F

-Z

-N

-X

-P

INPUT

FORWARD

OUTPUT

PREROUTING

POSTROUTING

-p

-s

-d

-i

-o

--sport

--dport

......

.......

-j ACCECT

-j DROP

-j REJECT

选项

管理选项用法示例
-A在指定链末尾追加一条 iptables -A INPUT  (操作)
-I

在指定链中插入一条新的,未指定序号默认作为第一条  iptables -I

INPUT  (操作)

-P指定默认规则 iptables -P OUTPUT ACCEPT (操作)
-D

删除 iptables -t nat -D INPUT  2(操作)

-p服务名称 icmp  tcp
-R修改,替换某一条规则 iptables -t nat -R INPUT  (操作)
-L查看 iptables -t nat -L   (查看)
-n所有字段以数字形式显示 (比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) iptables -L -n,iptables -nL,iptables -vnL(查看)
-v查看时显示更详细信息,常跟 -L 一起使用   (查看)
--line -number规则带编号 iptables -t nat -L -n --line-number/iptables -t nat -L --line-number
-F

清除链中的所有规则 iptables -F   (操作)

-N新加自定义链
-X清空自定义链的规则,不影响其他链   iptables -X
-Z清空链的计数器 (匹配到的数据包的大小和总和)iptables -Z
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号

[root@localhost/] # iptables -A INPUT  -s 192.168.17.25 -j REJECT 

查iptables  的规则

iptables -vnL [ -t 表名]

[root@localhost/] # iptables -vnL  #[-t 表名]   不加默认filter

如果查看不是  filter 表需要指明表

iptables  -vnL  -t  nat

[root@localhost/] # iptables -vnL -t nat

给规则加上序号:iptables -vnL  --line-num

[root@localhost/] # iptables -vnL --line-num

添加规则   A  I

iptables -A    INPUT   -s 192.168.17.0/24  -j  ACCEPT 或DROP 或REJECT

A 在末尾追加

[root@localhost/] # iptables -A INPUT  -s 192.168.17.25 -j REJECT #禁止192.168.17.25访问我

-I 需要指明序号    -I  INPUT  1 在 INPUT 链的规则第一条前添加,我就变成第一条了

iptables   -I  INPUT 2  -s  192.168.17.0/24  -j  ACCEPT

iptables -I INPUT 1 -s 192.168.17.0 -j ACCEPT #将该条命令变为第一条优先执行

删除规则   

iptables  -D  链  规则序号  iptables  -t  filter -D  INPUT 1  //删除 filter  表中 INPUT 链 中的第2条规则

清空规则

iptables  [-t  表名]  -F

[root@localhost/] # iptables -F  #清空所有规则
[root@localhost/] # iptables -vnL --line-num  #查看规则
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4 packets, 424 bytes)
num   pkts bytes target     prot opt in     out     source               destination    

替换规则  R

iptables  -R INPUT 1 -s 192.168.17.1 -j  ACCEPT

[root@localhost/] # iptables -R INPUT 1 -s 192.168.17.25 -j REJECT

修改默认规则(默认是允许通过 黑名单) P

iptables  -P  INPUT   DROP  #拒绝所有连接

iptables  -P  INPUT   ACCEPT  #允许所有连接

设置黑名单

[root@localhost~] # iptables -t filter -A INPUT ! -s 192.168.17.25 -j ACCEPT

设置白名单

iptables  -P  INPUT   DROP  #拒绝所有连接
iptables -A INPUT -s 192.168.91.1 -j ACCEPT 
iptables -A INPUT -i lo -j ACCEPT 
iptables -A INPUT -j REJECT 

通用匹配   没有   指明模块

模式匹配  -m   模块名  指定模块

不需要  -m时 -p的模块与-m重复  (iptables 在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块)

端口匹配: --sport 源端口、--dport 目的端口

[!] --source-port, --sport port[:port]:匹配报文源端口,可为端口连续范围
[!] --destination-port,--dport port[:port]:匹配报文目标端口,可为连续范围
[!] --tcp-flags mask comp
     mask 需检查的标志位列表,用,分隔 , 例如 SYN,ACK,FIN,RST
     comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,分隔tcp协议的扩展选项

--tcp-flags SYN,ACK,FIN,RST SYN 表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0,第一次握手
--tcp-flags SYN,ACK,FIN,RST SYN,ACK 第二次握手
iptables -A INPUT -p tcp  --sport 10000:30000 -j REJEC  #10000到30000 全部被拒

ICMP 

192.168.17.55 可以ping通192.168.17.25   

192.168.17.25不能ping通192.168.17.55

类型匹配: --icmp-type ICMP类型

#可以是字符串、数字代码

"Echo- Request" (代码为8)表示请求

"Echo- Reply" (代码为0)表示回复 "Dest ination-Unreachable" (代码为3)表示目标不可达

[root@localhost~] # iptables -A INPUT -p icmp --icmp-type 8 -j DROP
[root@localhost~] # iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 

iprange

指明连续的(但一般不是整个网络)ip地址范围

[!] --src-range from[-to] 源IP地址范围
[!] --dst-range from[-to] 目标IP地址范围

iptables -A INPUT  -m iprange --src-range 192.168.17.25-192.168.91.28 -j REJECT 
# 指定 源地址为192.168.91.25-192.168.17.28   3个地址无法访问 当前主机

mac地址

mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT chains

格式

-m   mac    [!] --mac-source XX:XX:XX:XX:XX:XX

实例

ip -a  #查看mac地址
iptables -A INPUT -m mac --mac-source 00:0c:29:00:e6:dd -j REJECT
#指定mac不可访问

string 字符串

[root@localhost ~]#echo "www.bilibili.com" > /var/www/html/index.html
#自建网页
[root@localhost ~]#echo "www.baidu.com" > /var/www/html/index1.html
#自建网页


[root@localhost ~]#iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "bilibili" -j REJECT 
#注意  请求的包不带字符,回复的包带字符  所以要 output

time模块

根据将报文到达的时间与指定的时间范围进行匹配

[root@localhost ~]#date
#中国标准时间
2022年 08月 14日 星期日 22:26:07 CST
[root@localhost ~]#date -u
#美国标准时间
2022年 08月 14日 星期日 14:26:09 UTC

[root@localhost ~]#iptables -A INPUT  -m time --timestart 14:00 --time 16:00 -j REJECT 
#从14点到16点禁止访问本机
iptables v1.4.21: unknown option "--time"
Try `iptables -h' or 'iptables --help' for more information.
[root@localhost ~]#rpm -ql iptables|grep time
/usr/lib64/xtables/libxt_time.so

connlimit  

根据每客户端IP做并发连接数数量匹配

可防止Dos(Denial of Service,拒绝服务)攻击

--connlimit-upto N #连接的数量小于等于N时匹配
--connlimit-above N #连接的数量大于N时匹配
模拟攻击
[root@localhost3 ~]# gcc flood_connect.c -o flood
#编译安装 黑客文件
[root@localhost3 ~]# ./flood 192.168.17.55    
#运行黑客脚本

[root@localhost 7-1]#ss 

[root@localhost1 ~]#iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT 

stat

故障案例:启用了iptables state模块  用户访问有问题  查看日志 table full drop  pket

后来研究发现 ,有一个内核选项的默认值 过低 netfilter/nf_conntrack_max  默认65536、

把这个值调大一点

ipatables  -A INPUT -m state --state   NEW #新发起            -j  REJECT
ipatables  -A INPUT  -m state --state  ESTABLISHED  #已经连接    -j   ACCEPT
                  
 新用户不可以访问  就用老的可以访问    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot启动开启热部署

springboot启动开启热部署 手动方式 或者点idea上面的build->build project 自动方式 勾上Build project automatically 然后ctrl alt shift / 选择Registr 勾上就好了 新版idea可以在这里选 热部署范围设置 这是spring-boot-devtools起的作用,所以还…

ESD静电试验方法及标准

文章目录 概述静电放电抗扰标准静电放电实验室的型式试验静电放电试验配置静电放电试验方法 静电放电等级 参考静电放电发生器(ESD)试验方法及标准 概述 在低湿度环境下通过摩擦使人体充电的人体在与设备接触时可能会放电,静电放电的后果是&…

优化机器学习:解析数据归一化的重要性与应用

在机器学习中,数据归一化是一种数据预处理的技术,旨在将数据转换为相似的范围或标准化的分布。这样做的主要目的是消除不同特征之间的量纲差异或数值范围差异,以确保模型在训练时更稳定、更有效地学习特征之间的关系。 通常,机器…

Nginx热部署

快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,小编会及时修改) Nginx热部署 首先来讲一下为什么要进行热部署 nginx 支持热加载 热部署 ,在不打断用户请求的情…

【海思SS528 | VDEC】MPP媒体处理软件V5.0 | 视频解码模块——学习笔记

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

vue3实现元素拖拽移动功能

效果图 实现拖拽移动 首先我们给需要实现功能的元素加一个draggable"true"让元素能够被拖拽 先来认识两个搭配draggable属性一起使用的事件——ondragstart和ondragend,它们的定义分别为: ①. ondragstart 事件在用户开始拖动元素或选择的文…

Spring-AOP与声明式事务

为什么要用AOP ①现有代码缺陷 针对带日志功能的实现类,我们发现有如下缺陷: 对核心业务功能有干扰,导致程序员在开发核心业务功能时分散了精力 附加功能分散在各个业务功能方法中,不利于统一维护 ②解决思路 解决这两个问题&…

使用STM32 HAL库驱动烟雾传感器的设计和优化

STM32 HAL库是STMicroelectronics提供的针对STM32系列微控制器的一套硬件抽象层库,可以简化开发过程并提供对各种外设的支持。本文将介绍如何使用STM32 HAL库来驱动烟雾传感器,并对传感器数据采集和处理进行优化。将包括HAL库的初始化、模拟信号采集、数…

el-select实现分屏效果

动态绑定class值 &#xff0c;多种判断 :class"type 8 ? home-stye-2 : type 24 ? home-stye-1 : home-stye-3" <div class"home-right-top"><div class"home-right-top-video"><el-row :gutter"20"><el-c…

微服务中配置Nacos热更新

启动Nacos startup.cmd -m standalone 在IDE中启动服务 打开nacos管理后台并选择配置列表 创建配置(这里以日期格式为例) 因为这里配置的是userservice的服务,所以在userservice服务的pom文件中引入依赖 配置一个bootstrap.yml文件 注意这里bootstrap文件中配置过的内容,在app…

linux下实现Qt程序实现开机自启动

1.原理 要想实现开机自启动&#xff0c;首先&#xff0c;QT是没有这种实现的&#xff0c;最好是靠电脑开机的启动目录启动软件&#xff0c;下面这个目录 /etc/xdg/autostart 这是操作系统中用于配置启动项的目录&#xff0c;该目录下存放着开机自启动的启动器(.desktop)文件…

Oracle--索引

文章目录 一、索引是什么?二、索引的原理三、索引的特征四、创建索引的方式五、怎么确认索引六、案列七、复合索引 一、索引是什么? 索引&#xff08;INDEX&#xff09;是数据库中用于提高查询效率的一种数据结构。它可以加速数据库表的数据查找、过滤和排序等操作。索引是一…

网络通信与TCP.IP协议

网络通信与TCP.IP协议 URI 用字符串标识某一互联网资源&#xff0c;而 URL 表示资源的地点&#xff08;互联网上所处的位置&#xff09;。可见 URL 是 URI 的子集 URL (Uniform Resource Locator)&#xff0c;统一资源定位符 &#xff0c;用于描述一个网络上的资源 DNS: &#…

C# 友元程序集

1.友元程序集 使用友元程序集可以将internal成员提供给其他的友元程序集访问。 程序集FriendTest1.dll [assembly:InternalsVisibleTo("FriendTest2")] namespace FriendTest1 {internal class Friend{string name;public string Name > name;public Friend(str…

Android修行手册 - 一篇文章从0到1搞一个Android Studio插件。

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

更改AndroidStudio模拟器位置

C盘何等的珍贵&#xff0c;可是好多工具&#xff0c;软件非得默认安装在C盘。。导致C盘越来越紧张。。 在日常使用过程中&#xff0c;安装任何软件都会将其安装到非系统盘下&#xff0c;Android模拟器也不能例外。保护好C盘也是日常一个良好的习惯。 Android AVD默认路径&…

数据挖掘 感知机

要使用感知机&#xff0c;我们首先要引入头文件&#xff0c;以下是感知机用的到头文件&#xff1a; import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Perceptron from sklearn.model_selection import train_test_…

淘宝商品详情数据接口(店铺搬家、数据分析、代购商城、ERP选品、无货源铺货、品牌监控)

使用淘宝API接口需要以下步骤&#xff1a; 注册开发者账号&#xff1a;在淘宝开放平台&#xff08;https://o0b.cn/anzexi&#xff09;上注册一个开发者账号&#xff0c;并创建一个应用。 获取API密钥&#xff1a;在应用页面上获取API密钥&#xff0c;这是后续调用API接口的凭…

渲染到纹理:原理及WebGL实现

这篇文章是WebGL系列的延续。 第一个是从基础知识开始的&#xff0c;上一个是向纹理提供数据。 如果你还没有阅读过这些内容&#xff0c;请先查看它们。 NSDT在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - …

Vue修改密码功能的源代码

基本需求 输入框不能为空 旧密码表单提交时必须正确 两次输入新密码一致 限定新密码的复杂度&#xff0c;这里是长度在 6 到 20 个字符 <template><el-form ref"form" :model"user" :rules"rules" label-width"80px"><…