iptables-netfilter基础

iptables-netfilter基础

课堂笔记

  • iptables
    • Firewall:防火墙 = 隔离工具。区别于建筑防火墙。工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;网络攻击无非就是特殊改造的报文对主机发起攻击,防火墙区别于杀毒软件。
      • 主机防火墙
      • 网络防火墙
建筑设计专业术语,指防止火灾蔓延至相邻区域且耐火极限不低于3小时的不燃性墙体。用于划分防火分区,或防止建筑间火灾蔓延的重要分隔构件,能在火灾初期和灭火过程中,将火灾有效限制在一定空间内,阻断火灾在防火墙的一侧蔓延到另一侧,对于减少火灾损失具有重要作用。防火墙就类似于古代画像抓人,如果匹配就抓。虽然画的不像,所以很多冤案。*   防火墙都有哪些机制?*   内核态流量出入口钩子函数(相当于检票机,挡住流量然后匹配规则,符合规则执行规则动作,否则默认动作)*   选定卡点,关键点进行hook,做检查*   防火墙只能最内部和外部的流量进行检测,但是如果内部出现了内奸,防火墙没用了,**家贼难防***   互联网70%的攻击都是内鬼所为。*   防火墙未必能防火?*   类似于贿赂,赛一把钞票就放行*   伪装特定报文就无法检测出来,类似于隧道机制。并且涉及到防火墙检测规则项目相关。
*   NAT网络地址转换*   雁过拔毛式。若要过此路留下买路财。*   NAT是网络地址转换,比方说有一万用户一千个IP,每个用户一个IP肯定不够,但同时上线的用户可能只有500,于是分给用户私网IP,等他上线时NAT设备进行私网IP和公网IP的映射转化。
*   PAT端口地址转换*   PAT是端口地址转换,比方说有一万个用户而只有一百个IP,同时上线的用户也许好几百个,这样NAT的方法也就满足不了了,于是只好把用户的私网IP+端口映射到一个公网IP+端口上,当然其他的用户也可以映射到相同的IP上,最后通过端口号来区分。*   NAT好歹还能保证一个用户有自己专用的IP,而PAT就只能保证一个用户只有自己专用的端口了,PAT叫端口地址转换,NAT是网络地址转换,由RFC 1631定义。*   网络攻击和杀毒软件的区别*   攻击归攻击,杀毒归杀毒。杀毒针对的是任何形式的可执行程序,攻击针对的是流量*   入侵检测系统IDS*   能够根据主机所受到的外部条件的影响作出相应的控制操作*   如果检测到流量攻击,防火墙新增规律阻断流量*   如果检测到某应用程序的异常流量通信,杀毒软件扼制程序运行*   入侵检测能够发现攻击行为并且告知防火墙,让防火墙将攻击报文拒之门外。两者联动*   IDS不一定跟防火墙联动,有一定滞后性,比如发现流量异常给管理员发送警告或者仅仅弹窗提醒。*   HIDS 主机入侵检测系统*   NIDS 网络入侵检测系统*   蜜罐honeypot*   伪装*   入侵防御系统(*IPS*: Intrusion Prevention System)*   入侵防御系统(Intrusion-prevention system)是一部能够监视网络或网络设备的网络资料传输行为的[计算机网络安全](https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/6357)设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。*   iptables*   iptables是内核中的防火墙么?不是,但防火墙一般是内核中实现的功能,那iptables到底什么实现原理?*   iptables全称其实叫iptables/netfilter*   framwork:netfilter-内核态hook钩子在网络流经关键位置。有钩子能够把报文捕获,但是没有规则,规则在哪里?但是规则必须符合规则并且放到恰当hook钩子的位置才能正常工作。*   netfilter是内核中本身实现的框架。也就hook默认就是存在的,但是没有启用规则,默认都是放行。*   只要os在运行,内核就必然运行,一旦把规则设定,那么hook必然开始匹配,也就是说,匹配规则需要从用户态流经内核态。但是内核一般是动态运行,也就是说在内存中,它的规则也必然出于内核态的内存的某个角落,所以一旦重启系统,规则就没了,但是如果设定了脚本,那么开机启动时候通过脚本*   那么iptables的五个关键位置具体在哪里,你大致猜一下会在哪里?规则即使要把钩子放到五个函数的哪个地方。*   限制本机访问别人?*   限制别人访问本机?*   限制发给第三者的包我要不要帮忙传递?*   这五个钩子在iptables成为链chain *   iptables功能-四个表的作用,每一个功能都要通过5个钩子发挥作用。*   filter:过滤,防火墙*   nat:网络地址转换,network address translation。*   mangle:除了地址可以转换之外其他部分都可以转换。它的作用就是拆分报文作出修改然后再次包装发送。*   raw:属于nat的补充,作用在于关闭nat表上启用的链接追踪机制。一般NAT都要启用链接追踪,不然会产生问题。raw用的比较少。链接追踪其实是个非常有用的功能。*   **链接追踪的作用**:能够识别先前的访问者,如果想要追踪每一个链接,怎么办?你就需要建立一个非常庞大的追踪表才可以*   典型的例子就是老顾客,你怎么识别老顾客? **老顾客与狗不得入内***   要想追踪链接你就需要记下来,记下来肯定需要消耗内存空间。因为数据量庞大会造成内存溢出。对于非常繁忙的服务器,链接追踪是万万不能开启。不得不启用则必须提供足够大的内存才行。*   五条链的作用。链(内置)*   PREROUTING:路由之前*   INPUT:本机接收到的*   FORWARD:本机转发*   OUTPUT:本机发出的*   POSTROUTING:第二次路由决策作出处理*   REROUTING和POSTROUGING,跟网卡没有关系,他们只是TCP/IP协议栈上的功能,可以是任意网卡*   四个功能五个表,每一个链会构成一个规则。*   流入:PREROUTING --> INPUT*   流出:OUTPUT --->POSTROUTING*   转发:PREROUTING --> FORWARD --> POSTROUTING*   各功能的分别实现。**你要用的时候首先应该详情用在哪个表,以及对应表的所在链上***   filter:INPUT、FORWARD、OUTPUT*   nat:PREROUTING(DNAT)、OUTPUT、POSTROUGING(SNAT)*   mangle:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING*   raw:PREROUTING 、OUTPUT*   路由发生的时刻*   报文进入本机后*   判断目标主机*   报文发出之前*   判断经由哪个接口送往下一跳*   iptables*   四表五链*   raw、mangle、nat、filter*   REROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD*   添加规则时考量点*   要实现那种功能,判断添加到哪张表*   报文流经的路径,判断添加到哪个链上*   链上规则的次序,即为检查的次序,因此隐含一定的法则1.  同类规则(访问同一种应用),匹配范围小的放上面。越优先匹配的越前,不至于到最后才匹配2.  不同类规则(访问不同应用),访问频率大的,匹配到报文频率较大的放上面3.  设置默认策略*  白名单 - 建议*  黑名单4.  可有一条规则描述的多条规则合并为一个规则5.  如果用不到应该关闭链接追踪功能[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cn8SsTwX-1690331400391)(assets/1548066786404.png)]*   数据包过滤匹配流程*   过滤优先级是既定的*   [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wy30COc1-1690331400391)(assets/1548066888866.png)]*   既定优先级raw,mangle,nat,filter*   规则,真正发挥作用的地方*   组成部分*   报文的匹配条件*   匹配条件?根据协议报文特征指定*   基本匹配条件*   源IP/目的IP*   源端口/目标端口*   扩展匹配条件*   匹配到之后的处理动作*   处理动作?*   内建处理机制*   DROP*   ACCEPT*   REJECT*   自定义处理机制*   注意:报文不会经过自定义链,只能在内置链上通过规则进行引用后生效

