iptables应用大全

news2025/7/11 17:03:40

在这里插入图片描述
在这里插入图片描述

iptables四表五链:
1、“四表”是指 iptables 的功能
——filter 表(过滤规则表):控制数据包是否允许进出及转发
——nat 表(地址转换规则表):控制数据包中地址转换
——mangle(修改数据标记位规则表):修改数据包中的原数据
——raw(跟踪数据表规则表):控制 nat 表中连接追踪机制的启用状况

2、“五链”是指内核中控制网络的 NetFilter 定义的 5 个规则链。每个规则表中包含 多个数据链,防火墙规则需要写入到这些具体的数据链中。
——INPUT(入站数据过滤) :处理来自外部的数据
——OUTPUT(出站数据过滤):处理向外发送的数据。
——FORWARD(转发数据过滤):将数据转发到本机的其他网卡设备上
——PREROUTING(路由前过滤) :– 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
——POSTROUTING(路由后过滤): – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。

filter表有三个链:forward 、input、output
nat表有三个链:prerouting、postrouting、output
mangle表有五个链:prerouting、forward、input、output、postrouting

iptables规划:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

-i eht0 从哪个口进
-o eth0 从哪个网卡出

处理动作大全:accept、reject、drop、redirect、log、masquerade、dnat、snat、mirror、queue、return、mark

filter表使用的主要动作:accept、reject、drop、log

drop和reject区别是:如果是drop直接超时,不回发任何信息
如果是reject就会返回信息回来提示(目标端口不可达)Destination port unreachable

首先先来翻译一下dport和sport的意思:
dport:目的端口
sport:来源端口
初学iptables比较容易迷糊,但是我尽量用通俗的语言给你讲解。
dport 和sport字面意思来说很好理解,一个是数据要到达的目的端口,一个是数据来源的端口。
但是在使用的时候要分具体情况来对待,这个具体情况就是你的数据包的流动行为方式。(INPUT还是OUTPUT)
比如你的例子:/sbin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT
注意里面的INPUT参数,这个代表你的这条数据包的进行的 “进入” 操作!
那么你的这条数据包可以这么描述:
1.这是一条从外部进入内部本地服务器的数据。
2.数据包的目的(dport)地址是80,就是要访问我本地的80端口。
3.允许以上的数据行为通过。
总和:允许外部数据访问我的本地服务器80端口。

再看第2条列子:/sbin/iptables -A INPUT -p tcp –sport 80 -j ACCEPT
1.这是一条从外部进入内部本地服务器的数据。
2.数据包的来源端口是(sport)80,就是对方的数据包是80端口发送过来的。
3.允许以上数据行为。
总结:允许外部的来自80端口的数据访问我的本地服务器。
input方式总结: dport指本地,sport指外部。

如果你的数据包是(OUTPUT)行为,那么就是另外一种理解方式:
比如:
/sbin/iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
1.这是一条从内部出去的数据。
2.出去的目的(dport)端口是80。
3.允许以上数据行为。
output行为总结:dport指外部,sport指本地。

iptables -nvL
查看规划所有

iptables -nvL --line-number
查看规则带编号

iptables -R INPUT 3 -j ACCEPT
修改第三条规则

iptables -F 规则清空
iptables -X
iptables -Z 清空记数器

iptables -R 替换规则

/etc/sysconfig/iptables-config
配置文件
例如增加ftp主和备动访问等模块:
IPTABLES_MODULES=“ip_conntrack_ftp ip_nat_ftp”

/etc/rc.d/init.d/iptables save
centos6保存重启不丢失

/etc/sysconfig/iptables
保存在这个文件里

[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ 确定 ]
centos7保存重启不丢失

iptables -A INPUT -j REJECT
默认放在最后拒绝所有

iptables -I INPUT -p tcp --dport 22 ACCEPT
放行22端口

iptables -I INPUT -s 192.168.1.5 -j DROP
在前面新增拒绝这个ip的所有通信,不写哪行就默认第1行

iptables -I INPUT 3 -s 192.168.1.3 -j DROP
插入一条规则到第3行

iptables -D INPUT -s 192.168.1.5 -j DROP
删除这条规则

iptables -L -n --line-number
看序号,直接删除序号对应的也可以
iptables -t filter -D INPUT 1

直接拒绝icmp 的请求包
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
这时候尝试ping这台主机的话会出现
Reply from 192.168.50.131: Destination port unreachable.

iptables -t filter -P INPUT ACCEPT
input链默认全部允许

