iptables——建立linux安全体系

目录

一. 安全技术类型

二. linux防火墙

1. 按保护范围划分:

2. 按实现方式划分:

3. 按网络协议划分:

4. 防火墙原理

三. 防火墙工具——iptables

1. netfilter 中五个勾子函数和报文流向

数据包传输过程:

① .五表四链

2 .iptable工具

① iptables原理

② iptables语法

Ⅰ语法

子命令(command):

通用匹配参数(parameter)

Ⅱ 查看iptables的规则

Ⅲ 添加规则

Ⅳ 删除规则

Ⅴ 修改默认规则 -P(大写)

Ⅵ 替换规则 -R

Ⅶ 隐含扩展

--tcp-flags mask comp

———————————————————————————————————————————

--source-port, --sport port[:port]

———————————————————————————————————————————

icmp:允许本机ping其它主机,禁止其它主机ping本机

Ⅷ 显示扩展模块

multiport扩展(多端口扩展)

iprange扩展

mac地址

string 字符串

time模块

connlimit扩展

state状态

开机自动重载规则


一. 安全技术类型

入侵检测系统:只留下攻击记录,不阻止,主要以提供报警和事后监督为主。

入侵防御系统:以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以阻断,主动而有效的保护网络的安全,一般采用在线部署方式。

防火墙:隔离功能,将不被允许访问的外网隔离在外。

防水墙:是一种防止内部信息泄漏的安全产品。预防网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。

二. linux防火墙

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

1. 按保护范围划分:

主机防火墙:服务范围为当前一台主机

网络防火墙:服务范围为防火墙一侧的局域网

2. 按实现方式划分:

硬件防火墙:是服务器,功能只有防火墙,专用硬件级别实现部分功能的防火墙。如华为,山石,深信服等。

软件防火墙:应用软件。

3. 按网络协议划分:

网络层防火墙:OSI模型下四层,又称为包过滤防火墙

应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

4. 防火墙原理

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

防火墙会收包拆包看真实数据,检查没问题再重新装包,检查有问题隔离或者丢弃。

4层原理:传输层:协议端口号

7层原理:控制真实数据 http协议,dns协议,dhcp协议等

正向代理:代理的是客户端,绕开防火墙限制,加快访问速度

举例:翻墙

反向代理:代理的是服务端,负载均衡

三. 防火墙工具——iptables

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

1. netfilter 中五个勾子函数和报文流向

Netfilter在内核中选取五个位置放了五个hook(勾子) function(函数),用户通过命令工具(iptables)向其写入规则。

数据流量从网卡------>内核(netfilter)

流量有两种:一种是发给你的,一种是需要你转发的。

数据包传输过程:

1. 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。

2. 如果数据包是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后, 任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达

3. 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出

① .五表四链

五链:五个勾子函数就是五个链

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

作用:控制流量的时机,决定了在什么地方控制流量

链(chain)含义
input(LOCAL_IN)进入本机的流量
output(LOCAL_OUT)出去本机的流量
forward转发流量
prerouting路由选择前
postrouting路由选择后

四表:作用:存放链,决定如何控制流量

表中有链,链中有规则,选择合理的链做规则。

有些地方说五表,是多了一个security表(安全表)

含义
raw表跟踪数据包
mangle表标记,优先级
nat表地址转换
filter表流量过滤。是否允许流量通过

2 .iptable工具

① iptables原理

Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。

iptables由四个表table和五个链chain以及一些规则组成。

② iptables语法

Ⅰ语法

iptables  -t 表 子命令  链 规则

filter是默认的表,不写-t 选择表的话,默认是它。

子命令(command):
命令效果
-A 在指定链末尾追加一条规则    iptables -A INPUT (操作)
-I(大写的i)在指定链中插入一条新的,未指定序号默认作为第一条 iptables -I INPUT (操作)
-P(大写) 指定默认规则 iptables -P OUTPUT ACCEPT (操作)
-D

删除规则,  iptables -D 链 规则序号 ;

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

-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 (查看常和vL一起使用)

-v 查看时显示更详细信息,常跟-L一起使用
--line-num规则带编号    iptables -t nat -vnL --line-num
-F 清除链中所有规则 iptables -F (操作)
-N 新加自定义链
-X(大写) 清空自定义链的规则,不影响其他链 iptables -X
-Z(大写) 清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-S(大写)看链的所有规则或者某个链的规则/某个具体规则后面跟编号