iptables: 包过滤型的防火墙

Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;主机防火墙网络防火墙软件防火墙(软件逻辑)硬件防火墙(硬件和软件逻辑)ipfw (firewall framework)
ipchains (firewall framework)iptables(netfilter)netfilter:kerneliptables:rules untilhook function:inputoutputforwardpreroutingpostrouting链(内置):PREROUTINGINPUTFORWARDOUTPUTPOSTROUTING功能:filter:过滤,防火墙;nat:network address translation;用于修改源IP或目标IP,也可以改端口;mangle:拆解报文,做出修改,并重新封装起来;raw:关闭nat表上启用的连接追踪机制;功能<--链:raw:PREROUTING, OUTPUTmangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTINGnat:PREROUTING,[INPUT,]OUTPUT,POSTROUTINGfilter:INPUT,FORWARD,OUTPUT报文流向:流入本机:PREROUTING --> INPUT由本机流出:OUTPUT --> POSTROUTING转发:PREROUTING --> FORWARD --> POSTROUTING路由功能发生的时刻:报文进入本机后:判断目标主机是?报文离开本机之前:判断经由哪个接口送往下一站?
iptables/netfilter规则:组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作作出处理;匹配条件:基本匹配条件扩展匹配条件处理动作:基本处理动作扩展处理动作自定义处理机制iptables的链:内置链和自定义链内置链:对应于hook function自定义链接:用于内置链的扩展和补充,可实现更灵活的规则管理机制;添加规则时的考量点:(1) 要实现哪种功能:判断添加到哪个表上;(2) 报文流经的路径:判断添加到哪个链上;链:链上的规则次序,即为检查的次序;因此,隐含一定的应用法则:(1) 同类规则(访问同一应用),匹配范围小的放上面;(2) 不同类的规则(访问不同应用),匹配到报文频率较大的放在上面;(3) 将那些可由一条规则描述的多个规则合并起来;(4) 设置默认策略;iptables命令:iptables [-t table] {-A|-C|-D} chain rule-specificationiptables [-t table] -I chain [rulenum] rule-specificationiptables [-t table] -R chain rulenum rule-specificationiptables [-t table] -D chain rulenumiptables [-t table] -S [chain [rulenum]]iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]iptables [-t table] -N chainiptables [-t table] -X  [chain]iptables [-t table] -P chain targetiptables [-t table] -E old-chain-name new-chain-namerule-specification = [matches...]  [target]match = -m matchname [per-match-options]target = -j targetname [per-target-options]规则格式:iptables   [-t table]   COMMAND   chain   [-m matchname [per-match-options]]   -j targetname [per-target-options]-t table:raw, mangle, nat, [filter]COMMAND:链管理:-N:new, 自定义一条新的规则链;-X: delete,删除自定义的规则链;-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受DROP:丢弃REJECT:拒绝-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;规则管理:-A:append,追加;-I:insert, 插入,要指明位置,省略时表示第一条;-D:delete,删除;(1) 指明规则序号;(2) 指明规则本身;-R:replace,替换指定链上的指定规则;-F:flush,清空指定的规则链;-Z:zero,置零;iptables的每条规则都有两个计数器:(1) 匹配到的报文的个数;(2) 匹配到的所有报文的大小之和;						查看:-L:list, 列出指定鏈上的所有规则;-n:numberic,以数字格式显示地址和端口号;-v:verbose,详细信息;-vv, -vvv-x:exactly,显示计数器结果的精确值;--line-numbers:显示规则的序号;chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING匹配条件:基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;[!] -s, --source  address[/mask][,...]:检查报文中的源IP地址是否符合此处指定的地址或范围;[!] -d, --destination address[/mask][,...]:检查报文中的目标IP地址是否符合此处指定的地址或范围;[!] -p, --protocol protocolprotocol: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or  "all"{tcp|udp|icmp}[!] -i, --in-interface name:数据报文流入的接口;只能应用于数据报文流入的环节,只能应用于PREROUTING,INPUT和FORWARD链;[!] -o, --out-interface name:数据报文流出的接口;只能应用于数据报文流出的环节,只能应用于FORWARD、OUTPUT和POSTROUTING链;											扩展匹配条件: 需要加载扩展模块,方可生效;隐式扩展:不需要手动加载扩展模块;因为它们是对协议的扩展,所以,但凡使用-p指明了协议,就表示已经指明了要扩展的模块;tcp:[!] --source-port, --sport port[:port]:匹配报文的源端口;可以是端口范围;[!] --destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;[!] --tcp-flags  mask  compmask is the flags which we should examine,  written as a comma-separated list,例如 SYN,ACK,FIN,RSTcomp is a comma-separated list  of  flags  which must be set,例如SYN例如:“--tcp-flags  SYN,ACK,FIN,RST  SYN”表示,要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0;[!] --syn:用于匹配第一次握手,相当于”--tcp-flags  SYN,ACK,FIN,RST  SYN“;								udp[!] --source-port, --sport port[:port]:匹配报文的源端口;可以是端口范围;[!] --destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;icmp[!] --icmp-type {type[/code]|typename}echo-request:8echo-reply:0显式扩展:必须要手动加载扩展模块, [-m matchname [per-match-options]]; 						处理动作:-j targetname [per-target-options]ACCEPTDROPREJECTRETURN:返回调用链;REDIRECT:端口重定向;LOG:记录日志;MARK:做防火墙标记;DNAT:目标地址转换;SNAT:源地址转换;MASQUERADE:地址伪装;...自定义链:防火墙(服务):CentOS 6:service  iptables  {start|stop|restart|status}start:读取事先保存的规则,并应用到netfilter上;stop:清空netfilter上的规则,以及还原默认策略等;status:显示生效的规则;restart:清空netfilter上的规则,再读取事先保存的规则,并应用到netfilter上;默认的规则文件:/etc/sysconfig/iptablesCentOS 7:systemctl  start|stop|restart|status  firewalld.servicesystemctl  disable  firewalld.servicesystemctl  stop  firewalld.service 					课后作业:开放本机web服务器给非192.168.0.0/24网络中的主机访问;禁止本机被非172.16.0.0/16网络中的主机进行ping请求;开放本机的dns服务给所有主机;

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

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