如果centos7 做为防火墙或路由网关,那就要两块网卡,内网卡不能设置网关,
只在里面填IP地址和子网掩码,如果再加一块网卡的话,如果从第一个配置文件
ifcfg-eth0复制的话,要注销掉uuid和mac地址,其它名称也要改成对应的。

开启centos7路由转发功能:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

马上生效:
sysctl -p

查看路由:
route -n

添加静态路由(放入脚本开机启动):
route add -net 192.168.100.0/24 gw 192.168.90.20

另一种方法加静态路由:
改配置文件(如果没有就增加这个文件,route-eth?要和出口网关对应上):
vi /etc/sysconfig/network-scripts/route-eth1
ADDRESS0=192.168.100.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.90.20
如果有多个下一跳就把上面的0依次改为1…n
重启网卡服务

只允许22连接centos7路由器,把input链改为默认禁止所有连接,只开22:
iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -P INPUT DROP

iptables在中间以路由模式对其它网段进行过滤全部用FORWARD链
禁止两个网段互ping
iptables -t filter -I FORWARD -p icmp -s 192.168.80.0/24 -d 192.168.100.0/24 -j DROP

禁止80段访问100的远程桌面,但是他可以反向连接
iptables -t filter -I FORWARD -p tcp -s 192.168.80.0/24 -d 192.168.100.0/24 --dport 3389 -j DROP

禁止80段访问100段的123主机的远程桌面,但是他可以反向连接
iptables -t filter -I FORWARD -p tcp -s 192.168.80.0/24 -d 192.168.100.123/32 --dport 3389 -j DROP

基于状态包过滤规则:
–state(NEW,ESTABLISHED,INVALID,RELATED)
new 表示该包属于一个新连接
related表示属于已建立的连接,类似于防火墙上的server-map表(ftp连接要用这个)
iptables -t filter -A INPUT -m state --state RELATED -j ACCEPT

禁止单个方向不能拼通
iptables -I FORWARD -p icmp -m icmp --icmp-type echo-request -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP

禁止多个端口连接
iptables -A FORWARD -p tcp -m multiport --dports 1:1024,3389 -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.80.1-192.168.80.10 -j DROP
限制IP范围段访问

iptables -A FORWARD -p tcp -m limit --limit 3000/second -s 192.168.80.123/32 -d 192.168.100.123/32 -j DROP
两个IP地址之间限速(一秒不能超过3000个)

对每个用户限速(每秒只允许最多300个数据包通过限制):
写个脚本生成:
vi /etc/sysconfig/limit.sh
for (i=2;i<254;i++)
do
iptables -I FORWARD -s 192.168.10. i − j D R O P i p t a b l e s − I F O R W A R D − s 192.168.10. i -j DROP iptables -I FORWARD -s 192.168.10. ijDROPiptablesIFORWARDs192.168.10.i -m limit --limit 300/sec --limit-burst 400 -j ACCEPT
done

瞬间流量控制(5为数量包的数量):
-m limit --limit-burst 5

限制最大连接数(最多2个连接上去远程桌面):
iptables -A FORWARD -p tcp --dprot 3389 -m connlimit --connlimit-above 2 -s 192.168.80.0/24 -d 192.168.100.0/24 -j DROP

限制MAC地址访问:
iptables -A INPUt -m mac --mac-source C0-9F-8D-5F-6D

限制这个主机的MAC地址访问80网段:
iptables -A FORWARD -d 192.168.80.0/24 -m mac --mac-source C0-9F-8D-5F-6D

LOG动作日志设置在/etc/syslog.conf中,日志记录在:/var/log/message里面
添加iptabls-icmp标记,方便在message里查找
iptables -t filter -I FORWARD -p icmp -d 192.168.100.0/24 -j LOG --log-prefix “iptables-icmp”
iptables -t filter -A FORWARD -p icmp -d 192.168.100.0/24 -j REJECT
先记录日志,再阻止连接

centos7做为web服务器,用iptables保护,只允许123地址远程过来:
iptables -t filter -P INPUT DROP
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -I INPUT -p tcp --dport 22 -s 192.168.10.123/32 -j ACCEPT

recent模块实现服务器安全:
–seconds 指定时间
–set 将地址添加到列表,并更新信息,包含地址加入时间戳。
–rcheck 检查地址是否在列表,以第一个匹配开始计时。
–name 设定列表名,默认DEFAULT
–rsource 源地址,此为默认
–rdest目的地址
–remove列表中删除相应地址
–update和rcheck类似,以最后一个匹配开始计算时间
–hitcount命中次数