通用匹配参数(parameter)

通用匹配直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件

协议匹配-p 协议名(tcp,icmp等)
地址匹配-s 源地址
-d 目的地址
接口匹配-i 入站网卡
-o 出站网卡
端口匹配--sport 源端口
--dport 目的端口

target:-j的选项(jump)

-j是数据包流向,防火墙规则匹配即停止,即排在前面的规则序号被匹配了,就不会执行下面的规则。

但是对于LOG操作时例外,LOG只是辅助,没有处理数据包

对数据包的操作效果
-j ACCEPT允许数据包通过
-j DROP直接丢弃数据包,不给出任何回应信息
-j REJECT拒绝数据包通过,必要时会给数据发送端一个响应信息
-j LOG

在/var/log/messages 文件中记录日志信息,

然后将数据包传递给下一条规则

-j SNAT修改数据包的源地址
-j DNAT修改数据包的目的地址
-j MASQUERADE伪装成一个非固定公网IP地址
Ⅱ 查看iptables的规则

iptables  -vnL  [-t 表名](查询非fliter需要指明表)

给规则加上序号:iptables [-t 表名] -vnL --line-num

Ⅲ 添加规则

-A 默认在末尾添加

-I(大写的i)需要指明序号 

例: -I INPUT 1 :就是在 INPUT链的规则第一条前添加规则,我就变成第一条了。

Ⅳ 删除规则

iptables  [-t 表名] -F :清空所有规则,加上表,就是清空对应表的所有规则

iptables -D 链 规则序号:删除某一条规则      例:iptables -t filter -D INPUT 2

不要轻易使用iptables -F,容易导致与远程连接断开,需要重启。

Ⅴ 修改默认规则 -P(大写)

修改成丢弃进入的数据包:iptables -P INPUT DROP

修改成接收进入的数据包:iptables -P INPUT ACCEPT

iptables [-t表名] -P <链名> <控制类型>

iptables 的各条链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。

默认策略的控制类型为 ACCEPT(允许)、DROP(丢弃)两种。

例如,执行以下操作可以将 filter 表中 FORWARD 链的默认策略设为丢弃, OUTPUT 链的默认策略设为允许。

Ⅵ 替换规则 -R
iptables -A INPUT -s 192.168.91.101 -j DROP   
#添加规则
iptables -R INPUT 1 -s 192.168.91.101 -j ACCEPT
#替换规则,1是规则序号,把DROP替换成ACCEPT
Ⅶ 隐含扩展

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

--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

表示第二次握手

--tcp-flags ALL ALL  
--tcp_flags ALL NONE

iptables -I INPUT -i ens33 -p tcp --tcp-flags FIN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包
———————————————————————————————————————————
--source-port, --sport port[:port]

匹配报文源端口,可为端口连续范围

--sport 1000               匹配源端口是1000的数据包
--sport 1000:3000      匹配源端口是1000-3000的数据包
--sport :3000              匹配源端口是3000及以下的数据包
--sport 1000:              匹配源端口是1000及以上的数据包
注意: --sport和--dport 必须配合-p <协议类型>使用

iptables -A INPUT -p tcp  --sport 10000:30000 -j REJECT 
#源端口10000到30000 全部拒掉
———————————————————————————————————————————
icmp:允许本机ping其它主机,禁止其它主机ping本机

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

ICMP类型(详细可见网络的icmp部分)可以写字符串、也可以写数字代码:

Echo-Request    (代码为8) 表示请求
Echo-Reply        (代码为0)表示回复
Destination-Unreachable     (代码为3) 表示目标不可达
iptables -A INPUT -p icmp --icmp-type 8 -j DROP         
#禁止其它主机ping本机
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
#允许本机ping其它主机
Ⅷ 显示扩展模块

显示扩展要用-m选项指明要调用的扩展模块名

multiport扩展(多端口扩展)

1.  --source-ports,--sports port[,port|,port:port]...
   指定多个源端口,用逗号隔开

2. --destination-ports,--dports port[,port|,port:port]...

   指定多个目标端口,用逗号隔开

3. --ports port[,port|,port:port]...

    多个源或目标端口

例:

iptables -A INPUT  -s 172.16.234.10 -p tcp -m multiport --dports 22,80 -j REJECT 
#阻止ip地址来自172.16.234.1,访问当前机器的tcp22,80端口。用-m指明模块
iprange扩展

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

例:

iptables -A INPUT  -m iprange --src-range 172.16.234.10-172.16.234.13 -j REJECT 
#指明源地址为172.16.234.10-172.16.234.13的3个地址无法访问当前主机
mac地址

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

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

!是取反

string 字符串

对报文中的应用层数据做字符串模式匹配检测

--algo {bm|kmp} 字符串匹配检测算法
 bm:Boyer-Moore           算法
 kmp:Knuth-Pratt-Morris   算法

--from offset 开始查询的地方
--to offset   结束查询的地方

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

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

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 开始日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 结束日期
--timestart hh:mm[:ss]       开始时间
--timestop hh:mm[:ss]       结束时间
[!] --monthdays day[,day...]   每个月的几号
[!] --weekdays day[,day...]     星期几,1 – 7 分别表示星期一到星期日

例:iptables -A INPUT  -m time --timestart 14:00 --time 16:00 -j REJECT 

connlimit扩展

根据每客户端IP做并发连接数数量匹配,可防止Dos(Denial of Service,拒绝服务)攻击

--connlimit-upto N       #连接的数量小于等于N时匹配
--connlimit-above N    #连接的数量大于N时匹配

state状态

状态类型:

NEW新发出请求
ESTABLISHEDNEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态
RELATED新发起的但与已有连接相关联的连接
INVALID无效的连接,如flag标记不正确
UNTRACKED未进行追踪的连接,如:raw表中关闭追踪

例: 新用户不可以访问,旧用户可以访问     

ipatables -A INPUT -m state --state NEW -j  REJECT
#新用户不可以访问
ipatables -A INPUT -m state --state ESTABLISHED -j ACCEPT
#旧用户可以访问
开机自动重载规则

用脚本保存各个iptables命令;让此脚本开机后自动运行

在etc/.bashrc文件中添加

在/etc/rc.d/rc.local文件添加

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

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

相关文章

OOM了?物理内存不够了?试试这个方法来提升内存容量,不花钱的

通过增加虚拟内存来提高内存使用 本文解决的实际问题&#xff1a; 当我们物理内存小的时候&#xff0c;会出现OOM&#xff0c;然后服务自动死掉的情况。因为物理内存大小是固定的&#xff0c;有没有其他好的办法来解决呢&#xff1f;这里我们可以适当调整Linux的虚拟内存来协作…

更改Jupyter Notebook 默认存储路径

import osprint(os.path.abspath(.)) 然后打开cmd,输入&#xff1a; jupyter notebook --generate-config 按照路径在本地文件夹中找到那个文件。 然后找到"c.NotebookApp.notebook_dir"这条语句&#xff1a;&#xff08;直接通过"crtlf"输入关键字找阿 …

微机原理——定时器学习1

目录 定时类型 8253内部结构框图 8253命令字 六种工作方式及输出波形 计数初值的计算与装入 8253的初始化 定时类型 可编程定时器8253&#xff1a;&#xff08;内部采用的是16位 减法计数器&#xff09; 8253内部结构框图 8253命令字 8253有三个命令字&#xff1a;方式命…

C++11 类的新功能

新的默认成员函数 C11在6个默认成员函数基础上又加了两个:移动构造函数和移动赋值函数 针对移动构造函数和移动赋值运算符重载有一些需要注意的点如下&#xff1a; 小结&#xff1a; &#xff08;1&#xff09; 生成默认移动构造的条件比较严苛&#xff1a;必须是没有实现析…

Hdoop学习笔记(HDP)-Part.07 安装MySQL

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

YOLOv8改进 | 2023 | 给YOLOv8换个RT-DETR的检测头(重塑目标检测前沿技术)

一、本文介绍 本文给大家带来是用最新的RT-DETR模型的检测头去替换YOLOv8中的检测头。RT-DETR号称是打败YOLO的检测模型&#xff0c;其作为一种基于Transformer的检测方法&#xff0c;相较于传统的基于卷积的检测方法&#xff0c;提供了更为全面和深入的特征理解&#xff0c;将…

【从删库到跑路 | MySQL总结篇】事务详细介绍

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、事务…

分享86个节日PPT,总有一款适合您