相关文章

HCIA练习2

目录 第一步 启动eNSP&#xff0c;搭建如图所示的拓扑结构 第二步 进行子网的划分 ​第三步 从第二步划分的16个网段中&#xff0c;选择14个网段进行使用 第四步 对路由器各个端口进行IP配置 第五步 对每个路由器的环回接口进行配置 第六步 对路由器进行静态路由配…

mac如何强制刷新chorm浏览器

在 macOS 上&#xff0c;你可以使用以下方法来强制刷新 Chrome 浏览器&#xff1a; 使用快捷键&#xff1a;按住 Shift 键并同时点击浏览器刷新按钮。这会强制浏览器绕过缓存并重新加载当前页面。 使用开发者工具&#xff1a;按下 Option Command I 快捷键&#xff08;或通过…

视觉套件专项活动!与飞桨技术专家一起提升技术实力,更多荣誉奖励等你领取

作为中国最早开源的深度学习框架&#xff0c;飞桨深度践行开源理念&#xff0c;开放拥抱社区&#xff0c;重视生态构建&#xff0c;与开发者和生态伙伴共成长&#xff0c;已成为国内综合竞争力第一的产业级深度学习平台。截至目前&#xff0c;飞桨已凝聚750万名开发者。 在飞桨…

如何在工作中利用Prompt高效使用ChatGPT

