首页 > 系统相关 >iptables使用详解(centos7)

iptables使用详解(centos7)

时间:2024-05-03 15:22:05浏览次数:30  
标签:iptables -- 端口 centos7 详解 limit 规则 500

iptables使用详解(centos7)

小百菜

已于 2024-03-21 14:40:02 修改

阅读量7.2k
收藏 22

点赞数 2
文章标签: iptables 限速
版权

GitCode 开源社区
文章已被社区收录
加入社区
我们需要安装iptables-services,用来启动和停止iptables服务
防火墙配置文件 /etc/sysconfig/iptables

查询开启了那些内核模块

需要加载的模块

然后再检查下,现在有这些内核模块了

关闭firewalld,开启iptables
关闭firewalld

开启iptables

查询配置

用户请求来的时候,默认先从input链这里一行一行规则往下匹配,如果都没有匹配上了,就走input链后面的小括号里面的规则

清除所有规则,但不会清除默认规则

禁止访问 80 端口(指定端口)
未指定默认是filter表了;添加;在input链上;tcp协议,目标端口80;来访问了就drop丢掉

--dport 目标端口, -d 目标ip --sport源端口

-A添加规则;INPUT,我要在INPUT链中添加规则。
是需要指定端口还是ip呢,这里是 80 端口,指定端口的话一般要先指定协议(协议一般这里有tcp,udp,icmp,all就是所有),
端口在网络中一般有两种情况,ip也是有两种情况,就是目标端口,源端口,目标ip,源ip,
我这里是禁止访问 80 端口,也就是端口是目标端口,所以--dport 80;
需要禁止访问,那就是 -j DROP ,这个DROP要大写

如果我们只是想清除一条规则,可以先执行

查看到是第几条链,防止眼睛数错行。

这里是在INPUT链上的第一条规则,然后执行删除这条规则,这里的1就表示第1条规则。

禁止指定ip,访问本服务器指定端口

禁止指定ip,访问本服务器指定端口
禁止10.0.0.12访问服务器的80端口

防火墙四表五链,我们常用的是filter,nat表。我们常用的是filter表的INPUT,FORWARD,OUTPUT链;nat表的PREROUTING,POSTROUTING链,OUTPUT链

指定只能某个网段访问本服务器。(不是指定网段的拒绝掉)
指定只能某个网段访问本服务器。(不是指定网段的拒绝掉)

使用iptables实现禁止ping功能
ping使用的是 icmp协议

保存和恢复规则
iptables-save 保存当前防火墙到配置文件中,加上重定向,可以将防火墙规则导入到指定文件中备份起来
iptables-save 会把所有的打印出来,*后面显示表的名字;冒号后是默认的规则,再往下就是我们自己配置的规则

防火墙配置,实际保存的是如下文件中。可以看到和命令查询出来的差不多

如下保存防火墙规则到 iptRule.txt 文件中。

不小心把防火墙都误清除了,因为之前保存到配置里了,重启一下防火墙重新就出来了

iptables-restore无需重启防火墙,可以将备份导出来的防火墙规则,再导入回去

修改默认规则为drop,默认都不接受的做法
在修改默认策略为拒绝时,首先要提前做些准备。比如接受22端口访问

设置本地 lo网卡 通讯规则

这3条规则加好以后,如下图所示:

开放常用的端口:

-m参数指定扩展模块,通过multiport参数就可以同时指定多个不连续的端口号

修改默认规则

添加 ip 白名单

用who命令查看当前访问者的ip

添加 端口 白名单

添加ip和端口白名单
允许 192.168.111.201 访问服务器的8080端口

限速limit
iptables -I INPUT -p tcp --dport 8080 -m limit --limit=500/s --limit-burst=1000 -j ACCEPT
这条规则是:8080端口会对包的速率做匹配,也就是每秒只处理500个包,假如某一时刻进来700个包,只处理500个包,后面ACCEPT表示放行,也就是这500个包放行。
剩下的200个包不做处理,交给下一个规则处理。
初始的burst值是1000,表示刚开始1000个包不受500/s速率限制,当减为0时,就受500/s速率限制。

上面描述可能有问题,应该这样理解,这一条规则看作一个池子,里有1000个令牌,有数据流量进来先从池里取令牌,
取到令牌:根据后面的规则处理,由于是ACCEPT,所以放行允许数据包通过。
未取到令牌(数量为0):不做处理,下一条规则去处理。
假如池子里令牌数量减为0,就会触发--limit 500/s,以每秒500个令牌的速度像池里放令牌。

iptables -A INPUT -p tcp --dport 8080 -j DROP
这条规则是:这是对数据包进行丢弃

--limit 500/s 表示每秒500次; 1/m 则为每分钟一次
--limit-burst 表示允许触发 limit 限制的最大次数 (预设5)

这里的--limit-burst=1000相当于说最开始我有1000的可以匹配的包去处理,然后我匹配的包的个数是根据--limit=500/s进行处理的,
也就是每秒限制500个数据包,多余的会被下面符合要求的DROP规则去处理,去进行丢弃,这样就实现了对数据包的限速问题。


通过对上面的数据分析,可以知道,利用iptables进行限速主要是利用率iptables的limit模块对数据包进行匹配处理,从而实现限速的;
--limit=match,这个是限定了匹配包的速率,
换句话说就是每秒可以转发多少个数据包,这是对iptables做限速的最主要的参数,通过制定它就基本可以确定要控制的限制速率是多少;
--limit-burst是允许触发 limit 限制的最大次数,默认预设是5;
也就是说最开始的5个包会被直接转发,这时burst就会减为0,再来的包就会丢给下一条规则去处理(这里设定是DROP),直到limit参数产生新的令牌,才会继续去匹配转发。