SSH连接一个客户端60秒只能连接2回,防穷举攻击,表名定义为SSHPOOL表
iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --rcheck --seconds 60 --hitcount 2 -j DROP //负责读表中的记录是否过了2个
iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSHPOOL --set -j ACCEPT //负责记录连接客户端数量
iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT //当已建立了,就允许进入。

保护网站防ddos攻击,每秒建立连接数限制:
iptables -t filter -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix “DDOS” --log-ip-options //先进行日志记录
iptables -t filter -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP //连接数量限制
iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT //已建立的连接不阻止。

设置打开端口钥匙(指定ping这个开启22服务的服务器,来打开允许ssh连接,完了再ping一个包就自动关闭连接):
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1078 -j LOG --log-prefix “SSHOPEN” //先记录连接日志
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -m length --length 1078 -m recent --set --name sshopen --rsource -j ACCEPT
//指定ping过来包为1078大小,包含IP头20和icmp头8,所以应该ping -l 1050
iptables -t filter -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 60 --name sshopen --rsource -j ACCEPT //看sshopen表中60秒内的记录如果有源地址就允许访问tcp22端口
iptables -t filter -AINPUT -p icmp --icmp-type echo-request -m length --length 1178 -m recent --name sshopen --remove -j ACCEP //ping个1178包大小就删除22端口连接了
iptables -A INPUT -m state --state ESTABLISHED -j ACCEP //已建立的就允许连接

保护网段安全,先改forward默认drop
从ens34网卡进来的,只可以访问此目标网段内的所有主机3389,其它禁止
iptables -t filter -I FORWARD -p tcp --dport 3389 -d 192.168.80.0/24 -i ens34 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEP //已建立的就允许连接,不然回不了包,建立不起来

NAT地址转换上网(外网ip是192.168.90.10):
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens34 -j SNAT --to-source 192.168.90.10
如果有多个外线IP就:
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens34 -j SNAT --to-source 192.168.90.10-192.168.90.12

端口映射(端口映射前必须先做好上面的nat地址转换):
iptables -t nat -A PREROUTING -i ens34 -d 192.168.90.10/32 -p tcp --dport 4000 -j DNAT --to 192.168.80.123:3389

修改通过iptables路由的TTL值,来迷惑攻击者
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 2 //经过就增加2个TTL值
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-dec 3 //经过就删除3个TTL值
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 30 //改TTL回显为30开始递减

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

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

相关文章

【C++笔试强训】第三十天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…

计算机网络——应用层重点协议【HTTP协议】

目录 1、HTTP是什么 抓包工具Fidder的下载及使用 2、HTTP协议工作过程 3、HTTP协议格式 HTTP请求&#xff1a; HTTP响应&#xff1a; 协议格式总结&#xff1a; 4、HTTP请求 4.1、URL / URI 4.1.1、URL(I)基本格式 4.1.2、URL encode 4.2、认识“方法” 4.2.1、GET…

五、ROS2接口及其使用

接口&#xff0c;即interface&#xff0c;其实是一种规范。 举个例子&#xff0c;不同厂家生产出不同类型的激光雷达&#xff0c;每种雷达的驱动方式&#xff0c;扫描速率都不相同。 当机器人进行导航时&#xff0c;需要激光雷达的扫描数据&#xff0c;假如没有统一接口&#x…

Nginx (6):nginx防盗链配置

先说一下含义&#xff0c;就是想让nginx里的静态资源只供它反向代理连接的内部服务器去访问&#xff0c;其他人想访问&#xff0c;就不给。比如01虚拟机充当nginx服务器&#xff0c;它里面存了很多静态资源&#xff0c;04虚拟机proxy_pass到01虚拟机&#xff0c;想访问它的页面…

Linux--信号量共享内存

1.基础知识&#xff1a; &#xff08;1&#xff09;共享内存是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间的数据传递不再涉及内核&#xff0c;即进程不再通过执行进入内核的系统调用来传递彼此的数据。 &#xff08;2&#xff09;共享…

MySQL浅析之架构概览

MySQL主要分为Server层&#xff0c;跟存储引擎层。 Server层负责“逻辑处理”&#xff0c;包括连接器、分析器、优化器、执行器以及所有内置函数。所有跨存储引擎的功能都在这一层实现&#xff0c;比如存储过程、触发器、视图等。 存储引擎层跟文件系统交互&#xff0c;负责数…

bug探索之路:List<Map>get取出元素却是String?

一、bug初现峥嵘 有一说一我定义的List<Map>对吧&#xff0c;我get(0)取出的元素也应该是Map类型没问题吧。不行&#xff0c;编译器告诉我&#xff0c;java.lang.String cannot be cast to java.util.Map。 这个意思就是说&#xff0c;你这个就是String类型&#xff0c;…