导读 AI 不是来替代你的&#xff0c;是来帮助你更好工作。用better prompt使用chatgpt&#xff0c;替换搜索引擎&#xff0c;让你了解如何在工作中利用Prompt高效使用ChatGPT。 01背景 现在 GPT 已经开启了人工智能狂潮&#xff0c;不过是IT圈&#xff0c;还是金融圈。 一开…

C++(MFC)调用Python

环境&#xff1a; phyton版本&#xff1a;3.10 VS版本&#xff1a;VS2017 包含文件头&#xff1a;Python\Python310\include 包含库文件&#xff1a;Python\Python310\libs 程序运行期间&#xff0c;以下函数只需要调用一次即可&#xff0c;重复调用会导致崩溃 void Initial…

rust reborrow - 重借用

两个知识点: 第一:对于不可变借用&T,它的传递属于Copy语意。对于可变借用&mut T它的传递属于Move语意或reborrow。 第二:可变引用在同一个时刻只能拥有一个,但是有一个重借用(reborrow)的方式,可以让借用重新获得可变引用。 下面为reborrow的三种方式 明确写出…

Rust之枚举与模式匹配

枚举类型&#xff0c;简称枚举&#xff0c;允许列举所有可能的值来定义一个类型。 1、定义枚举&#xff1a; 枚举类型&#xff1a;已知所有可能的值&#xff0c;并且所有值的出现是互斥的&#xff0c;即每次只能取一种可能的值&#xff0c;才使用枚举类型。 示例&#xff1a;…