简单来说限速最主要的就是limit和burst,
burst是最初有多少令牌可以去转发包,后面limit会进行按速率匹配,相当于按时间补充令牌数,
第一条规则达到速率上限就会把剩下的包丢给下一条规则去处理,我们下一条和它对应的就是DROP,所以会把剩下的包丢弃,从而实现了限速。

根据端口限速

根据ip限速

tcp头的标志位
握手阶段:SYN,ACK
传输数据阶段:PSH
挥手阶段:FIN,RST

使用wireshark在ssh客户端抓包,跟踪对应的tcp流

上图表示在第1次握手阶段,SYN标识为1,其他标识位如ACK,FIN,RST,URG,PSH都为0。
上图的下方可以看到 [TCP Flags: ··········S·],其中的"S"就表示SYN位,整体表示只有SYN位为1。用点.表示

上图表示在第2次握手阶段,SYN和ACK标识为1,其他标识位如FIN,RST,URG,PSH都为0。
上图的下方可以看到 [TCP Flags: ·······A··S·],表示只有ACK标志位与SYN标志位为1用点.表示0

上图为第3次握手阶段,ACK标识为1,其他标识位如SYN,FIN,RST,URG,PSH都为0。

完整的一个请求过程如下

客户端强制终止,异常标识

按照上面的标识,就可以拦截了,各个阶段的流量了。

命令参数
参考:

https://www.cnblogs.com/machangwei-8/p/15978257.html

https://www.cnblogs.com/ip99/p/15313691.html

标签:iptables,--,端口,centos7,详解,limit,规则,500
From: https://www.cnblogs.com/dcpower/p/18171244

相关文章

  • 详解csrf(跨站请求伪造)
    1.什么是csrf(csrf攻击原理)?用户正常访问A网站,A网站设置cookie被用户浏览器保存用户不关闭浏览器,直接访问恶意网站,该恶意网站内隐藏式内嵌了A网站接口的请求链接触发该请求链接,自动携带浏览器保存的cookie,请求成功。2.涉及的基础知识我们先梳理下上面所涉及的一些......
  • centos7修改redis密码
    检查Redis配置文件首先,我们需要确保Redis的配置文件中包含了设置密码的选项。打开Redis的配置文件/etc/redis.conf,查找以下行并确保取消注释(去掉行首的#):requirepassyour_password启动Redis服务使用以下命令启动Redis服务:systemctlstartredis如果Redis已经在运行,则可以跳......
  • 高效遍历:C++中分隔字符串单词的3种方法详解与实例
     概述:在C++中,遍历由空格分隔的字符串的单词有多种方法,包括使用`std::istringstream`、手动遍历字符和正则表达式。其中,`std::istringstream`是简单高效的选择,通过流提取单词。手动遍历字符较为繁琐,正则表达式方法更灵活但可能有性能开销。根据实际需求选择方法,本文提供了清晰......
  • Redis持久化、主从与哨兵架构详解
    参考图灵课堂https://zhuanlan.zhihu.com/p/443951927https://blog.csdn.net/weixin_37548768/article/details/124538778?spm=1001.2014.3001.5502https://www.runoob.com/redis/redis-transactions.html   redis支持持久化到磁盘,这样可用进一步保证数据的完整性。re......
  • 前端 Vue-cli中 vue.config.js 的配置详解
    Vue-cli3/Vue-cli4 目录结构├──README.md #说明|--dist #打包后文件夹├──babel.config.js #babel语法编译├──package-lock.json├──public #静态文件夹,这类资源将会直接被拷贝,而不会经过webpack的......
  • 前端 Vue yarn.lock文件:详解和使用指南
    yarn.lock文件:详解和使用指南https://www.python100.com/html/38KF796X6BHM.html一、什么是yarn.lock文件yarn.lock文件是一个产生于Yarn0.22及以后版本的文件,它是一个自动生成的锁文件,记录了当前项目的依赖关系,并确保每个依赖的版本都是稳定的,这样可以保证软件包安装的重......
  • 05.Java 方法详解
    1.方法的定义及调用设计方法的原则:一个方法只完成一个功能,有利于后期的扩展方法的定义:修饰符(可选)返回值类型方法名(参数类型参数名(可选)){方法体return返回值;}2.方法重载重载:就是在一个类中,有相同的函数名称,但形参不通的函数方法的重载规则:方法名称必......
  • 【Qt 专栏】信号与槽详解
    5个重要的结论:1.对于QT,GUI程序设计的逻辑需要4元素:信号、信号发射者、信号接受者、槽。例如,点击按键后,窗口关闭,这四者的关系如下所示: 2.信号函数返回类型为void,不需要实现。参数类型可以重载。调用时前面可以加emit(也可不加),表示信号释放。3.槽函数返回类型也为void,但一......
  • CentOS7的Hadoop集群配置时间同步
    mastervi/etc/ntp.conf点击查看代码[root@masterhadoop]#vim/etc/ntp.conf...前文省略..#Hostsonlocalnetworkarelessrestricted.restrict192.168.10.0mask255.255.255.0nomodifynotrap#Usepublicserversfromthepool.ntp.orgproject.#Please......
  • Vue | babel.config.js 配置详解
    babel.config.js 1概述Babel相当于一个中介,一边是用户,另一边是浏览器。这几年,JavaScript发生了很大的变化,许多新特性在很多浏览器里都不支持。Babel的主要作用就是规避这些问题,可以确保JavaScript代码兼容所有的浏览器,比如IE11。2Babel的工作原理Babel使用AST把......