分享86个节日PPT&#xff0c;总有一款适合您 86个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1J09nhufX_3gvT2XxZkKz6Q?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

Paxos 算法

Paxos 算法 介绍 Paxos 算法是第一个被证明完备的分布式系统共识算法。共识算法的作用是让分布式系统中的多个节点之间对某个提案&#xff08;Proposal&#xff09;达成一致的看法。提案的含义在分布式系统中十分宽泛&#xff0c;像哪一个节点是 Leader 节点、多个事件发生的…

每天五分钟计算机视觉:AlexNet网络的结构特点

本文重点 在前面的一篇文章中&#xff0c;我们对AlexNet网络模型的参数进行了详细的介绍&#xff0c;本文对其网络模型的特点进行总结。 特点 1、AlexNet的网络结构比LeNet5更深&#xff0c;模型包括5个卷积层和3个全连接层。参数总量大概为249MB。 2、Alex使用了ReLu激活函…

在re:Invent上IBM宣布与亚马逊云科技携手,Amazon RDS for DB2正式亮相

11月29日&#xff0c;IBM在亚马逊云科技re:Invent 2023上宣布&#xff0c;与亚马逊云科技合作推出Amazon Relational Database Service&#xff08;Amazon RDS&#xff09;for Db2。这项全新的完全托管云服务旨在简化客户在混合云环境中管理人工智能&#xff08;AI&#xff09;…

MDK5改造之格式化以及文件函数注释插件和主题应用

MDK5插件以及主题应用 前言一、主题修改1、主题文件下载2、主题应用 二、插件安装以及使用1.下载插件2、插件使用步骤 前言 为了写代码的心应手&#xff0c;先对MDK5进行改造 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 &#x1f389;参考了其他大师…

结合贝叶斯定理浅谈商业银行员工异常行为排查

1.贝叶斯定理的数学表达 贝叶斯方法依据贝叶斯定理。关于贝叶斯定理解释如下&#xff1a;首先我们设定在事件B条件下&#xff0c;发生事件A的条件概率&#xff0c;即 &#xff0c;从数学公式上&#xff0c;此条件概率等于事件A与事件B同时发生的概率除以事件B发生的概率。 上述…

Fiddler抓包工具之Fiddler+willow插件应用

安装Fiddler的安装包地址&#xff1a;fillderwillow 解压后安装fiddler4和willow1.4.*版本。 安装成功后&#xff0c;启动fiddler后会出现willow插件按钮&#xff1a; 说明安装成功。 重定向 willow重定向 进入willow界面后&#xff0c;通过右键->Add Project ->Add Ru…

鸿蒙开发学习笔记

快速入门 配置网络权限 1.打开项目的 module.json5 文件 2.在module 里面写下面代码 3.这样就可以使用网络图片了 4.模拟器上就可以正常显示网络图片了 5.官方文档有相吸说明 6. 华为官方编辑工具使用技巧&#xff08;内置文档&#xff09;&#xff0c;鼠标移动到标签上&…

对于Kotlin DSL的简单解析与使用

DSL(领域特定语言)是Kotlin所带来的强大语法特性之一&#xff0c;也是Java中所不存在的功能&#xff0c;JetBrain也基于DSL开发出了众多的开源库&#xff0c;Kotlin的开发者可以使用DSL来重构许多已有的代码&#xff0c;甚至有可能做到彻底抛弃HTML&#xff0c;XML&#xff0c;…

Mysql——》int(1)和 int(10)区别

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

零基础打靶—CTF4靶场

一、打靶的主要五大步骤 1.确定目标&#xff1a;在所有的靶场中&#xff0c;确定目标就是使用nmap进行ip扫描&#xff0c;确定ip即为目标&#xff0c;其他实战中确定目标的方式包括nmap进行扫描&#xff0c;但不局限于这个nmap。 2.常见的信息收集&#xff1a;比如平常挖洞使用…

Python标准库:math库【侯小啾python领航班系列(十六)】

Python标准库:math库【侯小啾python领航班系列(十六)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

【每日一题】找出叠涂元素

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;哈希表 写在最后 Tag 【哈希表】【数组】【2023-12-01】 题目来源 2661. 找出叠涂元素 题目解读 从左往右遍历 arr 给矩阵 mat 上色&#xff0c;在上色的过程中矩阵的某一行或者某一列的全部被上色了&#xff0c;返回…