CNNdebug尝试

这算是啥问题&#xff1f;&#xff1f; 接着根据群里大佬提供的指示&#xff0c;将train和validate中的nums_work改成0即可 此处因为数据已经打乱了&#xff0c;所以在这里就不用打乱数据&#xff0c;把shuffle True修改成为False 后面查看指定目录下&#xff0c;竟然没有这个…

python怎么实现tcp和udp连接

目录 什么是tcp连接 什么是udp连接 python怎么实现tcp和udp连接 什么是tcp连接 TCP&#xff08;Transmission Control Protocol&#xff09;连接是一种网络连接&#xff0c;它提供了可靠的、面向连接的数据传输服务。 在TCP连接中&#xff0c;通信的两端&#xff08;客户端和…

信息与通信工程面试准备——专业知识提问

1.无线通信&#xff1a;依靠电磁波在空间传播以传输信息。 2.通信的目的&#xff1a;传输信息。 3.通信系统&#xff1a;将信息从信源发送到一个或多个目的地。 4.本书中通信一般指电信&#xff1a;利用电信号传输信息&#xff08;光通信属于电信&#xff0c;因为光也是一种…

华为数通HCIP-OSPF路由计算

路由协议 作用&#xff1a;用于路由设备学习非直连路由&#xff1b; 动态路由协议&#xff1a;使路由设备自动学习到非直连路由&#xff1b; 分类&#xff1a; 按照算法分类&#xff1a; 1、距离矢量路由协议&#xff1b;&#xff08;RIP、BGP&#xff09; 只交互路由信息…

CTFSHOW web 信息收集

web入门的刷题 web1 教我们多看看源代码 web2 抓包 web3 抓包 web4 robots.txt robots.txt web5 phps源代码泄露 phps 就是php的源代码 用户无法访问 php 只可以通过phps来访问 web6 源代码备份 web7 git web8 svn web9 swp /index.php.swp web10 cookie web11 查域名…

电商-订单模块

电商-订单模块 流程思维图表结构支付中心流程 流程思维图 表结构 支付中心 流程

spring学习笔记二

1、spring的bean的别名和单例模式 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"ht…

Java-逻辑控制

目录 一、顺序结构 二、分支结构 1.if语句 2.swich语句 三、循环结构 1.while循环 2.break 3.continue 4.for循环 5.do while循环 四、输入输出 1.输出到控制台 2.从键盘输入 一、顺序结构 按照代码的书写结构一行一行执行。 System.out.println("aaa"); …

el-date-picker时间范围只能选五分钟之内

el-date-picker时间范围只能选五分钟之内 一、主要代码 一、主要代码 <el-date-pickertype"datetime"size"small"value-format"yyyy-MM-dd HH:mm:ss"v-model"searchData.submitTimeCode":editable"false"placeholder&qu…

(学习日记)2023.04.30

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

Mysql-多表查询

目录 多表关系 多表查询 多表查询分类 内连接 外连接 自连接 多表关系 分为一下几种关系&#xff1a; 一对多&#xff08;多对一&#xff09; 案例: 部门 与 员工的关系实现: 在多的一方建立外键&#xff0c;指向一的一方的主键多对多 案例: 学生 与 课程的关系实现: 建…

蓝桥杯专题-真题版含答案-【加法变乘法】【三羊献瑞】【交换瓶子】【卡片换位】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

Sharding-JDBC强制路由案例实战

&#x1f680; ShardingSphere &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&…