Spring Cloud Gateway夺命连环10问?

这篇文章介绍下微服务中的一个重要角色&#xff1a;网关&#xff0c;对于网关如何选择&#xff0c;由于阿里系暂时未出网关&#xff0c;当然是选择了Spring cloud Gateway&#xff0c;毕竟是亲儿子。 文章目录如下&#xff1a; ​ 编辑切换为居中 添加图片注释&#xff0c;不…

[附源码]java毕业设计智能超市导购系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【科学文献计量】RC.networkBibCoupling()中的参数解释

RC.networkBibCoupling中的参数解释 1 数据2 RC.networkBibCoupling()中的参数解释2.1 测试weighted参数2.2 测试fullInfo参数2.3 测试addCR参数1 数据 使用web of science中的数据,借助metaknowledge库读入到python中,然后截取2020-2021年的数据构建网络 2 RC.networkBib…

CrystalNet ADO.Net VCL for Delphi

CrystalNet ADO.Net VCL for Delphi ADO。用于Delphi的Net DAC被描述为数据库的最快和最可靠的连接&#xff0c;以及使用ADO技术的虚拟和数据库的替代方案。NET在Delphi。它能够为用户和开发人员提供对信息源的数据访问&#xff0c;这些信息源不喜欢SQL Server、Oracle、Vista…

Flutter高仿微信-第42篇-创建群

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; /*** Author : wangning* Email : maoning20080809163.c…

ARM S5PV210的启动过程

一、内存 SRAM 静态内存 特点就是容量小、价格高&#xff0c;优点是不需要软件初始化直接上电就能用。DRAM 动态内存 特点就是容量大、价格低&#xff0c;缺点就是上电后不能直接使用&#xff0c;需要软件初始化后才可以使用。 单片机中&#xff1a;内存需求量小&#xff0c;而…

秉持技术普惠的华为,致力于无处不在的联接

编辑 | 阿冒 设计 | 沐由经济学家托马斯弗里德曼在《世界是平的》一书中曾经指出&#xff1a;“科技和通信领域如闪电般迅速的进步&#xff0c;使全世界的人们可以空前地彼此接近。”然而&#xff0c;在世界各国和地区的政府工作报告中&#xff0c;“数字鸿沟”一词出现的频…

致敬最美逆行者网页设计作品 大学生抗疫感动专题网页设计作业模板 疫情感动人物静态HTML网页模板下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【Matlab代码】基于遗传算法和蚂蚁优化算法的路径优化问题

目录 1 概述 2 Matlab代码 3 运行结果 1 概述 在1959年&#xff0c;Dantzing 和 Ramser在经过实验和思考后&#xff0c;首次提出配送车辆路径优化问题。在物流运输中配送是重要的环节&#xff0c;准确选择配送车辆路径能有效缩短运输时间、降低运输成本、满足顾客需求等目的…

C语言 * 数组的解析 *

目录 一&#xff1a;一维数组的创建和初始化 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 二&#xff1a;二维数组的创建和初始化 2.1 数组的创建 2.2 数组的初始化 2.3 一维数组的使用 2.4 一维数组在内存中的存储 2.5 数组越…

黑苹果系统安装常见问题汇集

常见问题 黑苹果折腾之路上遇到的问题多种多样&#xff0c;这里把常见问题分为安装篇、使用篇、进阶篇。 安装篇 如何安装黑苹果&#xff1f; 目前主要有两种方式&#xff0c;第一种是推荐的方式&#xff1a;下载黑苹果安装镜像 → 刻录到U盘 → 调整配置文件 → 格式化准备…

又一款机器学习模型解释神器:LIME

在机器学习的许多应用中&#xff0c;要求用户信任模型来帮助他们做出决策。医生肯定不会仅仅因为“模型这么说”就给病人做手术。即使在风险较低的情况下&#xff0c;例如从 Netflix 选择要观看的电影时&#xff0c;在我们根据模型放弃几个小时的时间之前&#xff0c;也需要一定…

红黑树封装 map/set 及其迭代器(C++)

目录 一、map/set 的封装 1.1 封装思路 1.2 红黑树节点调整 1.3 map 和 set 的定义 1.4 仿函数 KeyOfValue 1.5 map/set 的插入 二、map/set 迭代器实现 2.1 迭代器的定义 2.2 解引用运算符重载 2.3 成员访问运算符重载 2.4 (不)等于运算符重载 2.5 begin() 与 end…